*** SAS file generated by sastangle ***; options nocenter nodate nonumber ls=80 formdlim=''; *** Code chunk number 1 ***; data test; do cat = "blue", "red"; do i = 1 to 50; x = normal(1966); output; end; end; run; *** Code chunk number 2 ***; proc summary data=test; output out=whole mean=meanx; var x; run; proc print data=whole; run; *** Code chunk number 3 ***; proc sort data=test; by cat; run; proc summary data=test; by cat; output out=newds mean=meanx; var x; run; proc print data=newds; run; *** Code chunk number 4 ***; proc sort data="c:/book/help.sas7bdat"; by female; run; *** Code chunk number 5 ***; ods select none; ods output parameterestimates=params; proc reg data="c:/book/help.sas7bdat"; by female; model i1 = age; run; ods select all; *** Code chunk number 6 ***; options ls=64; proc print data=params; run; *** Code chunk number 7 ***; data simpower1; effect = 0.35; /* effect size */ corr = 0.4; /* desired correlation */ covar = (corr)/(1 - corr); /* implied covariance given variance = 1*/ numsim = 1000; /* number of datasets to simulate */ numfams = 100; /* number of families in each dataset */ numkids = 3; /* each family */ do simnum = 1 to numsim; /* make a new dataset for each simnum */ do famid = 1 to numfams; /* make numfams families in each dataset */ inducecorr = normal(42)* sqrt(covar); /* this is achieves the desired correlation between kids within family */ do kidnum = 1 to numkids; /* generate each kid */ exposed = ((kidnum eq 1) or (famid le numfams/2)) ; /* assign kid to be exposed */ x = (exposed * effect) + (inducecorr + normal(0))/sqrt(1 + covar); output; end; end; end; run; *** Code chunk number 8 ***; ods select none; ods output solutionf=simres; proc mixed data=simpower1 order=data; by simnum; class exposed famid; model x = exposed / solution; random int / subject=famid; run; ods select all; *** Code chunk number 9 ***; data powerout; set simres; where exposed eq 1; reject=(probt lt 0.05); run; *** Code chunk number 10 ***; proc freq data=powerout; tables reject / binomial (level='1'); run; *** Code chunk number 11 ***; options ls=64; /* make the data */ data testmcmc; x=0; count=0; n=100; output; x=1; count=5; n=100; output; run; ods select postsummaries; proc genmod descending data=testmcmc; model count/n = x / dist=binomial link=logit; bayes seed=12182002 nbi=100 nmc=2000 coeffprior=normal(var=25) statistics(percent=2.5,50,97.5)=summary; run; ods select all; *** Code chunk number 12 ***; proc import datafile='c:/book/help.csv' out=help dbms=dlm; delimiter=','; getnames=yes; run; *** Code chunk number 13 ***; ods select postintervals; proc genmod data=help; class substance (param=reference ref='alcohol'); model i1 = female substance age / dist=poisson; bayes nbi=100 nmc=2000; run; ods select all; *** Code chunk number 14 ***; ods select parameterestimates; proc glm data="C:/book/help.sas7bdat" order=data; class homeless; model pcs = homeless / solution; run; quit; ods select all; *** Code chunk number 15 ***; ods select parameterestimates; proc glm data="C:/book/help.sas7bdat" order=data; class homeless female; model pcs = homeless age female i1 mcs / solution; run; ods select all; *** Code chunk number 16 ***; ods select none; proc logistic data="C:/book/help.sas7bdat" order=data; class homeless female; model homeless(event='1') = age female i1 mcs; output out = propen pred=propensity; run; ods select all; *** Code chunk number 17 ***; ods select parameterestimates; proc glm data=propen order=data; class homeless; model pcs = homeless propensity/ solution; run; quit; ods select all; *** Code chunk number 19 ***; ods select parameterestimates; proc glm data="c:\book\mpropen.sas7bdat" order=data; where matched eq 1; class homeless; model pcs = homeless / solution; run; ods select all; *** Code chunk number 20 ***; proc means data=propen mean std; class homeless; var age pcs; run; *** Code chunk number 21 ***; proc means data="c:/book/mpropen.sas7bdat" mean std; where matched; class homeless; var age pcs; run; *** Code chunk number 25 ***; options ls=64; proc print data="c:/book/bootciout.sas7bdat" label; run; *** Code chunk number 26 ***; data missdemo; missing = (x1 eq .); x2 = (1 + 2 + .)/3; x3 = mean(1, 2, .); if x4 = 999 then x4 = .; x5 = n(1, 2, 49, 123, .); x6 = nmiss(x2, x3); x7 = 1; if x7 ne .; if x7 ne . then output; run; *** Code chunk number 27 ***; proc print data=missdemo; run; *** Code chunk number 28 ***; filename localf "c:/book/helpmiss.csv" lrecl=704; proc import replace datafile=localf out=help dbms=dlm; delimiter=','; getnames=yes; run; *** Code chunk number 29 ***; options ls=64; ods select misspattern; proc mi data=help nimpute=0; var homeless female i1 sexrisk indtot mcs pcs; run; ods select all; *** Code chunk number 30 ***; proc mi data=help nimpute=20 out=helpmi20 noprint; class homeless female; fcs logistic regpmm; var homeless female i1 sexrisk indtot mcs pcs; run; *** Code chunk number 31 ***; ods select none; ods output parameterestimates=helpmipe covb=helpmicovb; proc logistic data=helpmi20 descending; by _imputation_; model homeless(event='1')=female i1 sexrisk indtot / covb; run; ods select all; *** Code chunk number 32 ***; ods select varianceinfo; proc mianalyze parms=helpmipe covb=helpmicovb; modeleffects intercept female i1 sexrisk indtot; run; *** Code chunk number 33 ***; options ls = 68; ods select parameterestimates; proc mianalyze parms=helpmipe covb=helpmicovb; modeleffects intercept female i1 sexrisk indtot; run; ods select all; *** Code chunk number 34 ***; ods select parameterestimates; proc logistic data=help; model homeless(event='1')=female i1 sexrisk indtot; run; ods select all; *** Code chunk number 35 ***; data fmmtest; do i = 1 to 5000; x = normal(1492); group = (exp(-1 + 2*x)/(1 + exp(-1 + 2*x))) gt uniform(0); y = (group * 3) + ((1 + group/5) * x) + normal(0) * sqrt(1); output; end; run; *** Code chunk number 37 ***; ods select parameterestimates; proc fmm data=fmmtest; model y = x / k=2 equate=scale; probmodel x; run; *** Code chunk number 38 ***; ods select mixingprobs; proc fmm data=fmmtest; model y = x / k=2 equate=scale; probmodel x; run;