• 締切済み

行列の平方和とは?

初歩的な質問でお恥ずかしいのですが・・・。 行列Xと、負荷量ベクトルpがあります。 Xの各要素は標準化されています。 内積(p, p)、つまり、t(p)*pを、行列Xの平方和SS(X)で割ることによって寄与率を求める、 という記述に出会ったのですが、どうも腑に落ちません。 ここで、t(p)はpの転置ベクトルという意味で用いています。 t(p)*pがスカラーになるのはわかります。 しかし、SS(X)については、もしXがn行×m列の行列だった場合、 SS(X)=t(X)*Xで、n行×n列の行列になります。(よね?) スカラーを行列で割るというのがわからず、おそらく何か誤解をしているのだと思います。 それとも、行列Xの平方和SS(X)とは、t(X)*Xの主対角要素の和のことをいっているのでしょうか? もしそうだとすれば、Xは標準化されているため、tr(t(X)*X)=nとなり、 寄与率はt(p)*p/nで求められることになり、すっきりと理解できるのですが・・・。 付け焼き刃で勉強する不届きな文系人間に、どなたか説明していただけないでしょうか? お手数をおかけしますが、よろしくお願いいたします。

みんなの回答

  • at9_am
  • ベストアンサー率40% (1540/3760)
回答No.1

すいませんが、どこか間違っているのではありませんか? 特に > 寄与率はt(p)*p/nで求められることになり、すっきりと理解できるのですが・・・。 とありますが、p は付加量ベクトルですよね? その二乗和を n で割っても、寄与率になりませんよ。それに X がいかなるものであっても寄与率が付加量ベクトルのみで書かれるのはおかしいですよね。 おそらく前後に、何の何に対する寄与率か、等という説明があると思いますので、そちらを見なければ何とも言えないのですが、通常の意味では、寄与率とは全体の変動のうち特定の項目の変動の割合の事です。しかし、 > 内積(p, p)、つまり、t(p)*pを、行列Xの平方和SS(X)で割ることによって寄与率を求める、 という計算ですと、おそらく t(p)p を t(X)X の第 kk 要素で割った物が第 k 要素の寄与率であると主張している物と思われますが、二乗和を二乗和で割る事になるので、寄与率にはなりません。 特に p の定義(縦ベクトルか横ベクトルか)、寄与率の定義(何の何に対する寄与率か)に関しては前後を読み直す必要があるかも知れません。 通常の意味合いでの寄与率は、次のような形になります。 X が n×m の行列であるとします。つまり |x_11, ... , x1m| |...............| |x_n1, ... , x_nm| という行列です。この行列に後ろから p (m×1)をかけてやると、Xp という n×1 のベクトルになります。つまり Xp は、第 i 要素に X の第 i 行の加重和を持つベクトルになります。 この定義からすると、寄与率とは、第 j 列の要素の変動が全体の変動のどれだけにあたるかを示す数値になります。ここで言う全体の変化量とは t(e) = [1, ... , 1] とした場合、t(e)Xp で表すことができます。一方、第 k 列だけの変化量は、第 k 要素に 1 を持つ t(d_k) = [0, ... 0, 1, 0, ...,0] とおくと、t(d_k)Xp で表すことができます。したがって第 k 列の寄与率は t(d_k)Xp / t(e)Xp になるはずです。 したがって、X の第 k 列の和に付加を掛けたものを全ての列の平均の加重和で割った物が寄与率になります。

参考URL:
http://www.pref.saitama.lg.jp/A01/BP00/faq/q24.html

関連するQ&A