2012-05-01 3 views
0

こんにちは私のアルゴリズムが正しい場合私はmvnrndの機能を複製しようとしていますが、gslの。私は、多変量正規のベクトルを生成するいくつかの雑誌記事でアルゴリズムを見つけましたが、多変量正規乱数の行列が必要です。gslのmatlab mvnrnd

分布はZ〜(mu、sigma)です。

σはすでに正定値行列であると仮定します。

私はウェブをオフに見つかったアルゴリズムが

以下の私の方法は、ランダムな変数

1. cholskey(sigma) = A 
    2. generate uniform gaussian matrix R 
    3. matrix matrix scalar product AR 
    4. add mu to AR and that will be a matrix of multivariate normal random numbers 
の行列積にbelowcorrect次のように変更されている

1. cholskey(sigma) = A 
2. generate uniform gaussian vector r 
3. matrix vector triangular product with gsl_blas_dtrmv A * r 
4. add mu to Ar and that will be a vector of multivariate normal random numbers 

に言います

答えて

2

はい、そうです正しい。例えば、 this Wikipedia entry on multivariate normal RNGsこのセクション有する:分布から

描画値を

平均ベクトルμと 共分散行列Σの作品で N次元多変量正規分布からのランダムベクトルxを描画するための広く使用されている方法

  1. A AT =Σとなるような実数行列Aを求めます。 Σが正定値のとき、Cholesky分解は通常 です。 [...]

  2. は、z =(Z1、...、ZN)はTその成分であるNを生成することができる 独立した標準正規変量( 例えば、ボックス・マラーを使用して変換ベクトルとします)。

  3. xをμ+ Azとする。これは、アフィン変換特性による所望の分布である を有する。

これは、同じアルゴリズムを説明している。

Rの実装もいくつかあります。たとえば、すべてのRインストールに付属するMASSパッケージにはmvrnormのパッケージがあります。

+0

ありがとうございました!私の質問に答えるためにあなたのような有名人を私につかまえるとは思わなかった – pyCthon