多次元正規分布に基づく乱数の生成

[OS] ALL
[リリース] 9.2以降
[キーワード] 正規分布、乱数

[質問]

多次元正規分布に従う乱数列の生成に対応しているプロシジャはありますか。

[回答]

SAS 9.2以降では、SAS/STATにSIMNORMALプロシジャ(正規版)が追加されており、共分散(COV)、相関行列(CORR)タイプなどのデータセットより、擬似乱数を生成できます。

例えば、平均、共分散行列の情報を用いる場合には、以下のようにデータセットを作成します。

例)

DATA cov1(TYPE=COV);
INPUT _TYPE_ $ _NAME_ $ col1 col2 col3;
CARDS;
MEAN   20 30 40
COV col1 1 1.2 2.25
COV col2 1.2 4 3.3
COV col3 2.25 3.3 9

データセット名の後にTYPE=COVを追加し、共分散構造のデータタイプとしています。その後、SIMNORMALプロシジャを実行します。

例)

PROC SIMNORMAL DATA=cov1 OUTSIM=sim
NUMREAL=10000 SEED=12345;
VAR col1 col2 col3;
RUN;

OUTSIM=オプションにて出力データセット名、NUMREAL=オプションに生成する乱数の列数を指定しています。

なお、SAS/STATのMIXEDプロシジャを活用した方法、SAS/ETSのMODELプロシジャ、SAS/IMLを用いた生成については、以下のFAQをご参照ください。

多次元正規分布に従う乱数列を生成する方法
http://www.sas.com/jp/service/technical/faq/list/body/stat034.html

SAS/ETSで多次元正規分布に従う乱数列を生成する方法
http://www.sas.com/jp/service/technical/faq/list/body/ets007.html

SAS/IMLで多次元正規分布に従う乱数列を生成する方法
http://www.sas.com/jp/service/technical/faq/list/body/iml017.html