变量中具有特定参数的SAS回归

时间:2016-01-04 03:01:09

标签: sas regression multiple-regression

下午好。

是否可以回归具有特定的变量,例如Y = X1(Q1和Q3之间)X2(X2> 100)X3?我不希望回归X1或X2中的所有数据,只是我确定的参数中的数据。

如何回归分位数Q3和Q4之间的所有变量?

我接近这个正确的方法吗?

感谢您的支持。

 *Regression output;
 ods graphics on;
 proc reg data=mydata PLOTS(ONLY)=(DIAGNOSTICS FITPLOT RESIDUALS);
 model Y = X1 X2 X3; 
 title 'Working Regression Model';
 run;
 ods graphics off;

1 个答案:

答案 0 :(得分:1)

如果您只想使用部分数据进行回归,可以在proc reg本身进行过滤:

proc reg data=mydata (where=(X1 Between Q1 and Q3 and X2 > 100))
    PLOTS(ONLY)=(DIAGNOSTICS FITPLOT RESIDUALS);
model Y = X1 X2 X3; 

Q1Q3myData中的字段。如果没有,您可以为它们创建宏变量。例如

%let Q1 = 50;
%let Q3 = 250;
proc reg data=mydata (where=(X1 Between &Q1. and &Q3. and X2 > 100))
    PLOTS(ONLY)=(DIAGNOSTICS FITPLOT RESIDUALS);
model Y = X1 X2 X3; 

如果您事先了解Q1和Q3,那就是这样。

如果Q1Q3是其他数据集中的字段,则proc sql select Q1, Q3. into :Q1, :Q3call symput('Q1', Q1); call symput('Q3', Q3);的数据步骤可以完成此任务。

阅读您的评论后编辑Q1等等是分位数:

以下示例可能包含您需要的所有构建块

ods graphics on;
proc means data=SASHELP.CLASS noprint;
    var Height Weight;
    output out=CLASS_Q
        P25(Height Weight)=Height_Q1 Weight_Q1
        P75(Height Weight)=Height_Q3 Weight_Q3;
run;
data _NULL_;
    set CLASS_Q;
    call symput('Height_Q1', Height_Q1);
    call symput('Height_Q3', Height_Q3);
    call symput('Weight_Q1', Weight_Q1);
    call symput('Weight_Q3', Weight_Q3);
run;
%put _user_; *just to debug;
proc reg data=SASHELP.CLASS 
    (where=(Height Between &Height_Q1. and &Height_Q3. and Weight > &Weight_Q1.))
    PLOTS(ONLY)=(DIAGNOSTICS FITPLOT RESIDUALS);
    model Age = Height Weight;
run;