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

徒然なるままにSAS暮らし

0222

2変量正規乱数の生成(DATAステップ)  

2変量正規乱数の生成方法をメモしておきます。
既に様々な言語・サイトで紹介されていることなので
何も真新しいことはないですが、備忘録として。

今回は2変量なのでDATAステップで実行してみます。
確率変数XとYがそれぞれ以下のように正規分布に
従うとします。
XとYの正規分布
このとき、X=xが得られた場合のYの条件付き分布は
以下になります。言うまでもありませんが、ρが0の
場合は上記Yの分布となりそれぞれ独立に乱数を生成
させた場合と同様になります。
2変量_条件付き正規分布
DATAステップでは、rand関数(正規分布はrand('normal',mean,sd))
でまずXの乱数を生成させ、そのあとに上記の条件付き分布に従った
Yの乱数を生成させます。下記の例では、平均値をそれぞれ-3.5,-2、
標準偏差を14,10、相関係数を0.6として2000組のデータを生成して、
corrプロシジャで各変数の要約統計量と相関係数を確認してみます。
*** 各パラメータ ;
%let _R = 0.6 ; *--- 相関係数 ;
%let _M1 = -3.5 ; *--- 変数1の母平均 ;
%let _M2 = -2 ; *--- 変数2の母平均 ;
%let _SD1 = 14 ; *--- 変数1のSD ;
%let _SD2 = 10 ; *--- 変数2のSD ;
*** 乱数の生成 ;
data _TEST ;
call streaminit(100) ; *--- seed ;
do I = 1 to 2000 ;
_V1 = rand('normal', &_M1, &_SD1) ; *--- 変数1 ;
_V2 = rand('normal', &_M2 + &_R*&_SD2*(_V1-&_M1)/&_SD1, &_SD2*sqrt(1-&_R**2)) ; *--- 変数2 ;
output ;
end ;
run ;
*** 平均値,標準偏差,相関係数を確認 ;
proc corr data=_TEST pearson ;
var _V: ;
run ;

結果は以下になります。相関係数が0.6付近であることが
確認できます。もちろん平均・標準偏差も意図通りの結果
となっています。
2変量_DATAステップの結果
今度は多変量の場合もまとめたいと思います。
スポンサーサイト

Posted on 2014/02/22 Sat. 22:13 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top