GPLOTプロシジャで表示されるスプライン曲線上の値をデータセットに出力する方法
[OS] ALL
[リリース] 8 以降
[キーワード] TRANSREG, SPLINE, SMOOTH
[質問]SAS/GRAPHソフトウェアのGPLOTプロシジャを使用して、スプライン曲線を表示しました。この曲線上の座標をSASデータセットに出力する方法はありますか。 GPLOTプロシジャのプログラム例: proc gplot data=data1; plot y*x; symbol i=spline; run; quit;
[回答]SAS 8 以降では、TRANSREGプロシジャのMODELステートメントで、変換方法SMOOTHを指定することによって実現できます。 例:
/* サンプルデータ */
data test;
do x = 1 to 100 by 2;
y = log(x) + sin(x / 10) + normal(7);
output;
end;
run;
/* 事前にソートする(ソートされていない場合) */
proc sort data=test;
by x;
run;
/* TRANSREGプロシジャ */
proc transreg data=test;
model identity(y) = smooth(x); /* 変数 x に対してSMOOTHによる変換を施す */
output out=out1; /* データセットout1に座標を出力。この場合、変数 Tx に変換された数値が入る */
run;
/* GPLOTプロシジャで、実測値、スプライン曲線、及びTRANSREGプロシジャによる出力を比較する */
proc gplot data=out1;
plot y*x=1 y*x=2 tx*x=3 / cframe=ligr overlay;
symbol1 color=blue v=star i=none; /* 実測値 */
symbol2 color=yellow v=none i=spline; /* I=SPLINE */
symbol3 color=cyan v=dot i=none; /* TRANSREGによる結果 */
run;
quit;
SYMBOLステートメントで「I=SM50」といった指定を行なった場合については、変換SMOOTHのオプションとして「SM=50」を与えます。 proc transreg data=test; model identity(y) = smooth(x/sm=50); output out=out2; run; proc gplot data=out2; plot y*x=1 y*x=2 tx*x=3 / cframe=ligr overlay; symbol1 color=blue v=star i=none; /* 実測値 */ symbol2 color=yellow v=none i=sm50; /* I=SM50 */ symbol3 color=cyan v=dot i=none; /* TRANSREGによる結果 */ run; quit; なお、SAS/IMLを利用した方法については、下記のFAQをご参照ください。 GPLOTプロシジャで表示されるスプライン曲線上の値を、SAS/IMLを用いてデータセットに出力する方法
|
|