【发布时间】:2013-11-30 10:10:53
【问题描述】:
同时,我也在努力解决这个问题,我的解决方案如下。如果您知道更好的方法,请告诉我
我想在 SAS 中生成以下回归图:
圆点是实验结果,蓝点是雄性,红点是雌性。黑线是通过所有点的简单回归拟合。虚线是使用包含预测变量性别的回归模型(无交互项)制成的,例如 Y=alpha + beta_1.X_1i + beta_2.X_2i 和 beta_2i 是性别的虚拟变量。红色虚线为女性回归模型,蓝色虚线为男性回归模型。
这是我现在用来获取回归参数的 SAS 代码,它已经给了我与 R 中相同的结果:
PROC REG DATA= datasalary;
MODEL Salary=Yearsemployed gender / CLB R DW DWPROB;
OUTPUT out=pred p=Yhat RSTUDENT=Residuals L95M=Low U95M=High ;;
RUN;
任何想法如何在 Sas 中制作情节? 提前致谢! 卡斯帕
解决方案,比较麻烦,所以也许有更简单的方法
我通过将回归系数输出到全局参数,然后在 SGPlot 过程中使用该全局参数来做到这一点。
PROC REG DATA= datasalary outest=est_model2;
MODEL Salary=Yearsemployed gender / CLB R DW DWPROB;
OUTPUT out=pred p=Yhat RSTUDENT=Residuals L95M=Low U95M=High;
RUN;
%LET model2_alpha = 0;
%LET model2_beta1 = 0;
%LET model2_beta2 = 0;
Data _null_;
Set est_model2;
call symput("model2_alpha",Intercept);
call symput("model2_beta1",Yearsemployed);
call symput("model2_beta2",Gender);
call symput("model_2_intercept_males", Intercept + Gender);
Run;
%put &model2_alpha;
%put &model2_beta1;
%put &model2_beta2;
%put &model_2_intercept_males;
PROC SGPlot Data = datasalary;
Scatter X=Yearsemployed Y=Salary / Group = Gender;
Lineparm x=0 y=&model1_alpha slope=&model1_beta1 / LINEATTRS=(Color= "Black");
Lineparm x=0 y=&model2_alpha slope=&model2_beta1 / LINEATTRS=(Color= "Maroon" Pattern= MediumDash);
Lineparm x=0 y=&model_2_intercept_males slope=&model2_beta1 / LINEATTRS=(Color= "VIB " Pattern= MediumDash);
XAXIS LABEL = 'Salary' VALUES = (0 TO 30 BY 5);
YAXIS LABEL = 'Years experience' VALUES = (0 TO 35 BY 5);
TITLE 'Linear regression with two predictors and no interaction terms';
Run;
【问题讨论】:
-
你可以在 SGPlot 中使用 REG 语句,但我认为它不能处理虚拟变量或一般的多元回归。您正在做的事情可能是实现您正在寻找的最佳方式。您可以使用
PROC SGPLOT语句中的NOAUTOLEGEND选项来删除图例。 -
我同意,很多代码,但解决方案没有太多可优化性。