title 'Two-way factorial with appended control group'; title2 'Ovarian development in captive and maltreated bees'; data bees; input caste $ treat $ time Iz Iy; length trtime $8; label Iy='Index of ovarian development' Iz='Index of ovarian reabsorption'; *-- Since treat is missing @ time zero, construct a new variable with 11 levels; if time = 0 then trtime = '0 '; else trtime = trim(treat) || put(int(time),z2.); datalines; Queen . 0 1.33 1.50 Queen . 0 1.50 0.00 Queen . 0 1.83 0.00 Queen . 0 1.67 0.00 Queen . 0 0.67 0.83 Queen . 0 1.83 0.00 Queen . 0 2.00 0.00 Queen . 0 0.67 0.67 Queen . 0 1.50 0.00 Queen . 0 1.83 0.00 Queen . 0 2.00 0.00 Queen . 0 0.83 0.83 Queen . 0 1.33 0.33 Queen . 0 1.33 0.50 Queen . 0 2.17 0.00 Queen . 0 1.50 0.50 Queen . 0 1.67 0.50 Queen . 0 2.67 0.00 Queen . 0 1.83 0.00 Queen . 0 2.33 0.50 Queen . 0 2.00 0.00 Queen . 0 2.00 0.00 Queen . 0 1.33 0.50 Queen . 0 2.00 0.00 Queen . 0 1.67 0.50 Queen . 0 2.00 0.00 Queen . 0 2.50 0.00 Queen . 0 2.17 0.00 Queen . 0 1.00 1.00 Queen . 0 2.00 0.00 Queen . 0 2.17 0.00 Queen . 0 2.33 0.00 Queen . 0 2.17 0.00 Queen . 0 2.33 0.00 Queen . 0 1.83 0.00 Queen CAP 5 0.83 0.83 Queen CAP 5 2.00 0.00 Queen CAP 5 1.33 0.50 Queen CAP 5 2.50 0.00 Queen CAP 5 1.17 0.50 Queen CAP 5 0.67 1.33 Queen CAP 5 1.00 0.83 Queen CAP 5 1.17 0.50 Queen CAP 5 1.50 0.00 Queen CAP 5 1.83 0.50 Queen MAL 5 1.00 0.67 Queen MAL 5 1.00 1.00 Queen MAL 5 1.00 1.00 Queen MAL 5 1.33 0.50 Queen MAL 5 1.00 0.83 Queen MAL 5 1.50 0.50 Queen MAL 5 1.33 0.33 Queen MAL 5 1.33 0.50 Queen MAL 5 1.67 0.00 Queen MAL 5 0.83 0.83 Queen CAP 7.5 1.33 0.33 Queen CAP 7.5 1.00 1.00 Queen CAP 7.5 1.67 0.00 Queen CAP 7.5 1.33 0.50 Queen CAP 7.5 0.67 1.33 Queen CAP 7.5 1.00 0.83 Queen CAP 7.5 1.50 0.50 Queen CAP 7.5 1.17 0.50 Queen CAP 7.5 1.17 0.50 Queen CAP 7.5 1.83 0.00 Queen MAL 7.5 1.83 0.00 Queen MAL 7.5 0.67 1.33 Queen MAL 7.5 1.33 0.83 Queen MAL 7.5 1.17 0.83 Queen MAL 7.5 0.67 1.17 Queen MAL 7.5 0.83 0.83 Queen MAL 7.5 0.50 1.50 Queen MAL 7.5 0.67 1.33 Queen MAL 7.5 0.67 1.00 Queen MAL 7.5 0.67 1.17 Queen CAP 10 1.00 1.00 Queen CAP 10 1.00 1.00 Queen CAP 10 1.00 1.00 Queen CAP 10 1.00 1.00 Queen CAP 10 0.33 1.50 Queen CAP 10 0.50 0.83 Queen CAP 10 1.00 0.83 Queen CAP 10 0.50 1.00 Queen CAP 10 0.50 0.83 Queen CAP 10 0.83 1.33 Queen MAL 10 0.17 1.83 Queen MAL 10 0.33 1.00 Queen MAL 10 0.50 1.50 Queen MAL 10 1.00 1.00 Queen MAL 10 0.67 1.33 Queen MAL 10 0.33 1.33 Queen MAL 10 0.50 1.17 Queen MAL 10 0.33 1.33 Queen MAL 10 0.67 1.17 Queen MAL 10 0.67 1.33 Queen CAP 12.5 0.00 2.00 Queen CAP 12.5 0.00 2.00 Queen CAP 12.5 0.67 1.33 Queen CAP 12.5 0.17 1.83 Queen CAP 12.5 0.17 1.50 Queen CAP 12.5 0.33 1.33 Queen CAP 12.5 0.00 2.00 Queen CAP 12.5 0.00 1.83 Queen CAP 12.5 0.17 1.50 Queen CAP 12.5 0.33 1.83 Queen MAL 12.5 0.17 1.67 Queen MAL 12.5 0.00 2.17 Queen MAL 12.5 0.17 1.33 Queen MAL 12.5 0.50 1.50 Queen MAL 12.5 0.00 1.33 Queen MAL 12.5 0.00 2.17 Queen MAL 12.5 0.00 1.50 Queen MAL 12.5 0.00 1.50 Queen MAL 12.5 0.00 1.67 Queen MAL 12.5 0.00 1.67 Queen CAP 15 0.00 2.00 Queen CAP 15 0.00 2.00 Queen CAP 15 0.00 1.83 Queen CAP 15 0.00 2.17 Queen CAP 15 0.67 1.50 Queen CAP 15 0.00 2.00 Queen CAP 15 0.00 2.00 Queen CAP 15 0.00 2.00 Queen CAP 15 0.00 2.17 Queen CAP 15 0.17 2.00 Queen MAL 15 0.00 2.17 Queen MAL 15 0.17 1.83 Queen MAL 15 0.00 2.00 Queen MAL 15 0.00 2.33 Queen MAL 15 0.00 1.67 Queen MAL 15 0.00 2.00 Queen MAL 15 0.00 1.83 Queen MAL 15 0.00 1.83 Queen MAL 15 0.00 1.83 Queen MAL 15 0.00 2.00 Worker . 0 1.83 0.00 Worker . 0 1.17 0.50 Worker . 0 1.00 0.00 Worker . 0 1.17 0.00 Worker . 0 1.33 0.00 Worker . 0 1.17 0.00 Worker . 0 1.00 0.00 Worker . 0 1.00 0.00 Worker . 0 1.50 0.00 Worker . 0 1.33 0.00 Worker CAP 5 0.67 0.33 Worker CAP 5 1.17 0.00 Worker CAP 5 1.17 0.00 Worker CAP 5 1.00 0.50 Worker CAP 5 1.83 0.00 Worker CAP 5 1.00 0.50 Worker CAP 5 1.17 0.33 Worker CAP 5 1.00 0.50 Worker CAP 5 1.33 0.00 Worker CAP 5 0.83 0.33 Worker MAL 5 1.00 0.33 Worker MAL 5 1.00 0.50 Worker MAL 5 1.00 0.83 Worker MAL 5 0.83 0.17 Worker MAL 5 0.83 0.50 Worker MAL 5 0.83 0.33 Worker MAL 5 0.67 0.50 Worker MAL 5 1.00 0.33 Worker MAL 5 0.67 0.33 Worker MAL 5 1.00 0.50 Worker CAP 7.5 1.17 0.33 Worker CAP 7.5 1.00 0.00 Worker CAP 7.5 1.50 0.00 Worker CAP 7.5 0.67 0.33 Worker CAP 7.5 0.83 0.33 Worker CAP 7.5 0.67 0.83 Worker CAP 7.5 0.67 0.83 Worker CAP 7.5 1.00 0.00 Worker CAP 7.5 0.67 0.33 Worker CAP 7.5 1.33 0.00 Worker MAL 7.5 0.33 0.67 Worker MAL 7.5 0.50 0.50 Worker MAL 7.5 1.00 0.17 Worker MAL 7.5 0.83 1.00 Worker MAL 7.5 0.67 0.67 Worker MAL 7.5 1.33 0.50 Worker MAL 7.5 1.00 0.17 Worker MAL 7.5 0.67 0.33 Worker MAL 7.5 0.50 0.67 Worker MAL 7.5 1.00 0.17 Worker CAP 10 0.67 0.33 Worker CAP 10 0.83 0.17 Worker CAP 10 0.83 0.17 Worker CAP 10 0.83 0.33 Worker CAP 10 0.83 0.17 Worker CAP 10 0.83 0.50 Worker CAP 10 0.83 0.33 Worker CAP 10 1.00 0.00 Worker CAP 10 0.67 0.33 Worker CAP 10 0.50 0.67 Worker MAL 10 0.83 0.17 Worker MAL 10 0.83 0.17 Worker MAL 10 0.67 0.33 Worker MAL 10 0.33 0.83 Worker MAL 10 0.33 0.67 Worker MAL 10 0.50 0.83 Worker MAL 10 0.17 1.00 Worker MAL 10 0.33 0.83 Worker MAL 10 0.00 1.00 Worker MAL 10 0.00 1.00 Worker CAP 12.5 0.33 1.00 Worker CAP 12.5 0.67 0.50 Worker CAP 12.5 0.67 0.83 Worker CAP 12.5 0.67 0.33 Worker CAP 12.5 0.67 0.50 Worker CAP 12.5 0.67 0.33 Worker CAP 12.5 0.33 0.67 Worker CAP 12.5 0.33 1.00 Worker CAP 12.5 0.83 0.33 Worker CAP 12.5 0.83 0.50 Worker CAP 12.5 0.67 0.33 Worker MAL 12.5 0.00 1.00 Worker MAL 12.5 0.67 0.67 Worker MAL 12.5 0.33 1.83 Worker MAL 12.5 0.67 0.50 Worker MAL 12.5 0.00 1.33 Worker MAL 12.5 0.17 1.50 Worker MAL 12.5 0.00 1.00 Worker MAL 12.5 0.33 1.00 Worker MAL 12.5 0.33 1.00 Worker MAL 12.5 0.00 1.00 Worker CAP 15 0.67 0.33 Worker CAP 15 0.33 0.67 Worker CAP 15 0.50 1.00 Worker CAP 15 0.67 0.50 Worker CAP 15 0.00 1.00 Worker CAP 15 0.50 0.67 Worker CAP 15 0.50 0.50 Worker CAP 15 0.67 0.50 Worker CAP 15 0.00 1.00 Worker CAP 15 0.00 1.00 Worker MAL 15 0.00 1.33 Worker MAL 15 0.00 1.17 Worker MAL 15 0.17 0.83 Worker MAL 15 0.00 1.33 Worker MAL 15 0.00 1.00 Worker MAL 15 0.00 1.17 Worker MAL 15 0.00 1.00 Worker MAL 15 0.17 0.83 Worker MAL 15 0.00 1.33 Worker MAL 15 0.17 0.83 run; proc print data=bees(obs=50); proc glm data=bees; class caste trtime; model Iz Iy = caste|trtime; * means caste|trtime; * Treatment: Captive Maltreated ; * Time: 0 5 7 10 12 15 5 7 10 12 15; contrast '0 vs CAP' trtime 5 -1 -1 -1 -1 -1 0 0 0 0 0; contrast '0 vs MAL' trtime 5 0 0 0 0 0 -1 -1 -1 -1 -1; contrast 'CAP v MAL' trtime 0 1 1 1 1 1 -1 -1 -1 -1 -1; *-- Contrasts for time, within each treatment; contrast 'CAP t:lin' trtime 0 -2 -1 0 1 2 ; * contrast 'CAP t:quad' trtime 0 2 -1 -2 -1 2 ; * contrast 'CAP t:cube' trtime 0 -1 2 0 -2 1 ; * contrast 'CAP t:4th ' trtime 0 1 -4 6 -4 1 ; *-- Test all non-linear terms for captive; contrast 'CAP t:2-4 ' trtime 0 2 -1 -2 -1 2 , trtime 0 -1 2 0 -2 1 , trtime 0 1 -4 6 -4 1 ; contrast 'MAL t:lin' trtime 0 0 0 0 0 0 -2 -1 0 1 2 ; * contrast 'MAL t:quad' trtime 0 0 0 0 0 0 2 -1 -2 -1 2 ; * contrast 'MAL t:cube' trtime 0 0 0 0 0 0 -1 2 0 -2 1 ; * contrast 'MAL t:4th ' trtime 0 0 0 0 0 0 1 -4 6 -4 1 ; *-- Test all non-linear terms for maltreated; contrast 'MAL t:2-4 ' trtime 0 0 0 0 0 0 2 -1 -2 -1 2 , trtime 0 0 0 0 0 0 -1 2 0 -2 1 , trtime 0 0 0 0 0 0 1 -4 6 -4 1 ; *-- Contrasts for time, collapsing over treatment; contrast 'time lin' trtime 0 -2 -1 0 1 2 -2 -1 0 1 2; contrast 'time quad' trtime 0 2 -1 -2 -1 2 2 -1 -2 -1 2; contrast 'time cube' trtime 0 -1 2 0 -2 1 -1 2 0 -2 1; contrast 'time 4th ' trtime 0 1 -4 6 -4 1 1 -4 6 -4 1; *-- Caste by 0 vs CAP/MAL; contrast 'C x 0-CAP' caste 1 -1 trtime 5 -1 -1 -1 -1 -1 0 0 0 0 0; contrast 'C x 0-MAL' caste 1 -1 trtime 5 0 0 0 0 0 -1 -1 -1 -1 -1; contrast 'C x CAP-MAL' caste 1 -1 trtime 0 1 1 1 1 1 -1 -1 -1 -1 -1; contrast 'C x t:lin' caste 1 -1 trtime 0 -2 -1 0 1 2 -2 -1 0 1 2; contrast 'C x t:quad' caste 1 -1 trtime 0 2 -1 -2 -1 2 2 -1 -2 -1 2; contrast 'C x t:cube' caste 1 -1 trtime 0 -1 2 0 -2 1 -1 2 0 -2 1; contrast 'C x t:4th ' caste 1 -1 trtime 0 1 -4 6 -4 1 1 -4 6 -4 1; *-- The manova stmt tests all effects and contrasts by multivariate tests; * manova h = caste|trtime; run; *-- Find means for combinations of Caste x Trtime, for plotting; proc summary nway data=bees; class caste trtime; var Iz Iy; output out=means mean=mIz mIy stderr=sIz sIy; proc print; run; *-- Rearrange the means for plotting (separate treatment and time); data means; set means(drop=_freq_ _type_); if trtime='0' then do; treat = '0 '; time = 0; output; end; else do; treat = substr(trtime,1,3); time = input(substr(trtime,4),3.); time = time + .5 * (mod(time,5)=2); *-- 12 -> 12.5; output; end; proc sort; by caste; proc print; proc plot data=means; plot (miz miy) * time = treat / vaxis=0 to 2 by .5; by caste; run; title 'Ovarian development in captive and maltreated bees'; *include goptions; goptions vsize=7in htext=1.6 hby=0; data barsz barsy; set means; by caste; retain xsys ysys '2' position '3' ; x = time; select (treat); when('0') color='black'; when('CAP') color='blue '; when('MAL') color='red'; end; if first.caste then do; x=0; y=1.9; text=caste; function='label'; output; end; y = miz; function='move '; output barsz; y = miz+siz; function='draw '; output barsz; y = miz-siz; function='draw '; output barsz; y = miy; function='move '; output barsy; y = miy+siy; function='draw '; output barsy; y = miy-siy; function='draw '; output barsy; proc gplot data=means; plot miz * time = treat / vaxis=axis1 haxis=axis2 hm=0 frame anno=barsz; plot miy * time = treat / vaxis=axis1 haxis=axis2 hm=0 frame anno=barsy; by caste; symbol1 v=square h=1.8 i=none c=black; symbol2 v=circle h=1.8 i=rl c=blue; symbol3 v=dot h=1.8 i=rl c=red; axis1 order=(0 to 2 by .5) label=(a=90); axis2 order=(0 to 15 by 2.5) offset=(3); label treat='Treatment' time='Time' miz = 'Mean Ovarian reabsorption' miy = 'Mean Ovarian Development'; run; *splot(data=bees, var=Iz Iy, class=trtime);