tag:blogger.com,1999:blog-5890424090566980639.post5629789178702442040..comments2024-03-08T08:31:48.565+09:00Comments on 色々と考えてみる: 文系のための「多次元データの要約」(1)Yu Fujimotohttp://www.blogger.com/profile/00522356224690770821noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-5890424090566980639.post-90287516942119041062013-03-29T00:21:20.069+09:002013-03-29T00:21:20.069+09:00これは、説明の仕方が悪かったかもしれません。
ここでは、「分散共分散行列」と「相関係数行列」の比較が...これは、説明の仕方が悪かったかもしれません。<br />ここでは、「分散共分散行列」と「相関係数行列」の比較が目的でした。<br />両者は、非常に密接な関係があるのです。<br /><br />重要なポイントは、元の行列「X」というのがあって、<br />これを「標準化(scale)」した行列が「Z」であるということ。<br />標準化について「文系のための「二変数の関係」(1)」で説明しています。<br />(http://cis-jp.blogspot.jp/2012/08/blog-post_22.html)<br /><br />要するに、平均が「0」で分散が「1」となるようにデータを整えることです。<br />形式手には、それぞれの値について、その値から「平均」を引いて「標準偏差」で割ります。<br /><br />全ての値について、平均を引くということは、全体としては基準を「0」にシフトすることであり、<br />さらに、シフトした値を標準偏差で基準化することで、標準偏差に対する割合に変換しているのです。<br />当然、割合なので、全てを合計するとバラツキの割合は「100%」。つまり、分散は「1」となります。<br /><br />ちょっと見にくいですが、標準化の式は以下の通りです。<br />以下では、行列Xにおける任意(i番目)の値「x_i」の標準化の場合です。<br />なお、標準化した任意(同じくi番目)の値を「z_i」、平均を「μ」とします。<br /><br />z_i = x_i - μ / σ<br /><br />さてさて、少し、話が逸れましたが、以上を踏まえた上で、<br />ご質問を頂いた内容に入りたいと思います。<br /><br />何が言いたいかと言うと、元の行列「X」の」「相関係数行列」である{cor(X)}と、<br />「標準化」した行列「Z」の「分散共分散行列」である{cov(Z)}は等しくなります。<br />つまり、以下のようになります。<br /><br />{cov(scale(X))} = {cov(Z)} = {cor(X)}<br /><br />結論を言うと、「元の行列」を「標準化」した行列の「分散共分散行列」は、<br />「元の行列」から直接的に導出した「相関係数行列」と等しいことを示しています。<br />大したことに見えないかもしれませんが、全ての値を1つずつ計算して相関係数を計算するよりも、<br />このように、行列を使って計算すると計算が極めてシンプルになります。<br />この辺りの恩恵は、色々とやっている内に少しずつ理解できると思います。<br /><br />文系分野の研究では安易に「相関係数」を用いている場合がありますが、<br />「分散」と「共分散」の考え方をよく理解しておくことが最も重要なことなのです。Yu Fujimotohttps://www.blogger.com/profile/00522356224690770821noreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-11301494078801251842013-03-28T23:41:49.152+09:002013-03-28T23:41:49.152+09:00そうですね。これもケアレスミスです。ご指摘の通りです。
修正しておきました。そうですね。これもケアレスミスです。ご指摘の通りです。<br />修正しておきました。Yu Fujimotohttps://www.blogger.com/profile/00522356224690770821noreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-33493368899701852382013-03-28T23:39:32.448+09:002013-03-28T23:39:32.448+09:00あっ...これは、ケアレスミスです。直すのを忘れていましたね。
正しくは、{i=1} になります。あっ...これは、ケアレスミスです。直すのを忘れていましたね。<br />正しくは、{i=1} になります。Yu Fujimotohttps://www.blogger.com/profile/00522356224690770821noreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-45285927680214968502013-03-27T15:47:08.998+09:002013-03-27T15:47:08.998+09:00以下の部分は、実行結果のコマンドが見本と異なりますが、同じ事ができるという
cov(Z)
は
Z...以下の部分は、実行結果のコマンドが見本と異なりますが、同じ事ができるという<br /><br /><br />cov(Z)<br />は<br />Z <- scale(X)<br />(t(Z) %*% Z)/(n-1)<br />と同じ結果を返す、ということでしょうか?<br /><br />qt.<br /># 共分散の計算。平均は0なので偏差行列は不要<br />(t(Z) %*% Z)/(n-1)<br /><br />実行結果は以下の通り。<br /><br />> cov(Z)<br /> Oroshi_Kg Taka Naka Yasu<br />Oroshi_Kg 1.0000000 -0.2981213 -0.4143816 -0.3617937<br />Taka -0.2981213 1.0000000 0.7950020 0.6038183<br />Naka -0.4143816 0.7950020 1.0000000 0.8704575<br />Yasu -0.3617937 0.6038183 0.8704575 1.0000000<br />unqt.<br />文系Anoreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-5998851167819935632013-03-27T15:27:19.898+09:002013-03-27T15:27:19.898+09:00以下のAnswer[2,1]は正しくはAnswer[2,2]でしょうか?
2行目の横ベクトル×2列...以下のAnswer[2,1]は正しくはAnswer[2,2]でしょうか?<br /><br />2行目の横ベクトル×2列目の縦ベクトル( ) ⇒ Answer[2, 1]<br />文系Anoreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-79789068639463811152013-03-27T11:22:17.484+09:002013-03-27T11:22:17.484+09:00そうでした。二乗でしたね。書き方が少し変わっただけで混乱してしまうとは、ちゃんと理解できていない証拠...そうでした。二乗でしたね。書き方が少し変わっただけで混乱してしまうとは、ちゃんと理解できていない証拠ですね。お恥ずかしい。ご説明ありがとうございます。<br /><br />ということは、"i=i"も正しいのですね。文系Anoreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-61223165763208252622013-03-26T20:08:02.026+09:002013-03-26T20:08:02.026+09:00文系Aさんから上記のような質問があったので、
誤解が少しでも軽減するように、
最初の分散の式を少し書...文系Aさんから上記のような質問があったので、<br />誤解が少しでも軽減するように、<br />最初の分散の式を少し書き換えました。Yu Fujimotohttps://www.blogger.com/profile/00522356224690770821noreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-80924586526259457382013-03-26T20:03:35.849+09:002013-03-26T20:03:35.849+09:00コメントありがとうございます。
[bar x - x_i]が二回あるのはこれは正しいのです。
直前...コメントありがとうございます。<br /><br />[bar x - x_i]が二回あるのはこれは正しいのです。<br />直前の文章に書いてありますがここでは「2乗」しているのです。<br /><br />小学校の算数では「x(かける)」の記号を書いていましたが、<br />ここでは、「x」の記号は省略しています。<br />ちなみに、「x」のかわりに「・」を使うこともあります。<br /><br />私も詳しくは知らないのですが、<br />このことに関しては、以下のようなサイトがありました。<br /><br />http://www004.upp.so-net.ne.jp/s_honma/symbolhistory.htm<br /><br />さて、2つ目の質問に関してですが、<br />これも、一つ目の質問に関係することです。<br /><br />[bar x - x_1] と [x_i - bar x]はどちらでも同じことになるので、<br /> どちらでも良いことになります。<br /><br />例として、以下のようなベクトルを考えてみます。<br /><br />x = {1, 3, 5, 7}<br /><br />まず、これの平均「[bar x]」は以下のようになります。<br /><br />[bar x] = (1 + 3 + 5 + 7) / 4 = 16/4 = 4<br /><br />ここで、いきなり分散[sigma^2]を計算したいところですが、<br />その前に基本的な事を一つ整理しておきたいと思います。<br /><br />そもそも、平均というのは、数を「平(たいら)に均(なら)す」ことです。<br />したがって、平均と各値との差の合計というのは、別の見方をすると、<br />それぞれの値の差が「全く無い」という言い方もできます。<br /><br />上記の場合、「4」が「4」つということなので、<br />平均だけで元のデータを表すと、以下のようになります。<br /><br />(4 + 4 + 4 + 4) / 4 = 16 / 4 = 4<br /><br />この時、各値と平均との差(偏差)の合計は以下のようになります。<br /><br />(4-4) + (4-4) + (4-4) + (4-4) = 0<br /><br />当たり前の事ですが、当然、合計は「0」になります。<br />では、元のベクトルの場合はどうなるのでしょうか?<br /><br />平均-元の値:(4-1) + (4-3) + (4-5) + (4-7) = (-3) + (-1) + (+1) + (+3) = 0<br />元の値-平均:(1-4) + (3-4) + (5-4) + (7-4) = (+3) + (+1) + (-1) + (-3) = 0<br /><br />結局、お互いの値のプラスとマイナスが打ち消し合ってしまい、<br />偏差の合計は常に「0」となってしまうのです。<br />実は、偏差の合計が「0」がなる部分が「平均」となっているのです。<br /><br />これでは、バラツキの大きさが解らないないのです。<br />これは困った...ということで、2乗してみると?<br /><br />平均-元の値:(4-1)^2 + (4-3)^2 + (4-5)^2 + (4-7)^2 = 9+ 1 + 1 + 9 = 20<br />元の値-平均:(1-4)^2 + (3-4)^2 + (5-4)^2 + (7-4)^2 = 9 + 1 + 1+ 9 = 20<br /><br />少しだけ、小学校の掛け算のルールを思い出して欲しいのですが、<br />掛け算には以下の様な性質がありました。<br /><br />(+) x (+) = (+)<br />(-) x (-) = (+)<br /><br />2乗するということは、元の値同士を書けることなので、<br />上記の何れかのルールが適用されることになるのですが、<br />結局、マイナスであろうが、プラスであろうが、2乗するとプラスになります。<br /><br />したがって、平均と元の値との差を足しあわせた合計と、<br />元の値から平均との差を足しあわせた合計は同じになります。<br /><br />これを一般的に「偏差」の「2乗(平方)」の「和」ということで<br />「偏差平方和」あるいは単に「平方和」と呼びます。<br /><br />おな、「偏差は基準(データの真ん中)から元の値までの距離」と考えると、<br />[bar x - x_i]と書いた方が、なんとなく、言葉の説明にあってるように思います。<br /><br />もちろん、「元の値から基準までの距離が偏差」と考えることもできるので、<br />[x_i - bar x] と書くと、そのようなニュアンスで理解することもできます。<br />計算結果は同じでも、書き方によって、説明の仕方も何となく変わります。Yu Fujimotohttps://www.blogger.com/profile/00522356224690770821noreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-64632963848059731032013-03-26T16:45:01.538+09:002013-03-26T16:45:01.538+09:00さらに同じ式で、"(\bar x - x_i"が2回あるのは正しいのでしょうか?...さらに同じ式で、"(\bar x - x_i"が2回あるのは正しいのでしょうか?また、この部分は"x_i - \bar x"が正しいのではないでしょうか?文系Anoreply@blogger.comtag:blogger.com,1999:blog-5890424090566980639.post-43466076040137584992013-03-26T16:28:29.590+09:002013-03-26T16:28:29.590+09:00「まずは、復習から。分散の計算は、以下の式で表すことができた。
本来は、二乗の形で表すが、共分散の式...「まずは、復習から。分散の計算は、以下の式で表すことができた。<br />本来は、二乗の形で表すが、共分散の式との比較のため、このように表す。」<br /><br />の下の式は、シグマの下が"i=i"になってますが?<br /><br /><br />\sigma^2=\frac{1}{n-1}\sum_{i=i}^{n}(\bar x - x_i)(\bar x - x_i)文系Anoreply@blogger.com