0

こんにちは、アルゴリズムが正しいかどうかわかりません。matlab のmvnrnd関数を gsl で複製しようとしています。多変量正規乱数のベクトルを生成するアルゴリズムをいくつかのジャーナル記事で見つけましたが、多変量正規乱数の行列が必要です

分布が Z~(mu,sigma); であるとしましょう。

sigma が既に正定値の行列であると仮定します。

私がウェブから見つけたアルゴリズムは

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

以下の私の方法

以下の変更は、確率変数の行列を生成するための修正です

    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
4

1 に答える 1

2

はい、そうです。たとえば、このセクションを持つ多変量正規 RNG に関するウィキペディアのエントリを参照してください。

分布から値を引き出す

平均ベクトル μ と共分散行列 Σ を使用して N 次元多変量正規分布からランダム ベクトル x を描画するために広く使用されている方法は、次のように機能します。

  1. A AT = Σ となる実数行列 A を見つけます。Σ が正定値の場合、通常はコレスキー分解が使用されます。[...]

  2. z = (z1, …, zN)T を、成分が N 個の独立した標準正規変量 (たとえば、ボックス ミュラー変換を使用して生成できる) であるベクトルとする。

  3. x を μ + Az とします。これは、アフィン変換の性質により、望ましい分布をしています。

これは同じアルゴリズムを記述しています。

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

于 2012-05-02T00:24:24.377 に答える