お世話になります。
proc glmselect data=cars outdesign(addinputvars fullmodel)=SplineBasis; effect spl = spline(weight / naturalcubic basis=tpf(noint) knotmethod=percentiles(5)); model mpg_city = spl / selection=none; quit; proc reg data=SplineBasis; model mpg_city = spl_:; output out=out predicted=fit; run;
proc sgplot data=out noautolegend; scatter x=weight y=mpg_city; series x=weight y=Fit / lineattrs=(thickness=3 color=red); run;
といった重回帰分析のsplineの図示ですが、 model mpg_city = spl / selection=none; → model mpg_city = spl age/ selection=none;
というように調整因子を入れたものがうまくいきません。
ご教示いただけますと幸いです。
何卒よろしくお願い致します。
Add PROC SORT before PROC SGPLOT. proc sort data=out out=out1;by weight;run; proc sgplot data=out1 noautolegend; scatter x=weight y=mpg_city; series x=weight y=Fit / lineattrs=(thickness=3 color=red); run;
Thank you for your reply.
I added proc sort.
ageを追加したいとのことですが、どのようなグラフを作成されることを意図されているのでしょうか。REGプロシジャのMODELステートメントにageを追加した場合、それぞれのオブザベーションが持つspl1-4とageの値を用いた予測値が出力されることになります。
例えば等高線プロットであればPLMプロシジャのEFFECTPLOTステートメントで描画が可能です。
proc glmselect data=sashelp.cars outdesign(addinputvars fullmodel)=SplineBasis;
effect spl = spline(weight / naturalcubic basis=tpf(noint) knotmethod=percentiles(5));
model mpg_city = spl length / selection=none;
store spl;
quit;
proc plm restore=spl;
effectplot;
run;
ご返事ありがとうございます。
下記のURLにWeightとMPGの関係がスプラインで図示されていますが、これを他の変数を調整したうえで(かつ95%信頼区間をつけて)図示したいというのが目的です。
お手数をおかけします。
https://blogs.sas.com/content/iml/2019/02/18/regression-restricted-cubic-splines-sas.html
他の変数を調整するというのは具体的にどのような処理を指しているのでしょうか。もう少し詳細な内容を頂ければ何かご案内できるかもしれません。
言葉足らずですみません。
例えば 血圧 = BMI の関係 で年齢が交絡因子になるので、年齢を調整したいとします。
XがBMI、Yが血圧の回帰直線を年齢の影響を除いて書きたいと思っています。
そのうえで、それをspline(+95%信頼区間)で書きたいと思っています。
上記の投稿で勘違いしておりましたが、
血圧 =切片 + β1×BMI + β2×年齢
で、年齢調整後、図示するとき、おそらくβ2は用いないですね
proc glmselect data=cars outdesign(addinputvars fullmodel)=SplineBasis;
effect BMI_spl = spline(BMI / naturalcubic basis=tpf(noint) knotmethod=percentiles(5));
model SBP = BMI_spl AGE/ selection=none;
quit;
このモデルでどのようにして、XがBMI、Yが血圧の回帰直線を年齢の影響を除いて書けるかで悩んでいます。
例えば平均値のような特定の値における予測値を算出するのであれば以下のような
記述ができるかと思います。
proc glmselect data=sashelp.cars outdesign(addinputvars fullmodel)=SplineBasis;
effect spl = spline(weight / naturalcubic basis=tpf(noint) knotmethod=percentiles(5));
model mpg_city = spl length / selection=none;
store spl;
quit;
data cars2;
set sashelp.cars;
length=186;
run;
proc plm restore=spl;
score data=cars2 out=out;
run;
proc sort data=out;
by weight;
run;
proc sgplot data=out;
series x=weight y=predicted;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!