• ベストアンサー

分散共分散行列のプログラム

C言語での質問なんですが,平均値ベクトルはわかるんですけど,分散共分散行列の解がよくわかりません.わかる方是非教えてください.よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

計算方法自体はそんなに難しくないと思うのですが。共分散行列を求めるCのプログラムのサンプルが必要だということでしょうか。

参考URL:
http://sinfo.sgu.ac.jp/~jin/STUDENT/s94107/prg.html
kiritanpo
質問者

お礼

解決しました。回答ありがとうございます。

kiritanpo
質問者

補足

プログラムの問題なんですが、5次元の乱数を10個発生させて、その平均値ベクトル、分散共分散行列を出力できるプログラムを教えていただけないでしょうか?できればサンプルお願いします。

関連するQ&A

  • 分散共分散行列とは?

    分散共分散行列のことを調べたのですが、参考になるものがあまり見つかりません。教えてください。 分散共分散行列とは、どのようなもののことを言うのでしょうか? また、どうしてその行列が分散を表しているのでしょうか? その、行列の行列式?が小さければ、分散が小さいといえるのでしょうか? 良く分からないので、詳しい方、ぜひぜひ教えてください。 よろしくお願いします。

  • 分散共分散行列

    分散共分散行列 分散共分散行列とはどのような行列のことを言いますか? どのようなものが分散共分散行列であり、どのようなものが分散共分散行列なり得ないのかわからないので教えてもらえますか? たとえば    A=|1 1 |   |1 -1| B=|7 3| |3 7| の行列は分散共分散行列となりますか? できたら理由も教えてください。

  • 共分散行列を求めるプログラム

    マハラノビス距離の分布パラメータである共分散行列について考察しています。共分散行列を求めるプログラムを教えてください。

  • 共分散行列と分散共分散行列の違いとはなんですか?

    共分散行列と分散共分散行列の違いとはなんですか? 現在、共分散行列について調べているのですが、分散共分散行列ばかりが引っかかって混乱しています。

  • 共分散行列の固有値・固有ベクトルの行列

    以下のようなデータを用いて、共分散行列を生成するとします。 (各No.にはそれぞれx1~x5の5つのデータ) x1 x2 x3 x4 x5 No.1 [2 4 5 2 1] No.2 [3 10 8 7 9] No.3 [11 3 2 1 6] すると、共分散行列は3×3の正方行列になり、その固有値も3つ求まりますよね。 しかし、固有ベクトルに関してはデータがx1,x2,..,x5と5次元で考えているので、 ひとつの固有値に対して5つの成分を持つ固有ベクトルが求まりますよね。 よって、共分散行列の固有値行列は必ず正方行列になりますが、固有ベクトルの 行列は上の例の場合なら5×3行列(列は対応する固有値の数、行はベクトルの成分の数)となり、 必ずしも正方行列にはなりませんよね?そのあたりを教えて頂きたいと思います。 よろしくお願いします。

  • 二つの確率ベクトルの共分散行列

    n次元確率ベクトルXについての分散共分散行列 Cov(Xi, Xj)の説明は多くの教科書にあり理解しているのですが,p次元確率ベクトルPとq次元確率ベクトルQについての共分散行列 Cov(Pi, Qj) が何の指標になっているのかがわかりません.行列の各成分は何を表しているのでしょうか.直感的・幾何学的なイメージがつかめないのですが...

  • 変動行列と共分散行列の表す意味の違い

    そのままなのですが、共分散行列と変動行列の表す意味の違いを教えてください。 変動行列をサンプル数で割って平均値として表現したのが共分散行列ですよね? それって何か良いことでもあるのでしょうか?

  • 共分散行列について教えて!

    共分散行列とはなんですか? 共分散行列はどうやって求めるんですか?

  • 分散共分散行列の逆行列

    以下の行列を考えます. 行列X(M行N列,成分の値は分散1のガウスノイズ) 行列Xの分散共分散行列S(M行M列), 行列Sの逆行列Y(M行M列) N=M+1のときはN≠M+1のときに比べて行列Yの各成分の大きさがかなり大きくなる,という結果が得られました. (計算にはMATLABの関数covとpinvを用いました.) これは数学的に正しいことなのでしょうか. また,正しいとしたらどうしてこのようなことが起こるのでしょうか. 行列Yの計算結果の例を以下に示します.(行列Yを500回算出し,それらの平均値を示しています.) http://wisteria.orz.ne.jp/download/pinvcovX.jpg 縦・横方向の軸は行列Yのインデックスを,高さ方向の軸は行列Yの成分の値を示しています. 上述した現象の原因についてご教授いただけると幸いです.

  • 共分散行列の求め方

    数個のデータから共分散行列を生成するプログラムを実装しようと 考えています。そこで、次のようなプログラムを書きましたが、 結果があっているかがわかりません。共分散行列の生成方法に 詳しい方がおられましたら、どうか教えて頂きたいと思います。 共分散行列生成に用いた式は Σ = E[(X-E[X])(X-E[X])^T]  です。 (Σ:共分散行列 X:データ E[X]:Xの平均 ^T:転置行列) double xave = 0.0; //式のE[x]にあたる部分 double work [ ]; //データを入れる一次元配列(式のXにあたる) double a[][]; //共分散行列を入れる配列 work[0] = 3; //5つのデータを格納 work[1] = -2; work[2] = 5; work[3] = -3; work[4] = 2; for(i = 0; i < N; i++){   //E[x]を求めるためにxaveに全要素合計を入れる xave += work[i]; } xave /= N;        //全要素合計をデータ数で割る for(i = 0; i < N; i++){   //要素Xから平均を引く(X-E[x]にあたる) work[i] -= xave; } for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ a[i][j] = work[i]*work[j]/N;  //a[][]に値を格納 Nで割っているのは式の一番外側のEにあたる } } <実行結果> 0.0 | 0.0 | 0.0 | 0.0 | 0.0 0.0 | 4.0 | -6.0 | 8.0 | -8.0 0.0 | -6.0 | 9.0 | -12.0 | 12.0 0.0 | 8.0 | -12.0 | 16.0 | -16.0 0.0 | -8.0 | 12.0 | -16.0 | 16.0

専門家に質問してみよう