/* fruitfly2.sas */ /* fruitfly fecundity example ANOVA*/ options ls=72 ps=60; data fruit; input line $ fecund; line2 = 'S '; if line ='NS' then line2 = 'NS'; cards; RS 12.8 RS 21.6 RS 14.8 RS 23.1 RS 34.6 RS 19.7 RS 22.6 RS 29.6 RS 16.4 RS 20.3 RS 29.3 RS 14.9 RS 27.3 RS 22.4 RS 27.5 RS 20.3 RS 38.7 RS 26.4 RS 23.7 RS 26.1 RS 29.5 RS 38.6 RS 44.4 RS 23.2 RS 23.6 SS 38.4 SS 32.9 SS 48.5 SS 20.9 SS 11.6 SS 22.3 SS 30.2 SS 33.4 SS 26.7 SS 39.0 SS 12.8 SS 14.6 SS 12.2 SS 23.1 SS 29.4 SS 16.0 SS 20.1 SS 23.3 SS 22.9 SS 22.5 SS 15.1 SS 31.0 SS 16.9 SS 16.1 SS 10.8 NS 35.4 NS 27.4 NS 19.3 NS 41.8 NS 20.3 NS 37.6 NS 36.9 NS 37.3 NS 28.2 NS 23.4 NS 33.7 NS 29.2 NS 41.7 NS 22.6 NS 40.4 NS 34.4 NS 30.4 NS 14.9 NS 51.8 NS 33.8 NS 37.9 NS 29.5 NS 42.4 NS 36.6 NS 47.4 ; proc univariate data=fruit normal nextrval=5; var fecund; class line; QQplot fecund; ods select BasicMeasures TestsForNormality ExtremeValues Quantiles QQPlot; title 'fruitfly fecundity example summary'; /* ---------------------------------------------- */ proc glm data=fruit; class line; model fecund = line / clparm; contrast 'RS vs SS' line 0 1 -1; estimate 'RS vs SS' line 0 1 -1/ e; title 'full model with 3 means (NS,RS,SS)'; /* ---------------------------------------------- */ proc glm data=fruit; class line2; model fecund = line2; contrast 'NS vs selected' line2 1 -1; estimate 'NS vs selected' line2 1 -1; title 'full model with 2 means (NS,selected)'; /* ---------------------------------------------- */ /* alternate approach */ /* ---------------------------------------------- */ proc glm data=fruit; class line; model fecund = line / clparm; contrast 'RS vs SS' line 0 1 -1; contrast 'RS vs NS' line -1 1 0; contrast 'SS vs NS' line -1 0 1; contrast 'NS vs others' line 2 -1 -1; estimate 'RS vs SS' line 0 1 -1; estimate 'RS vs NS' line -1 1 0; estimate 'SS vs NS' line -1 0 1; estimate 'NS vs others' line 2 -1 -1 / divisor=2; means line / deponly scheffe cldiff; title 'alternate approach for the full model'; /* ---------------------------------------------- */ /* get the multiplier for the Scheffe intervals */ /* ---------------------------------------------- */ data scheffe; F = finv(.95,2,72); multi = sqrt(2*F); proc print data=scheffe; title 'the multiplier for the Scheffe intervals'; /* use the multiplier from above and the estimates and standard errors from proc GLM to get the simultaneous 95% confidence intervals for the differences between the adjusted means */ data interval; input differ $ estimate stderr; multi = sqrt(2*finv(.95,2,72)); lowerCL = estimate - multi*stderr; upperCL = estimate + multi*stderr; cards; RS_SS 1.62800000 2.50754914 RS_NS -8.11600000 2.50754914 SS_NS -9.74400000 2.50754914 NS_others 8.93000000 2.17160125 ; proc print data=interval; var differ estimate stderr lowerCL upperCL; title 'simultaneous Scheffe type intervals'; run;