Get GLM output in data set
proc glm data=data noprint; class rank_cd area; model salary= Experience rank area / predicted cli; * regress SALARY against the 3 predictor variables ; output out = glm_out Predicted = yhat R=resid lcl=lcl lclm=lclm ucl=ucl uclm=uclm rstudent=rstd student=stu dffits = infl stdr =error; run;
Calcuate sample standard deviation using GLM output data set
proc univariate data=glm_out; var resid; output out = univar_out STD = sample_std_devn; run;
Assign sample standard deviation to macro variable
data std; set univar_out; call symput('sstd',sample_std_devn); run; %put &sstd.;
Update GLM output data set with 2 std information
data glm_out; set glm_out; ustd_2 = yhat + 2*&sstd.; lstd_2 = yhat - 2*&sstd.; run;
Plot regression line with 2 standard deviation lines (upper/lower)
proc sgplot data=glm_out (where = (rank = 1 and area =1); scatter x=experience y=salary / group=gender grouporder=ascending name='plot' markerattrs=(symbol=circlefilled) ; series x=experience y=yhat / name='predict' legendlabel='ln(Predicted Sal)' lineattrs=(color=blue ) transparency = 0.5 ; series x=experience y=ustd_2 / name='upper' legendlabel='2 Standard Deviation' lineattrs=(color = lightblue) transparency = 0.5; series x=experience y=lstd_2 / name='lower' legendlabel='2 Standard Deviation' lineattrs=(color = lightblue) transparency = 0.5; run; quit;