• 締切済み

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

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

みんなの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

共分散 covariance。分野によって、例えば信号処理における使い方と、因子分析における使い方ではちょっと重点が違いますので、何に使うのか補足お願いします。 だいたいの所を申し上げれば.... サンプルi=1,2,.....,N(学生N人)のそれぞれについて、項目j=1,2,....,M(科目M種類)の測定(学力テスト)を行ったとします。これをN行M列の得点行列Aijで表します。Aij = サンプルiの項目jに関する測定値。 各項目jごとに、平均mj(平均点)を求めこれを引き去ります。つまり、 Bij = (Aij - mj ) これで、N行M列の行列Bijは各項目毎に平均0になっています。 共分散行列(の推定値)は V = (B' B )/N ('は転置) です。対角成分は項目jの分散で、平方根を取れば標準偏差ですね。非対角成分を共分散と言います。

hiroshikun
質問者

お礼

ありがとうございました。 これでレポートがかけます 助かりました

関連するQ&A

  • 分散共分散行列

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

  • 分散共分散行列とは?

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

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

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

  • 共分散行列用データ

    共分散行列用データ 共分散行列を使わなければならない前提があるとして、そのデータを任意に作らなければならないのですが、どのように作成したらよいかが全く解りません。 書籍やHPの紹介でも良いので、宜しく御願い致します。

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

    以下の行列を考えます. 行列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

  • 分散共分散行列と相関係数行列との違い

    分散共分散行列と相関係数行列との違いがわかりません。 どなたかご存知の方がおりましたら、教えていただきたくお願いします。

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

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

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

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

  • 分散共分散行列を簡単に手っ取り早く求めたい

    株価データを使ってポートフォリオの収益率の分散を求めようとしています。(エクセルを使ってます)その過程で分散共分散行列が必要です。 個別銘柄を50社選び、それぞれの銘柄の月次終値を5年分用意し、それら変化率を求めました。〔(終値t+1)-(終値t)〕÷(終値t)のような感じで変化率を出しました。次にエクセルの共分散を求める関数COVARを使い、共分散を一つ一つ計算しようと思ったんですが、さすがに50社もあるのでできません。 楽に分散共分散行列を求められる方法はないのでしょうか。 また、数学は苦手ですし、プログラミングもやったことすらありませんので、簡単に求められる方法を教えてください。お願いします。