僕の頁 <SASと臨床試験と雑談と>

徒然なるままにSAS暮らし

----

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Posted on --/--/-- --. --:-- [edit]

CM: --
TB: --

0308

IMLによる多変量正規乱数の生成  

先日、DATAステップによる2変量正規乱数の生成方法を紹介しましたが、
今回はIMLプロシジャを用いた多変量正規乱数の生成方法を紹介します。
多変量正規乱数の生成方法は色々ありますが、ここではIMLプロシジャの
randnormal関数を使用します。

以下の多変量正規(Multivariate Normal; MVN)分布を想定します。
多変量正規分布
randnormal関数は引数に発生させるデータ数、想定する平均値のベクトルと
分散共分散行列を指定します。
randnormal(N,MEAN,Cov.)

分散共分散行列をそのまま指定してもいいですが、現実的には変数間の
相関行列と標準偏差(または分散)から分散共分散行列を計算して指定
することが多いかなと想像してます。今回のプログラムの流れは、

3変数の相関行列、平均値と標準偏差のベクトルを指定し、分散(_VAR)を算出
⇒分散共分散行列を計算(相関行列の各要素と_VAR`*_VARの各要素を#で掛ける)
⇒randnormal関数で乱数を生成
⇒生成したデータの要約統計量と相関係数を確認する

proc iml ;
call randseed(100) ;
create RES var{X1 X2 X3} ;
*--- 各パラメータの設定 ;
_CORR = {1 0.3 0.5,
0.3 1 0.6,
0.5 0.6 1 } ; *--- 相関行列 ;
_MEAN = {5 3 1} ; *--- 各変数の平均値を格納したベクトル ;
_SD = {3 2 1} ; *--- 各変数の標準偏差を格納したベクトル ;
_VAR = _SD##2 ; *--- 各変数の分散を格納したベクトル ;
_COV = _CORR # sqrt(_VAR` * _VAR) ; *--- 分散共分散行列 ;

*--- 3変量正規乱数の生成 ;
N = 500 ;
_X = randnormal(N,_MEAN,_COV) ; *--- データ数, 平均値ベクトル, 分散共分散行列 ;
print _X ;
*--- 結果をデータセットに格納 ;
append from _X ;
close RES ;
*--- 結果の確認(Pearsonの積率相関係数と要約統計量) ;
submit ;
proc corr data=RES pearson ;
var X: ;
run ;
endsubmit; *--- セミコロンの前にスペースを入れるとなぜかerror ;

quit ;

corrプロシジャの結果を見てみましょう。想定通りの相関係数と
平均値・標準偏差のデータが生成されていることが確認できます。
多変量_IMLの結果
スポンサーサイト

Posted on 2014/03/08 Sat. 17:23 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。