Hatena::ブログ(Diary)

小人さんの妄想 このページをアンテナに追加 RSSフィード Twitter

2013-12-02

平方和分解の秘密

2ヶ月間ブログ更新をサボりました。

その間何をしていたかというと、統計についての本を書いていました。

アニモ出版社様より統計データをすぐに分析できる本」というタイトルで出版されます。

内容はタイトルの通り、ジャンルはビジネス書です。学術書ではありません。

実際に本屋さんに出回るのは来年になる予定です年内になります。

この2カ月間、ブログに投入していたパワーを全部この本につぎ込みました。

その間、ブログコメントの返事をはじめ、あちこちへの返答を放りっぱなしにしていてすいません。

どうやら自分の書く出力に上限があることが分かりました。この状態は、今年いっぱい続く見込みです。


さて、今回のお題は「なぜ、平方和分解が成り立つのか」についてです。

これはもともと上の本に含めるはずだったのですが、話の流れ上不要になったのでカットした部分です。

そのまま捨ててしまうのも勿体ないので、以下に廃品利用します。


平方和分解とは、データのばらつきに関する公式の1つです。

ばらつきのあるデータを複数のグループに分けたとき、

 (全体の偏差平方和) = (グループ間の偏差平方和) + (グループ内の偏差平方和)

といった関係が成り立ちます。この関係が、分散分析の基礎となっています。

f:id:rikunora:20131202234605p:image

上記は「よくわかる多変量解析の基本と仕組み」という本から抜粋したものです。

なぜ、このような分解が成り立つのでしょうか?

本には数式による証明が書いてあるのですが、どうも直観的に納得がゆきません。


改めて平方和分解の式を見て下さい。

 (全体の偏差平方和) = (グループ間の偏差平方和) + (グループ内の偏差平方和)

これって何に似ているかと言うと、ピタゴラスの定理にそっくりです。

  c^2 = a^2 + b^2

実は、平方和分解の本質は、ピタゴラスの定理を多次元に拡張したものなのです。

2乗の和が分解できるときには、どこかに必ず直角三角形が潜んでいます。

データの数をうんと少なくして3個に絞れば、直角三角形を直接絵にすることができます。


※ 12/11 以下の記述は不正確でした。正しいものに差し替えました。

※ T_NAKAさん、コメントありがとうございます!

いま、A,B,C の3個のデータがあったとして、Aをグループ1に、BとCをグループ2に分けたとしましょう。

f:id:rikunora:20131211044038p:image

A,B,C3個のデータの平均値からの偏差 a, b, c を、3次元空間のX軸,Y軸,Z軸上にプロットします。

すると、上の図の右側のような絵になります。

X軸,Y軸,Z軸と言うより、A軸,B軸,C軸と言った方が分かりやすいかもしれません。

この右側の絵で色を付けた部分が「直角三角形」であり、

この「直角三角形」の上で成り立っているピタゴラスの定理が平方和分解の正体です。


なぜ、b^2 + c^2(オレンジ色の線)と、a(緑色の線)が直角に交わるのでしょうか。

それは、グループ内の変動と、グループ間の変動が「直交している」

〜 互いに相手に直接影響を及ぼさない関係になっているからです。

例えばグループ2の中で、BとCを、平均値を変えないまま変動させたとしても、

その変動はグループ2の中だけで完結し、グループ1には伝わらないでしょう。

グループ1から見た場合、影響が及ぶのはグループ2の平均値だけなのです。

グループ2の内部にどんな変動があろうとも、平均値が変わらない限り、

グループ1は知ったこっちゃないわけです。

変動が互いに影響を及ぼさないこと 〜 それが「直交する」ということの意味です。

そして、直交あるところにピタゴラスの定理が成立する、それが即ち平方和分解ということです。


参考までに、Aがちょうど平均値に等しくなった場合の図を付け加えます。

f:id:rikunora:20131202234754p:image

この場合、直角三角形がぺったんこに潰れてしまうので、かえって意味が分かり難いかもしれません。

このぺったんこに潰れた図から出発して、少しずつAの位置を平均値からずらしてゆけば、

データ変動が「直交する」様子がイメージできるものと思います。


データが4個以上になると4次元なので、普通の直角三角形を描くことはできません。

それでも「直交する」性質は残っているはずなので、努力と根性で何とかイメージしてください。

ではでは。


まず、平方和分解とはどのような計算なのか、具体的な数値データで確かめてみましょう。

* 少数データ2グループの平方和分解の様子 (Excelファイル)

http://brownian.motion.ne.jp/memo/SSSample.xlsx


以下は、2グループに2データずつの場合の様子です。

