GPLOTプロシジャで表示されるスプライン曲線上の値を、SAS/IMLを用いてデータセットに出力する方法

[OS] ALL
[リリース] 6.11 以降
[キーワード] SPLINE

[質問]

SAS/GRAPHソフトウェアのGPLOTプロシジャを使用して、スプライン曲線を表示しました。この曲線上の座標を、SAS/IMLを用いてSASデータセットに出力する方法はありますか。

GPLOTプロシジャのプログラム例:


proc gplot data=data1;
  plot y*x;
  symbol i=spline;
run;
quit;

[回答]

SAS/IMLでは、サブルーチンSPLINEを用いて実現できます。


/* サンプルデータ */
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;


proc iml;
  use test;
    read all into mat;
  close test;
  /* 行列fittedに曲線上の点を50個出力 */
  call spline(fitted,mat,,,50);

  /* 出力データセット、変数名の指定 */
  create fit var{x y};
  append from fitted;
  close fit;
quit;

なお、SAS/STATソフトウェアを利用した方法については、下記のFAQをご参照ください。

GPLOTプロシジャで表示されるスプライン曲線上の値をデータセットに出力する方法