★データ解析備忘録★

ゆる〜い技術メモ

SASの中でRからSASにデータを渡す

前回の記事でSAS/STATでもRを使えることを書きました。
y-mattu.hatenablog.com

今回はSAS上で動かしたRのデータをSASに渡す方法です。

簡単です。

/*proc iml内でendsubmit;した後に*/
run ImportDataSetFromR("work.A","B");
/*Aは後でSASデータとして使いたい名前*/
/*BはR内のオブジェクト名*/

例としてRにデフォルトで入ってるairqualityデータを取り出して、SASで単回帰のMCMCをしてみます。*1
(Rで全部やれるじゃんっていうツッコミはなしでお願いします。)
モデル式は以下のような感じです。

{ \displaystyle
Ozone_i = beta0 + beta1 \times Solar\_R_i +\varepsilon_i \\
Ozone_i \sim N(beta0 + beta1 \times Solar\_R_i , \sigma^2) \\

beta0 \sim N(0, 10^6) \\
beta1 \sim N(0, 10^6) \\
\sigma^2 \sim IG(3/10,10/3) 
}

SASプログラム

※airqualityデータの変数名はSolar.Rですが、SASデータセット名で . (ピリオド)は使えないので、RからSASに渡した段階でSolar_Rに変更されてます。
f:id:songcunyouzai:20160116204331p:plainf:id:songcunyouzai:20160116204345p:plain

MCMCの結果
f:id:songcunyouzai:20160116203007p:plain
f:id:songcunyouzai:20160116203020p:plain
f:id:songcunyouzai:20160116203039p:plain
f:id:songcunyouzai:20160116203055p:plain
f:id:songcunyouzai:20160116203112p:plain

RのデータをSASに渡して解析ができました。

*1:なぜMCMCかというと、ベイズ統計が好きだからです。なぜ単回帰かというと、あくまでデータを渡す練習なので、事前分布の設定が少なくて済むからです。