0

こんにちは。

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;
4

1 に答える 1

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; 

つまり、Q1Q3は のフィールドですmyData。そうでない場合は、マクロ変数を作成できます。例えば

%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; 

これは、第 1 四半期と第 3 四半期が事前にわかっている場合です。

Q1Q3が別のデータセットのフィールドである場合proc sqlselect Q1, Q3. into :Q1, :Q3または を使用したデータ ステップでcall 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;
于 2016-01-04T11:45:48.437 に答える