Categorical Data Analysis: Chapter 2
data respire;
input treat $ outcome $ count;
datalines;
placebo f 16
placebo u 48
test f 40
test u 20
;
proc freq;
weight count;
tables treat*outcome / chisq;
run;
data severe;
input treat $ outcome $ count;
datalines;
Test f 10
Test u 2
Control f 2
Control u 4
;
proc freq order=data;
weight count;
tables treat*outcome / chisq nocol;
run;
proc freq order=data;
weight count;
tables treat*outcome / chisq nocol;
exact chisq;
run;
data respire2;
input treat $ outcome $ count @@;
datalines;
test f 40 test u 20
placebo f 16 placebo u 48
;
ods select RiskDiffCol1 Measures;
proc freq order=data;
weight count;
tables treat*outcome / riskdiff (correct) measures;
run;
proc freq order=data;
weight count;
tables treat*outcome / riskdiff(cl=(wald mn) correct) measures;
run;
proc freq order=data data=severe;
weight count;
tables treat*outcome / riskdiff(cl=(wald newcombe exact) correct );
exact riskdiff;
run;
data stress;
input stress $ outcome $ count;
datalines;
low f 48
low u 12
high f 96
high u 94
;
proc freq order=data;
weight count;
tables stress*outcome / chisq measures nocol nopct;
run;
data respire;
input treat $ outcome $ count;
datalines;
test yes 29
test no 16
placebo yes 14
placebo no 31
;
proc freq order=data;
weight count;
tables treat*outcome / all nocol nopct;
run;
data severe;
input treat $ outcome $ count;
datalines;
Test f 10
Test u 2
Control f 2
Control u 4
;
proc freq order=data;
weight count;
tables treat*outcome / nocol;
exact or;
run;
data screening;
input disease $ outcome $ count @@;
datalines;
present + 52 present - 8
absent + 20 absent - 100
;
proc freq data=screening order=data;
weight count;
tables disease*outcome / riskdiff;
run;
data approval;
input hus_resp $ wif_resp $ count;
datalines;
yes yes 20
yes no 5
no yes 10
no no 10
;
ods select McNemarsTest;
proc freq order=data;
weight count;
tables hus_resp*wif_resp / agree;
run;
data vaccine2;
input Outcome $ Count @@;
datalines;
fail 3 success 58
;
ods select BinomialCLs;
proc freq;
weight count;
tables Outcome / binomial (exact);
ods output BinomialCLs=BinomialCLs;
run;
proc iml ;
Use BinomialCLs var{LowerCL UpperCL};
read all into CL;
print CL;
q = { 3, 7500, 58 , 7250 };
C= q[2]/q[4];
P= q[1]/ (q[1] + q[3]);
R= P/ ((1-P) *C) ;
CI= CL[1]/((1-CL[1])*C) || CL[2]/((1-CL[2])*C) ;
print r CI;
quit;