Documentation Examples for PROC PROBIT
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: probitex */
/* TITLE: Documentation Examples for PROC PROBIT */
/* */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: */
/* */
/* PROCS: PROBIT */
/* DATA: */
/* */
/* SUPPORT: Colin (Lin) Chen */
/* REF: */
/* MISC: */
/****************************************************************/
data a;
infile cards eof=eof;
input Dose N Response @@;
Observed= Response/N;
output;
return;
eof: do Dose=0.5 to 7.5 by 0.25;
output;
end;
datalines;
1 10 1 2 12 2 3 10 4 4 10 5
5 12 8 6 10 8 7 10 10
;
ods graphics on;
proc probit log10;
model Response/N=Dose / lackfit inversecl itprint;
output out=B p=Prob std=std xbeta=xbeta;
run;
proc probit log10 plot=predpplot;
model Response/N=Dose / d=logistic inversecl;
output out=B p=Prob std=std xbeta=xbeta;
run;
data multi;
input Prep $ Dose Symptoms $ N;
LDose=log10(Dose);
if Prep='test' then PrepDose=LDose;
else PrepDose=0;
datalines;
stand 10 None 33
stand 10 Mild 7
stand 10 Severe 10
stand 20 None 17
stand 20 Mild 13
stand 20 Severe 17
stand 30 None 14
stand 30 Mild 3
stand 30 Severe 28
stand 40 None 9
stand 40 Mild 8
stand 40 Severe 32
test 10 None 44
test 10 Mild 6
test 10 Severe 0
test 20 None 32
test 20 Mild 10
test 20 Severe 12
test 30 None 23
test 30 Mild 7
test 30 Severe 21
test 40 None 16
test 40 Mild 6
test 40 Severe 19
;
proc probit order=data data=multi;
class Prep Symptoms;
nonpara: model Symptoms=Prep LDose PrepDose / lackfit;
weight N;
run;
proc probit order=data data=multi;
class Prep Symptoms;
parallel: model Symptoms=Prep LDose / lackfit;
weight N;
run;
proc probit data=multi order=data
plots=(predpplot(level=("None" "Mild" "Severe"))
cdfplot(level=("None" "Mild" "Severe")));
class Prep Symptoms;
parallel: model Symptoms=Prep LDose / lackfit;
weight N;
run;
data xrow;
input Prep $ Dose Symptoms $ N;
LDose=log10(Dose);
datalines;
stand 40 Severe 32
run;
proc probit data=multi order=data xdata=xrow
plots=(predpplot(level=("None" "Mild" "Severe"))
cdfplot(level=("None" "Mild" "Severe")));
class Prep Symptoms;
parallel: model Symptoms=Prep LDose / lackfit;
weight N;
run;
data news;
input sex $ age subs @@;
datalines;
Female 35 0 Male 44 0
Male 45 1 Female 47 1
Female 51 0 Female 47 0
Male 54 1 Male 47 1
Female 35 0 Female 34 0
Female 48 0 Female 56 1
Male 46 1 Female 59 1
Female 46 1 Male 59 1
Male 38 1 Female 39 0
Male 49 1 Male 42 1
Male 50 1 Female 45 0
Female 47 0 Female 30 1
Female 39 0 Female 51 0
Female 45 0 Female 43 1
Male 39 1 Male 31 0
Female 39 0 Male 34 0
Female 52 1 Female 46 0
Male 58 1 Female 50 1
Female 32 0 Female 52 1
Female 35 0 Female 51 0
;
proc format;
value subscrib 1 = 'accept' 0 = 'reject';
run;
proc probit data=news;
class subs sex;
model subs=sex age / d=logistic itprint;
format subs subscrib.;
run;
data epidemic;
input treat$ dose n r sex @@;
label dose = Dose;
datalines;
A 2.17 142 142 0 A .57 132 47 1
A 1.68 128 105 1 A 1.08 126 100 0
A 1.79 125 118 0 B 1.66 117 115 1
B 1.49 127 114 0 B 1.17 51 44 1
B 2.00 127 126 0 B .80 129 100 1
;
data xval;
input treat $ dose sex;
datalines;
B 2. 1
;
proc probit optc lackfit covout data=epidemic
outest = out1 xdata = xval
Plots=(predpplot ippplot lpredplot);
class treat sex;
model r/n = dose treat sex sex*treat/corrb covb inversecl;
output out = out2 p =p;
run;
proc print data=out1;
run;
data validate;
input treat $ dose sex n r group @@;
datalines;
B 2.0 0 44 43 1 B 2.0 1 54 52 2
B 1.5 1 36 32 3 B 1.5 0 45 40 4
A 2.0 0 66 64 5 A 2.0 1 89 89 6
A 1.5 1 45 39 7 A 1.5 0 66 60 8
B 2.0 0 44 44 1 B 2.0 1 54 54 2
B 1.5 1 36 30 3 B 1.5 0 45 41 4
A 2.0 0 66 65 5 A 2.0 1 89 88 6
A 1.5 1 45 38 7 A 1.5 0 66 59 8
;
proc probit optc data=validate inest=out1;
class treat sex;
model r/n = dose treat sex sex*treat / maxit = 0;
output out = out3 p =p;
run;
proc probit optc lackfit data=validate inest=out1;
class treat sex;
model r/n = dose treat sex sex*treat / aggregate = group;
output out = out4 p =p;
run;
proc print data=out2;
run;
proc print data=out3;
run;
proc print data=out4;
run;
proc probit data=epidemic;
class treat sex;
model r/n = dose treat sex treat*sex;
slice treat*sex / diff;
effectplot;
run;