options ls=79 ps=50; data iron; infile 'eiv.dat' firstobs=2; input Clevel Cactual Resp; Clin = Clevel; proc plot; /* scatter plot of data */ plot Resp*Cactual=Clevel; proc glm; /* analysis of variance */ class Clevel; model Resp = Clevel / ss1; means Clevel / lsd lines; lsmeans Clevel / pdiff stderr; contrast 'slope=0' Clevel -1 0 1; estimate 'slope' Clevel -1 0 1 / divisor = 2; output out=anova p=pred r=resid; proc plot; plot Resp*Cactual=Clevel pred*Cactual='*' / overlay; proc glm data=iron; /* regression on discrete levels */ model Resp = Clin / ss1; output out=reglev p=pred r=resid; proc plot; plot Resp*Cactual=Clevel pred*Cactual='*' / overlay; /* note difference below from contrast above -- why? */ proc glm data=iron; /* test for linearity */ class Clevel; model Resp = Clin Clevel / ss1; proc glm data=iron; /* regression on actual carbon */ model Resp = Cactual / ss1; output out=regact p=pred r=resid; proc plot; plot Resp*Cactual=Clevel pred*Cactual='*' / overlay; proc glm data=iron; /* error in variables */ class Clevel; model Resp = Clevel Cactual; output out=ervar p=pred r=resid; proc plot; plot Resp*Cactual=Clevel pred*Cactual='*' / overlay; proc glm; /* error in variables depending on group */ class Clevel; model Resp = Clevel Cactual Cactual*Clevel;