options ls=79 ps=50; data dat; infile 'cloning.dat' firstobs=2; input clone rep titer code $ type $; title "Cloning Example"; proc sort; by clone code type; /* estimate means */ proc means noprint; by clone code type; var titer; output out=means mean=Mean n=n std=SD; proc sort; by Mean; proc print; var clone n Mean n SD type; proc plot data=means; /* plot means against SDs */ plot SD*Mean=code; plot SD*Mean=type; data reduce; set dat; /* reduce to well behaved data */ if type = 'cult' or type = 'etb' or type = 'odd' then delete; proc glm data=dat; /* ANOVA table */ class clone rep; model titer = clone; /* planned contrasts */ estimate 'susc vs cults' clone 1 0 -1 0 0 0 -1 0 0 0 0 1 0 / divisor=2; estimate 'susc vs res' clone -3 0 0 2 0 0 0 2 0 0 0 -3 2 / divisor=6; estimate 'res vs cults' clone 0 0 3 -2 0 0 3 -2 0 0 0 0 -2 / divisor=6; estimate 'prog vs parents' clone 4 0 0 4 -5 -5 0 4 -5 0 -5 4 4 / divisor=20; /* multiple comparisons */ /* based on F statistics */ means clone / lsd bon scheffe regwf waller lines; /* based on range statistics */ means clone / tukey snk regwq duncan lines; /* Fisher's LSD using LS means */ lsmeans clone / stderr pdiff; /* adjusting for sample size */ output out = pred p = pred; proc plot data=pred; /* plot data */ plot titer*clone; plot titer*pred=code pred*pred='*' / overlay;