options ls=79 ps=50 nocenter; data tukey; infile 'ntukey.dat' firstobs=2; input geno $ lat y; /* fit additive model */ /* saving lat margins as lsmean in lslat file */ proc glm; class geno lat; model y = geno lat; lsmeans lat / stderr out=lslat; lsmeans geno / stderr out=lsgeno; output out=add p=pred; /* fit tukey interaction model */ data inter; set add; inter = pred * pred / 2; /* only examine the test for "inter" covariate */ proc glm; class geno lat; model y = geno lat inter / ss1 solution; output out=tukpred p=ptukey; /* Tukey Interaction Plots */ proc plot; plot y*lat=geno ptukey*lat='*' / overlay; /* Tukey Margin Plots -- against lat */ proc sort data=tukpred; by lat; proc sort data=lslat; by lat; data tukplot; merge tukpred lslat; by lat; proc plot; plot y*lsmean=geno; /* actual values */ plot ptukey*lsmean=geno; /* Tukey estimates */ /* Tukey Margin Plots -- against geno */ proc sort data=tukpred; by geno; proc sort data=lsgeno; by geno; data tukplot; merge tukpred lsgeno; by geno; proc plot; plot y*lsmean=lat; /* actual values */ plot ptukey*lsmean=lat; /* Tukey estimates */ /* Fit Two Mandel Interaction Models */ /* check only the lat*pred interaction */ proc glm data=inter; class geno lat; model y = geno lat lat*pred; output out=mand1 p=pred1; /* check only the geno*pred interaction */ proc glm data=inter; class geno lat; model y = geno lat geno*pred; output out=mand2 p=pred2; /* Mandel Margin Plots -- against lat */ proc sort data=mand1; by lat; proc sort data=mand2; by lat; proc sort data=lslat; by lat; data mandplot; merge mand1 mand2 lslat; by lat; proc plot; plot pred1*lsmean=geno; /* Mandel lat*pred Model */ plot pred2*lsmean=geno; /* Mandel geno*pred Model */ /* Mandel Margin Plots -- against geno */ proc sort data=mand1; by geno; proc sort data=mand2; by geno; proc sort data=lsgeno; by geno; data mandplot; merge mand1 mand2 lsgeno; by geno; proc plot; plot pred1*lsmean=lat; /* Mandel geno*pred Model */ plot pred2*lsmean=lat; /* Mandel lat*pred Model */