4

matlab では、平均と標準偏差を持つ正規分布ランダム ベクトルを簡単に生成できます。ヘルプ randn から:

平均が 1 で標準偏差が 2 の正規分布から値を生成します。r = 1 + 2.*randn(100,1);

今、共分散行列 C があり、N(0,C) を生成したいと考えています。

しかし、どうすればこれを行うことができますか?

randn ヘルプから: 指定された平均ベクトルと共分散行列を使用して、二変量正規分布から値を生成します。ムー = [1 2]; シグマ = [1 .5; .5 2]; R = chol(シグマ); z = repmat(mu,100,1) + randn(100,2)*R;

しかし、彼らがここで何をしているのか正確にはわかりません。

4

2 に答える 2

4

これは数学の問題であり、プログラミングの問題ではありません。しかし、私は確かな数学とプログラミングの知識の両方を必要とする優れたコードを書くことが大好きなので、後世のためにこれを書きます。

コレスキー分解 (または行列の任意の分解/平方根) を使用して、独立した確率変数から相関確率変数を生成する必要があります。これは、Xが平均mと共分散Dをもつ多変量正規分布である場合、が転置であるY = AX平均Amと共分散行列をもつ多変量正規分布であるためです。が単位行列である場合、共分散行列は、生成しようとしている共分散行列と等しくしたいものです。ADA'A'DAA'C

コレスキー分解は、このような行列Aを計算する最も効率的な方法です。

詳細については、http ://web.as.uky.edu/statistics/users/viele/sta601s03/multnorm.pdf を参照してください。

于 2013-01-25T07:56:29.787 に答える
3

次の組み込みのmatlab関数を使用して作業を行うことができます

mvnrnd(mu,SIGMA)
于 2011-03-27T21:46:19.460 に答える