f:id:rikunora:20131211042939p:image

 全変動 = 50

 グループ内変動の和 = 34

 全変動 - グループ内変動の和 = 16

 一方、グループ間変動 = 8

ですから、グループ間変動 8 × データ数 2 = 16

となり、確かに平方和分解が成り立っています。


次に、データが3つの場合について計算してみましょう。

f:id:rikunora:20131211043016p:image

 全変動 = 38

 グループ内変動の和 = 32

 全変動 - グループ内変動の和 = 6

 一方、グループ間変動 = 4.5

なので、グループ間変動 4.5 × (4/3) = 6 ?!

この場合、平方和分解を成り立たせるには、データ数に相当する箇所に

謎のファクター (4/3) という数字をあてはめなければなりません。

この (4/3) という数字は何処から出てきたのか。

それを知るためには、先に「回帰分析におけるピタゴラスの定理」を見ておく必要があります。

直線による回帰分析では、次の等式が成り立ちます。

  (全データの平方和)=(予測値の平方和)+(残差の平方和)

平方和の意味をデータの変動のことだと解釈すれば、決定係数とは「全データ変動のうち、どれだけを予測値の変動が占めているか」であると見なせるでしょう。上の等式のように、データ変動を平方和に分解することを「平方和分解」と言います。では、なぜ平方和分解が成り立つのか。そのカラクリは、実はピタゴラスの定理によって理解できるのです。

話を簡単にするため、平面上に3個のデータA,B,Cがあるものとします。3個のデータの、平均値からの偏差をそれぞれa, b, cとします。また、平均値と予測値の差をそれぞれa^, b^, c^ としましょう。

f:id:rikunora:20131211043102p:image

この a, b, c と a^, b^, c^ を、以下のような平均値を原点とする3次元のグラフに描いてみます。

f:id:rikunora:20131211043137p:image

この3次元グラフの軸は、それぞれデータAの値、Bの値、Cの値を意味します。3次元グラフの上で、平均値、予測値、実データの3点を結んで三角形を作ると、予測値の頂点に相当する角は直角になります。なぜなら、残差には予測値の成分が全く含まれていないからです。あるいは、残差の長さが最も短くなるように予測値を決めた結果、角度が直角になったのだ、とも言えます。この直角三角形の上にピタゴラスの定理を当てはめれば、

  (全データの平方和)=(予測値の平方和)+(残差の平方和)

が成り立ちます。

「回帰分析におけるピタゴラスの定理」の本質は、予測値と残差が直行することにあります。

平均値→予測値ベクトルと、予測値→実データベクトルが直行するので、平方和分解が成り立つわけです。

※ ちなみに、上の囲みの部分が本から削り取ったボツ原稿です。

※ 一応、言い訳しておかないと本の売り上げに響きそうなので (^^;)


さて、上の回帰分析のピタゴラスの定理を、分散分析にあてはめるには、一工夫必要です。

f:id:rikunora:20131211043215p:image

この図は、データが3つの場合の、回帰直線と、グループ内平方和、グループ間平方和の関係を表したものです。

回帰直線は、ちょうど全データの平均点を通ります。

全データの平均点は、Aと、B+Cの平均を 2:1 に内分した点です。

図から三角形の相似を使って、

 ・予測値の平方和を求めると、a^ ^2 + b^ ^2 + c^ ^2 = 3/2 a^ となります。

 ・グループ間平方和を求めると、(2/3 a^)^2 + (2/3 a^)^2 = 8/9 a^ となります。

 ・予測値の平方和 -> グループ間平方和 に変換するには、(8/9 a^) ÷ (3/2 a^) = (4/3)

これが、上に示した謎のファクター (4/3) の正体です。


結局とのところ、「直角三角形」の概念は回帰分析の中にあったのです。

分散分析の図形的な理解は、安直に思った以上に複雑でした。あしからず。


※ 12/03 追加.「入門 多変量解析の実際」という本に、以下の図が載っていました。

f:id:rikunora:20131203133414p:image

この図は重回帰分析における予測値と残差の関係を表したものです。

この直角三角形こそが、分散分析の本質を突いたものだと私は思っています。

このように、原データ全体に依存していた分散Vyを、モデルで説明できる部分Vy^と、

説明しそこねた部分Veとに分解する、というロジックは、さまざまな統計解析に極めて広く出てくるものである。

広い意味では「分散分析の理論」といってもよいだろう。

入門 多変量解析の実際 第2版 (KS理工学専門書)

入門 多変量解析の実際 第2版 (KS理工学専門書)

