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を用いてデータセットに出力する方法
|