アトムアトム 2013/12/08 11:51 新しい本がでるんですね、楽しみにしています。
今回の記事に関してですが、数式がなく誤解している可能性もありますが
気がついた点をコメントします。誤解だったらすみません。

偏差平飽和がグループ内の平方和とグループ間の平方和に分解されるのって、
力学で現れる慣性モーメントや回転のエネルギーの分解と似ていますね。
おそくら、全く対応しているのではないかと思いました.
慣性モーメント=2次モーメントなので,以下2次モーメントで対応を
上げますが、

重心 〜 平均値
重心の周りの2次モーメント = 偏差平方和

と考えると対応しているのだと思います。数式を書いて対応を説明したい
と思いましたが、余白が足りないので説明は割愛します(笑)

T_NAKAT_NAKA 2013/12/09 13:56 どうもその三角形のイメージが上手くつかめません。。
平均 m=(A+B+C)/3 とすると、
全体の偏差平方和=(A-m)^2+(B-m)^2+(C-m)^2=a^2+b^2+c^2
グループ間の偏差平方和=(A-m)^2+2×[{(B+C)/2}-m]^2=a^2+2×{(b-c)/2}^2
グループ内の偏差平方和=(A-A)^2+[B-{(B+C)/2}]^2+[C-{(B+C)/2}]^2=2×{(b+c)/2}^2
なので、

 (全体の偏差平方和) = (グループ間の偏差平方和) + (グループ内の偏差平方和)

という関係は上の例では

 a^2+b^2+c^2 = [a^2+2×{(b-c)/2}^2]+[2×{(b+c)/2}^2] 

という分解になるので、上図の三角形でのピタゴラスの定理とは上手く合致しないと思うのです。

rikunorarikunora 2013/12/11 13:25 T_NAKAさん、ご指摘の通りです。
最初に安直に考えた上の直角三角形は正しくありませんでした。
反省。考え直し、記事を差し替えました。

アトムさん、鋭いところを付いているのではないかと。
正に、一次モーメント=平均、二次モーメント=分散です。
統計にはよくモーメントや、モーメント母関数といった概念が出てくるのですが、元を正せば物理のモーメントから借用したものだと思っています。

初学者初学者 2014/05/30 02:55 質問です。
「統計データ‥」を購入しました。p179に関して、まず主成分分析や因子分析をしてからその結果を多変量解析に用いると記載されています。この時説明変量側は分かるのですが目的変量側はどうすればよいでしょうか?事前に説明変量側で主成分分析を行った場合は主成分の各変量で一次結合を作ればよいような気がしますが、因子分析の場合は見当が付きません。よろしくお願い申し上げます。

rikunorarikunora 2014/05/30 11:09 ありがとうございます! そして、舌足らずの説明ですいません。

結論から言いますと、目的変量側は何もいじりません。
目的変数については、最初に売上なら売上、アクセス数ならアクセス数と決めたなら、最後まで変わることはありません。
この本での主成分分析、因子分析の主旨は、説明変量を整理する方法です。
続く回帰分析では、
(目的変量) = f(主成分得点)
あるいは
(目的変量) = f(因子得点)
という形で分析を進めます。

特に因子分析の結果については、
 「その、因子に付いている回帰係数の数字は結局何を表しているの?」
という質問をよく受けます。
当初の説明変量と、因子の間が直接結びつかないので、何とも歯がゆい気持ちになるのでしょう。

主成分分析の場合には、説明変量の一次結合を作れば、
(当初の説明変量) -> (一次結合した主成分) -> (目的変量)
という全容を見渡すことができます。

実は因子分析であっても、説明変量の一次結合を作ることは理屈の上では可能です。
因子分析には「回転」という処理が入りますが、その回転行列の中身は実は一次式(線形)ですから、
とにかく一次結合で表すことができます。(斜行回転であってもやはり一次式です。)
(当初の説明変量) -> (一次結合した因子) -> (回転後の因子) -> (目的変量)
ということは、因子分析の複雑な処理も、長い一次結合で表せるはずで、
その長い式を書き下せば、全容を見渡すことはできるはずです。

実際にその長い式を書き下したことは、私自身もありません。
手持ちの統計ソフトで回転行列を直接取り出す方法を知らないからです。
一度は手計算でも良いから長い式に書いてみると、スッキリするかもしれません。

初学者初学者 2014/06/09 07:19 丁寧なご説明をありがとうございました。参考にして自習し、分析のイメージを大体つかむことができました。因子分析の場合、各因子得点だけを説明変量にしても良いし、それと元の変量との差から得た独自因子の和を新たな一つの説明変量にする事ができそうな気がします。でも得られる結論は大差無いのかもしれません。本当に勉強になりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rikunora/20131202/p1
リンク元