from 05.10.03
s.gif主成分分析(PCA)にトライして
   数式で挫折した君もここへおいでよ。
最終更新日 2005.10.10

第4章 数学オンチのための解釈指南


必要な因子だけより分けて
複数のメカニズムを
一気に整理してしまおう
検索エンジンから直接きたひとは、フレーム目次が便利です。ここは 章から入ります。
お急ぎで「主成分分析とは」を知りたい方は簡略版へどうぞ。
エクセルで層別散布図等高線図を描きたい人は(おまけ)へ。
WOW! 君の観察力と好奇心は尊敬に値する。もう、無いから探してもダメよ。

 主成分分析の用語説明

 基礎知識1 主成分ってなに?

主成分といえば、むずかしそうに聞こえる。sanpu1.gif

でももう君達は高校生のときに学校で教わっているのさ。
X軸とY軸の散布図を書いて、点々の真中ほどに直線を引いたろう?あれが第1主成分。
一番データの点々の広がった部分に直線を引いたはずだね。

第2主成分は、XとYの平均値(重心)を通って、第1主成分である直線に直角の線を引くと出来上がり。

主成分分析の計算過程を数学音痴向けに説明するね。

  1. 空中にまとまった点々があるから思い浮かべなさい。カトンボが空中を舞っている姿とか、子魚が群れをなして泳いでいる姿を思い浮かべるのじゃよ。
  2. 点々の分布が一番広がったところに、重心をとおってまず最初の直線を引きます。
    フランクフルト・ソーセージに棒をさすような感じかな。
    ハイこれで第1主成分軸完成。
  3. その直線の重心に垂直の平面を思い浮かべてね。子供の頃遊んだコマ等思い浮かべればよろしい。平面にたいして真上(あるいは真裏でも良い)から点々を見て一番広がった点々の所に平面状に第2主成分の線を引きます。平面は透明と考えてね。第1主成分と第2主成分の直角に交叉する直線が空間内にできたんだよ。
    ハイこれで第2主成分軸完成。
  4. 次に第1主成分と第2主成分のふたつに垂直な平面があるだろ?え?考えられないだって?あるの!人間は3次元でしか想像できないからここで行き詰まるけど、4次元以上の空間にはとにかく1次元、2次元のときと同じようにあるんだよ。
  5. 第3主成分以降もコンピューターは第1主成分、第2主成分で行った作業の繰り返しをするんだ。重心をとおる、一番広がった点々のところに線を引く作業をね。
  6. 因子の数だけ直線を引きます。主成分分析終わり。

いちばんデータが広がっている方向とは通常は真正面のケースが多いよね。 製図をやったことのある人には三角図の方向から見るといったほうがいいかな。

でも事はそういちがいには言えない。
長方形が空間に浮かんでいると、長辺方向の対角線に第1主成分、それと垂直に、短辺方向に第2主成分の軸が引かれる。短辺に平行にはならない。しかし、ひし形だと長い対角線方向に第1主成分、短い対角線方向に第2主成分の軸がひかれる。

いちばん直感的な理解方法は重心(全ての変数の平均値点)からいちばん遠い点のところにヒモをつけてぴんと張るときの方向が第1主成分軸かな。軸は必ず重心を通ると考えてイメージしてください。

計算では全てのデータの情報から割り出されるので、重心からの距離が短い場合でも点が緻密に集まっているとそちらに軸が寄っていきます。データのとり方の粗密によっても全体輪郭は同じでも簡単に軸の方向は変わります。
異常値は1点でも大きな情報をもっているので、そちらに主成分軸の方向がもっていかれます。 主成分分析では、個別のデータの情報がすべて反映されるから、異常値は、異常な執念で排除するようにしましょうね。

再現性のある軸方向を決めるには、均等なデータ取得の方法を規定する必要があります。

 

世の中には多変量解析がなんたらかんたらと、人を煙にまいている人たちがいる。

上の図のようにデータが分布しているとき、x軸方向とy軸方向だけに別々の特別の意味がありますとは言わないよね。
ところが、主成分分析で第1主成分と第2主成分の話を始めると、第1主成分軸方向と第2主成分軸方向だけに特別の意味がありますと説明する人が出てくる。

飛行機のように十字型にデータが分布していると、翼とか胴とかそれぞれの主成分の意味を説明出来るけれど、2次関数のような曲線上に分布したデータをふたつに分けられないだろ。

主成分が互いに別々のものかどうかの判断は、主成分スコアの散布図や生データの散布図などを駆使して、もひとつ技術的知識を総動員して主成分同士別々に扱うかどうか考えるべきものなんだ。

第1主成分と第2主成分とが完全に分けられるケースは少ないということはどこかで覚えておいてね。おしまい。

なになに、愛想がない?疲れているんだ。ほっといて。あ、そうか主成分スコアのことを話してなかったな。反応がない中で、人のためになると信じてやる作業ってむなしいものがあるなぁ。

(注)ちょっとかじったことのある神様予備軍の皆様へ
神様の中には「主成分は直交して互いに独立だから、第1主成分と第2主成分は全く関係ないものとして解釈する必要がある」という人もいるけど間違いだよ。
飛行機が推進しているとき、翼には抗力と揚力が発生する。対気速度が速くなれば連動して揚力と抗力が増加する。決して独立で動くわけではない。数学的に抗力と揚力は分けて考えられるが、関係ないものではないからね。 ベクトルを直交するふたつの効果部分に分けることを数学では独立だと言っているだけで、第1主成分と第2主成分が日常世界で使う「関係ない」という言葉で解釈をしてしまってはいけないよ。

どうもイメージが湧かないという人は、佐藤さんの作った Graph-R (フリーソフト)という3次元散布図で軸をくるくる回してみるといいよ。カラーで綺麗だし、プレゼンテーションにもお勧め!

 基礎知識2 主成分スコアってなに?

xが42、yが83という一組のデータを考えよう。データ・ナンバーは何でもいいけどとりあえず1。PCAscore.gif

これをx-y座標上では#1(42, 83)と表現するよね。

同じ#1も第1主成分と第2主成分の座標から見ると
#1(-1.3, -0.8)になる。これを第1主成分スコアは-1.3、第2主成分スコアは-0.8であるというのさ。

空間の中で点の位置は変わっていないことに注目してね。x-y座標で見ていた空間の点々を視点をかえると第1-第2主成分座標から見ていることになるんだよ。

主成分分析出力に主成分スコアがデータ数だけある意味がこれでわかるよね。点々の数だけあるんだ。

主成分スコアの計算には係数としての固有ベクトルが必要です。出力表の中にあっただろう?。
計算式を示すね。

主成分スコア=a×x+b×y+c×z+・・・・・

例えばこの場合では
-0.8=a×42+b×83 のような計算をする。

このときの係数、a,b,c・・・・を固有ベクトルというのさ。出力表から変数に対応する固有ベクトルを変数の係数にすればいい。原点が重心だから定数項は要らないぞ。

でも、はじめから主成分スコアは計算して出力されるから、この式はあまり使わないね。

主成分スコアを計算する場合というのは、新しい指標として「テキトーな名前のついた指標」を発表した後、「このケースはあの指標ではどれくらいの数値になりますかね」と聞かれたとき使います。
ためしに計算して確かめたい人は、x、yなど標準化した変数値を使用してください。その他のタコ人は信じればいいです。

主成分スコアどうしの散布図が、ピーターパンのように真正面から見た散布状態を見ているということがなんとなく理解できた?いちばん点々が広がって見えるところから見ていることになるんだよ。

 基礎知識3 因子負荷量ってなに?

相関係数を計算するとき、xとyのデータの組をたくさん集めて計算するだろ?

じゃあ、「主成分スコアとx」のデータの組、または「主成分スコアとy」のデータの組などで計算して出てきた相関係数の値をなんと呼ぶかな。

カンのいい君はすぐひらめいただろ?この相関係数こそ、因子負荷量そのものなのだよ。

そんなに難しい言葉を使わずに相関係数っていえばいいじゃんと私にやつあたりしない。名前を付けないと、区別できないだろ?

因子負荷量は、主成分に強い関係を持っている因子を選択するのに使われるんだよ。
もう一つは、因子を並べてメカニズムをフロー図に表すときにプラスマイナスの符号から作用する方向を示してくれるんだ。

a

ところで、一般的にふたつの因子xとyとが関係があるかどうか決めるのはどうするか。

相関係数は数値が大きいほど関係が強いといわれるよね。3組程度のデータでは相関係数を計算した所で、ばらつきの加減で逆の結果がでることだってあるんだ。だからデータ数が少ないと、関係があるといえる相関係数の値(絶対値だけど)はかなり大きい数値でないといけないんだ。
データの組数が多ければ多いほど、関係があるといえる相関係数(絶対値)の値は低くても関係があるといえるようになっているんだよ。

測定したデータの組数に対して、これ以上なら関係があるといえる相関係数値は、近似的にこの式で計算する。r_hyou.gif

括弧内の数値は統計で使用する危険率だよ。
0.10は君がふたつの因子には関係があると断定したときに、
100回に10回はウソをつくことになる程度の相関係数限度値だよ。

0.05は100回に5回くらいうそつきになる確率を示している。

一般に0.05くらいが結論を断定してもいいことになっているから、どうやって因子を選択したんだと追及されたときは、「危険率5%で因子負荷量値から選択されてきました」と堂々と答えよう。
世の中が100回に5回はウソをついてよいと認めているとは言っていないゾ。誤解なきように。

 

じゃあ、なぜ危険率10%も同時に選択すべき因子として取り込んでいるのか。

それは、主成分分析をするようなときっていうのは、因子間に関係があるかないかまだ分からないために実施するからさ。

うそつきといわれることを恐れて、安全側の判断だけしていると、微妙な領域の世界に目が向かない結果となってしまう。
つまり、クリエイティブな領域の研究には、身の安全ばっかり言っていると拾うべき因子の見落としがでるということなのさ。
だから、危険率10%で選択されてきた因子について報告書には、「危険率10%で選択されてきた因子であって、まだメカニズムに関係ないとは言い切れない存在」といった表現になるだろうね。

 

データ全体のメカニズムや対比グループの数がいくつになるかは、固有値から割り出されます。それが主成分の数です。主成分の中で、因子負荷量はもっとも重要な数値群になります。

  1. ある一つの主成分を頭におくとき、そのメカニズムに関係する観測データの因子群が、因子負荷量(の絶対値)から選択されます。
    重回帰分析の変数選択法は、多重共線性のためにもっとも関係する因子を排除しますから、排除した因子がもっとも重要な因子である場合があります。その意味で変数選択方法としては主成分分析のほうが優れています。また、主成分ごとの因子選択をする点で主成分分析のほうが情報としては使いやすいはずです。

  2. 因子負荷量のプラスマイナスの符号は、相関係数のプラスマイナスの符号の意味と同じ正の相関、負の相関を表します。因子負荷量の片方の変数は主成分スコアだから、ある観測因子の因子負荷量値はその因子がどの程度まで主成分(メカニズム)に関係しているかの程度を表しています。

  3. ある主成分のなかで選択されてきた因子負荷量行列の意味とは。
    因子負荷量行列の意味は、それぞれの観測データの 影響程度相関の方向 をもつため、ある主成分が示すメカニズムの数学的表現になっています。
    ただ、メカニズムの完全な表現には、観測データ間の 順序情報 が入っている必要がありますが、因子負荷量行列には通常、順序情報ははいっていません。順序情報は皆さんの常識、知識を加えてやる必要があります。
    ワンセットの変数群が経時的に測定されたばあいには、時間を主成分分析の変数にとり入れると、多次元の空間にグラフの方向がでてきます。カメハメ波みたいに、よりあわさった糸のビームがくねりながら空間内で動く姿でも思い出してください。主成分分析の変数の中に、対応する時間が入っていれば因子負荷量列は、正真正銘の数学的メカニズム表現となります。

  4. 因子負荷量の値がゼロに近づいたら、その因子が全く重要でなくなるかというとそうではありません。なぜなら、あるグループの観測データ群が数種の主成分と関係しているときには、因子負荷量値は低くなりがちなのです。
    たとえば、飛行機の尾翼は胴体方向の主成分を持ちますが、主翼方向と垂直方向の第2、第3の主成分を同時に持ちます。このような場合因子負荷量の値は小さくなりがち。
    実際に日本航空の垂直尾翼を失った飛行機は、制御できなくなり御巣鷹山に墜落しました。垂直尾翼の大きさが小さいからといって、とってしまうと飛行機の機能は制御不能になるのだから、まだまだ統計処理だけですべて説明できると考えちゃあいけません。技術的知識とともに考えるのが大事なのですよ。

  5. 因子負荷量行列に順序情報を数学的に取り込むことができれば、世の中に生じているメカニズムは瞬時に、厳密に計算できることになります。遺伝子の意味など計算機で割り出せるようになるでしょう。
    直感的には複素数を使えば、順序情報もあわせてあつかえそうだけど・・・・ 年老いたタコにはちょっとしんどいな。若い皆さんチャレンジしてみませんか?

 基礎知識4 固有値ってなに?

まず、予備知識をもとう。高校までの数学ではあまり教えないけれど、情報量の足し算は二乗で行います。たとえば、 A の大きさの情報と B の大きさの情報をあわせた情報 C の大きさは A + B にはなりません。

 A2 + B2 = C2

情報量の足し算は 2乗の和何か見覚えがあるよね。そうピタゴラスの定理。

理科の授業で斜面に石をおいたとき、斜面に垂直な矢印と、平行な矢印が描いてある絵を見たことがあるだろう?矢印の長さはベクトルと言いますが、斜面に質量 W の物体を置いたときの斜面へ与える影響を図示しています。

これも実際に自然の中で、情報量の足し算が二乗で行われている例です。
ふたつに分けたベクトルの長さ(情報量)は、決して W の長さをはさみでちょん切った長さにはなっていませんね。

情報量の足し算は、二乗で行うことは、基礎知識の一つとして覚えてください。

 

では、固有値とは。
個々のデータの主成分方向の情報量の総和から算出した(標準偏差)2のことです。

斜面の図の例でいうと、データが W 、斜面の平行方向の矢印が主成分方向の情報量にあたる。データはたくさんあるから、主成分方向の情報(主成分スコア)もたくさんあるよね。主成分スコアの標準偏差が計算できます。

ここで、主成分分析をするときに、「相関行列から」と「分散共分散行列から」とのどちらかを選んだことを思い出そう。相関係数を主成分分析に選んだときには、一つの因子(変数)の情報量(標準偏差)2 となるようにデータ変換されています。

例えば、最初のデータに7因子あれば、固有値全部を合計した値は7なんだ。

データの散布空間内で軸をグルグル回転させたときに、あたらしくできた軸のスコアは変わっても、全情報量は不変です。第1主成分軸に多くの情報量が取り込まれても、全主成分の情報量の総和は同じだから、この場合主成分軸に関して固有値の総和もまた7になります。

主成分方向に軸の向きを移動・回転させたときに、主成分方向の情報量が1より大きい数値だと、主成分が元の生データの因子一つに相当する以上の意味があるものになります。
もっとも情報量を集めたものが第1主成分です。

固有値が1より小さい主成分は、元の因子ひとつ分の情報量も持たない主成分ということで、重要ではない主成分として無視することが通常行われています。その最も重要な利用方法として、意味のある主成分の選択に固有値が使われているんだよ。

1より小さいからその主成分に意味が無いというわけではないけれど、小さい物を無視しても大勢に影響が無いはずだという意味で無視しているんだ。

芸術家のように、空間分布の微妙な凹凸を大事にする場合には、例えば「私は固有値0.4以上を主成分として選択します」ということもありうる。

もし、最初の情報を全て保持したいというのであれば、いくら固有値が小さくても全ての主成分を取り上げる必要があるんだよ。

固有値1以下を主成分として取り上げないというやり方は、通常行われていることだから安心してね。

どの主成分分析ソフトでも、固有値に続けて、寄与率と、累積寄与率が計算されてきます。
寄与率は、観測データの全情報量に対してどの程度の情報量を個々の主成分が集めたかを示す比率です。たとえば 3 種の観測データがあれば、固有値全体の情報量は3です。第1主成分の固有値が 2.85 であれば 2.85 / 3 = 0.95 が寄与率となります。

この場合には、第1主成分に95%の情報量が集まったんだね。残りの主成分群には5%しか情報量はないということだから、データの散布状態が枝や曲がりの少ない鉛筆のようになっていることが予想されます。

累積寄与率は、比率が大きい順番に固有値を足し算をした積算量を全情報量で割り算した比率になっています。自分が取り上げたいくつかの主成分はもとの全情報量の何割になっているかを示す指標です。取り上げた主成分でかなり説明できたかどうか判断するのです。

a

(注)ちょっとかじったことのある神様予備軍の皆様へ
固有値は、主成分スコアの分散値のこと。だから固有値には負の値は無い。分散値が大きいと言うことは、それだけその主成分が大きいベクトル成分をとりこんでいるということ。
相関係数を用いた主成分スコアは互いに直交する因子群。規準化した変数の分散は1だから、例えば7変数あれば、総分散は7、最大分散の方向を求める繰り返しで軸を決定してゆく主成分の総分散もまた、結果は座標軸の回転と同じ意味だから7になるよね。
主成分分析にカテゴリー・データを取り込む場合、計量値に準じて取り扱っている。
けしからんという人は、マハラノビス距離に分布しない関数関係の測定値に対して相関係数を計算するようなことは止めようね。測定法の検量線に相関係数を計算するなどやっちゃいけない方法になっちゃうよ。
数学は科学でえられたデータを人間に見えるようにする補助手段のときもあっていいんだよ。
人間は数学という手段も併用して、大自然を理解している。数学が全てに優先する思想には問題があると思うよ。
s.gif

 空に飛んだ二次関数のグラフ

s.gif
さあて、直感的に主成分分析を理解してみようか。

 

(場面展開) 高校時代の数学の授業の場

 

そもそも2次関数とは・・・・

ファーっ。zzzz

なつかしい高校校時代の夏休みに近い授業風景ですな。cloud.gif
2次関数のグラフが、青々とした空の入道雲のなかにとんでいけばどんなにかいいのに・・・・・

よろしい。飛ばしてみよう。
空に飛ばした二次関数のグラフが主成分スコアで本当に「真正面から見る二次関数」に見えるかどうかやってみようじゃないか。

ただ飛ばすのは面白くないから、同じ2次関数のグラフを所々切り取ったやつを飛ばして、どんな答えが出るかも見てみよう。

う〜ん、ロマンですなぁ。

  • データがグラフ全体に均等に分布しているもの
  • J型に分布したもの
  • 「り」の字に分布したもの
で行ってみようか。

データがグラフ全体に均等に分布しているもの

机の上には、y=1.5x+2の関数のグラフがあるよ。点々は7個。

#
1-315.5
2-28
3-13.5
402
513.5
628
7315.5
PCA01.gif
s.gif
そこに爽やかな風が吹いてきた。ヒラヒラ。

なんと、ある一瞬、 2x+3y-2z-24=0の平面上に紙が一致しちゃった。ちょっと無粋かな。そのときの状況はこんなかな。 私の場所から見ると点々はこんな場所にある

xyz
-23.164.661.7
-12.232.724.8
-5.414.13.8
-2.78.9-1.4
-4.216.99.1
-9.738.235.6
-19.472.877.8
PCA02.gif
s.gif

これを主成分分析して、主成分スコアの散布図で本当に2次関数に見えるの?

ほら見えたろう?横になっちゃったけど。PCA03.gif

横軸は第1主成分、縦軸は第2主成分。
本当に2次関数になってるね。
でもyのデータの方がxのデータより広がっていたから、y軸の方が第1主成分になっているね。

s.gif

 J型に分布したものグラフ

s.gif
次は、同じ y=1.5x+2 の2次関数ではあるけれど、xのデータの範囲がプラス側に偏っている事例だよ。おっ、気持ちいい風がきたぞ。

#
128
21.55.375
313.5
40.52.375
502
6-0.52.375
7-13.5
PCA04.gif
s.gif
ヒラヒラ〜。 なんと、ある一瞬、 先ほどと同じ 2x+3y-2z-24=0 の平面上に紙が一致しちゃった。

え?偶然だよ,偶然。エクセルの計算式を作り直すのが面倒くさいってことはいっさいないからね。
データを回転させて、多元方程式を解いてなんてちっとも嫌じゃないからね。

とにかく、ヒラヒラ。私の場所から見ると点々はこんな場所にある 。右には、途中をはしょって主成分スコアの散布図結果を出すね。

s.gif
xyz
-9.738.235.6
-6.425.920.4
-4.216.99.1
-2.911.21.9
-2.78.9-1.4
-3.69.8-0.8
-5.414.13.8
PCA05.gif
s.gif
主成分スコアの散布図は、Jカーブがかなり斜めになってしまったね。

同じ y=1.5x+2 の式にのるデータなのに、ちょっとデータが変わったら主成分の軸はずいぶん変わっちゃったね。

どうだい、主成分の線は重心(x、y、zそれぞれの平均値)を原点として、いちばん広がっている方向に線がひかれているだろう?

第2主成分スコア(縦軸)は1点だけ-0.4という数値が出ているけど、他はスコアとしては低い値だね。
だからJカーブの場合、第2主成分の固有値は低い。

我々は線が引いてあるから曲がって見えるけれどコンピューターは点々としか見ないから、第1主成分だけしか意味のあるメカニズムとして判断していないんだ。

このグラフを、ほぼ直線と判断しているんだね。もう少しデータ数が多くなれば、Jの先っぽのほうは第2主成分として検出されてくるはずだ。

欠測値や、異常値が入っていても、同じように主成分の値はずいぶん変わるんだよ。 データの分布が曲がっていたりするとデータを取る範囲で主成分軸はずいぶん変わるんだ。
データがある範囲だけ密にとられていたりすると、重心はそちらに移動してしまうから、主成分軸もその分だけ回転してしまう。
途中のデータが取られずに空間にふたつのグループが分布していれば、現実の関数関係とは関係なく、主成分軸は必ずグループのかたまりの中心に向かって引かれることになるんだよ。
だから主成分分析の報告にはデータ取得の方法や、試験範囲のデータなどが記録されていないとあまり再現性は期待できないゾ。

どのデータ範囲で議論していますってことをはっきりさせとかないといけないよ。

主成分分析で新しい指標を作っても、調査範囲外で主成分スコアを計算して指標を出したら、全く意味がないと考えるべきなんだよ。結構いいかげんに使われているけどね。

主成分指標を世間に一般化して使おうとするなら、巨大な調査をした後でおこなうのが正しい態度だよ。

 「り」の字に分布したもの

今度は、自分で主成分の線がどこあたりに引かれるか、予想してみて。

で、データは左側、そのときのxとyのグラフは右側。ちゃんと同じ式 y=1.5x+2 にのっているんだよ。真中が抜けているんだ。これを一応「り」の字にみてくれ。

《予想のヒント》
まず、xとyの平均値(重心)の点をグラフ上に置いて、次にそれを通る線を引く。目安は、いちばん広がっている方向に線を引いたとき、第1主成分、それと直角の線をひけば第2主成分だよ。

s.gif
#
1-315.5
2-2.511.375
3-28
402
50.52.375
613.5
71.55.375
PCA06.gif
s.gif

では開始。ヒラヒラ〜。 2x+3y-2z-24=0 の平面上に紙が一致しちゃった。ずいぶんはしょったけどいいよな。

君のいすから見た点々の座標データはもういらないね。いきなり、主成分スコアの散布図です。どう?予測したとおりだった?

このデータのような二つのグループに見える空間散布状態では、主成分分析すると、データをふたつのグループのかたまりとして対比的にとらえることを意味してるんだ。
もちろんグループ分けは、人間が目で見て分ける方法も、分類型の因子を入れておいて、因子負荷量から層別することも出来る。

この自由さがいいね。

主成分軸は、同じ原理(この例の場合二次関数 y=1.5x+2 )で動いているデータでも、少しデータが違うだけで360度回転するくらいめまぐるしく動いた。axis.gif

安定のない多変量解析法に見えるけれどそうではない。我々が取ったデータに忠実に回答しているだけなんだよ。
主成分分析が悪いのではなく、我々の採取したデータに客観性がないことを示していたと考えなければならないんだ。

どのような解析方法でも、無い情報は提示してこないし、異常値も正しい値とみなして計算し回答してくるのは同じなんだ。

主成分分析が、離れたデータに影響を受けやすい解析方法であるということが分かったね。主成分分析は一つ一つのデータに敏感な解析方法なんだ。
だから、異常値や、ヌル・データは出力結果を著しく信用できないものにする。異常値や欠測値を徹底的に排除しようね。

さらに、都合のよい一部分だけテストして全体が分かったみたいなことを言うと後で大恥をかくから気をつけてね。

テキトーなやつにはテキトーなデータを、キチンとしたデータならキチンとしたデータを出してくるから、人間がやっていることをそれなりに正直に回答しているだけだよ。

なんといっても主成分分析は、人間が考えたり想像できない4次元以上の世界のメカニズムを表示したり、因子を選択したりする素晴らしい機能がある。DNAの遺伝子機能の解析などポストゲノム研究にも役立つはずです。多次元の世界を教えてくれるよきパートナーなんだ。

 主成分回帰の話

正面から見ていることを説明しているからちょうどいいチャンスだね。主成分回帰の話をしておこう。

たとえば楕円の書いてある用紙が空中をヒラヒラ飛んでいるとしよう。あるときは真円に、あるときは直線に、そしてあるときは様々な形の楕円に見えるだろう。人間は、この紙の上に書いてある楕円の方程式を知りたいと思う。どうすればよいか?

主成分スコアを計算すれば、正面から見える形状を見せてくれるよね。正解は主成分スコアで回帰分析をすればよいのさ。主成分回帰とはこのような考え方で行われる。見る視点を変えたときという条件さえ考えなければ、主成分回帰だって普通の重回帰分析をしているのと同じなんだ。もう君達は第5章で関数式の当てはめをするときの注意は知っているよね。

そう。まずグラフを書いてみて、その回帰状態の散布図から当てはめる回帰式を考えればいいんだ。全自動でやる方法なんか怪しいもんだよ。少なくとも主成分回帰を使って学会発表するときなどは、ちゃんと主成分スコア同士の散布図の関数形状を確認をしてからやろうね。散布図では楕円になっていないのに楕円の関数を当てはめるようなあほなことはやっちゃいけません。

さらに他の注意点として、相関行列(単位のない比率データで行う)からはじめた主成分分析結果なのか、分散共分散行列(単位のある元データから行う)からはじめた主成分結果なのかで回帰式の意味が変わってくるから、よく注意するように。

え?直線でもない楕円が回帰で方程式ができるのかって?第5章に戻って勉強してから質問してね。出来るから。ヒントは x2 を変数 Xy2 を目的変数 Y と置き換えて Y=・・・・ の式に書き換えてみなよ。

楕円の式 : a22 + b22 = 1

 

主成分回帰分析の利用の場面を考えると次のような事例を考えることができます。

ある海域で魚種別に漁獲高が記録されているとします。温暖化のような時期には、毎年魚種の比率が少しずつ変化してゆきますから、多次元空間でのベクトルとしての空間散布点は、一本の曲線上に乗った変化が記録されてゆきます。

漁獲高に定量値としての年度を入れた主成分分析を行い、主成分スコア同士の散布図を作ればこのグラフを描くことができます。それは2次方程式や3次方程式、あるいは対数の方程式で近似可能です。主成分回帰を行うことで主成分間の関数式が出来上がります。なに、主成分スコアどうしで回帰式を作るだけ。
あとは、固有ベクトルと漁獲高などのもとの変数をいれた主成分計算式を、主成分間回帰式に代入すれば最初の変数間の関係式の出来上がり。

整理してできた式の係数から元の変数間の影響度の推定が可能となりますね。主成分分析に海水温平均値を変数に加えておけば、温暖化の影響を定量的に表現できますね。
このようなパラメータ比較で議論展開するとちょっと格好いいぞ。データのみえ方が変わってくるし。

主成分スコアの散布図から、「ある一定期間、主成分1の増加傾向があった」などとわかりますから、主成分分析の因子負荷量からその期間に影響している変数と、メカニズムを知ることができます。

事例は2章、主成分分析手順は3章にあるから見てね。

いままでなぜか誰もやったことがないのが、主成分スコアの3次元散布図。

って、もと変数の散布図を回転したものと同じだけど(3変数・分散共分散行列からのばあい)。4変数以上の主成分分析をして3主成分が意味のあるものとして選択されたら、主成分スコアの3次元散布図を最初に発表できるぞ。主成分回帰を重回帰分析でやれる。

s.gif

関数関係を知りたいという人には、主成分分析で関連因子の選択をした後に、重回帰分析することをお勧めする。主成分分析は、4次元以上の空間の分布をワンショットでも図形として見せてくれるから、それを頼りに当てはめる関数が判断できる。しかし主成分分析では曲線や曲面の関数の係数は算出してくれない。重回帰分析は計算上データ入力方法に色々な制約があるけれど、関数の係数を算出するのと、どれくらい一致したかを回答するのは得意だ。 物理や化学を専門とするなら、主成分分析と重回帰分析をセットにした解析手順を身につけておくと強いぞ。

s.gif

 解釈は元の生データから判断しよう

s.gif

解釈指南と言うくらいだから、良いことを書かなくては・・・・。

しかし、技術の分野は自然全体を相手にしているし、金融や人文科学の分野だって広大だ。

君たちが、悩んでいるのはきっと、因子負荷量、主成分スコアや主成分の意味がわからないだけだろう? でも、君たちは、元の生データをグラフ化したものなら、これまでにも解釈してきただろう。それなら簡単だよ。

生データのグラフか表にして判断できればいいんだろう?

生データの中から、第1主成分だけの特徴をもつ生データだけ取り出してグラフ化すれば他の主成分の影響が無いから、判断できるはず。

この方法を主成分層別法という。

理科の実験のとき三角フラスコにゴム栓をします。ゴム栓にガラス管を通すときにコルク・ボウラーという穴あけ器具を使いますね。金属の筒に先がギザギザになっているやつです。

主成分層別法はこのコルク・ボウラーで抜いたゴムを作るのに似ています。空間にゴム栓が浮いていれば中心軸が第1主成分軸になりますから、第1主成分軸に向かって穴をあけるのです。ボウラーの筒の中のゴムが第1主成分に関係するデータ。外側がその他の主成分となります。

飛行機なら、羽根をバッサリ取った胴体が第1主成分ですね。第2主成分軸は主翼方向です。主翼が第2主成分です。あれ?水平尾翼も第2主成分方向に伸びてますよね。水平尾翼は胴体の尻尾の方にあるから高い第1主成分スコアをもちます。でも同時に高くはないけれどそこそこの第2主成分スコアも同時に持っています。第3主成分方向は垂直尾翼だけですね。でも尻尾の方だから第1主成分スコアも高い。

空間のデータを、第1主成分だけ、第2主成分だけ、第1×第2主成分のもの、第1×第3主成分だけに分けると何を意味するでしょうか?
飛行機なら、胴体、主翼、水平尾翼、首位直尾翼がそれぞれ別々の物としてとりだすことができたわけです。こういう作業を行うのが、主成分層別法です。コルク・ボウラー法とでも名づけた方がインパクトがあったような気がする。

前の第3章、手順5「主成分層別のやり方と解析」に詳しく説明したから、左のメニューから飛んでみてね。
フォントの大きさは、「小」でちょうどよい大きさにしてあります。メニューから関数当てはめが見えないときには 表示>フォントの大きさ>小または最小 にしてみてください。

 

主成分分析には、カテゴリーデータと言われる分類型のデータや測定値や、順序データなどごちゃごちゃに入れて計算できる。対比的な特徴をもつグループを出してきてくれるから、主成分層別法で生データを層別しなおすんだ。
層別後の生データの表を見れば、その主成分に所属する分類型のデータが、1ばかりとか、0ばかりといったものになることがおおい。コンピューターがどの因子のことを指摘していたかはすぐにわかるよね。

変数が分類データだったらこのまま表を横にらみすればその主成分の意味することが見えてくる。変数が定量値だったら、変数同士で散布図を書けばその意味することはこれまでの判断方式と同じやり方で考えることができる。

幸いこの多変量解析ソフトでは結果をエクセルで返してくれるから、ソートはすぐに出来るよね。
え?やり方?エクセルではAZ↓(昇順で並べ替え) ZA↓(降順で並べ替え) というボタンを押せばソートできる。やり方を間違えやすいから、元に戻すボタンを直後に押せる心構えをしとくほうがいいね。

分類型の因子で0と1が混在している場合には、その因子で層別後の生データ表をソートしなおしてみよう。うんと見やすくなるよ。

主成分分析の解釈に慣れてきて因子負荷量データから読めるようになってくれば、1ばかりとか0ばかりの変数を外して、層別後の生データでもう一度主成分分析すれば自動的にグループごとのその特徴になる判断項目を提示してくれる。

計量値の場合には、層別された生データ表からグラフを作ればいいよね。今までと何にも変わらない判断のやりかたが通用する。事例2のことを言っています。

元のデータ全体の場合でも、層別抽出されたデータの場合でも、主成分に関与する因子間で3次元の散布図を作ると新しい事実が見えることが多いよ。でも3次元の単純な散布図では形状を見るのはむずかしいよね。俯瞰する角度が自由に動かせて、いちばん良く説明できる角度が直感的に選べる、伊藤さんの3次元バブル散布図がおススメです。
エクセルで層別散布図や等高線図(コンター)を描きたい人は(おまけ)へ。

 

え?
今まで、グラフを書いたことも、表からなにか読み取ったこともないって?
君にやる気があるのなら、高校の数学で関数がのっているテキストを買って勉強するといいよ。株価のトレンドと、業界情報を主成分分析で解析すれば、何か金儲けの秘策が発見できるかも知れないよ。頑張って。

s.gif

 質問など

 1 主成分分析と因子分析は何が違うの?

この質問は、定番の質問です。そしてあまり明解な答えを返す人がいないのも定番です。
このような質問をする人はもうタコ人じゃないから、数式抜きでもそれなりのレベルで回答せざるを得ないね。

この質問をする人の気持ちを察するに、多変量ソフトパッケージには、主成分分析と因子分析が並んでいて、説明にはどちらも因子なんて言葉がつかってある。どっちを使うか選択できないじゃないか。今まで習ってきた知識でも分かるように教えてよ。という声だろうね。
よろしい。まず、言葉のイメージだけで哲学論議するのは止めたほうがよい。

主成分分析を計算するときに次のことを行っています。

1 (測定値群)         空間に散布図をつくる
2 (軸の移動と回転)  散布のひろがりのあるところに直線をかく
3 (主成分スコア)    散布点からその軸に垂線を引く( = 射影する)
だから、主成分分析では座標軸を回転させて、散布点を回転後の軸からみえる値に換算しなおすだけです。適用するデータは、統計で求められる正規分布である必要はありません。

射影とは回転後の直交軸に垂線を下ろすことです。垂線が交わる直線上の値が主成分スコアです。(イラスト説明が必要なら簡略版へ)
主成分スコアを求めるには、原点の移動と軸の回転があるので、最初の測定変数全部を使った方程式が必要です。 もとの変数群にそれぞれ係数(重みまたはウエートともいいます)を掛け算して算出します。

原点が変わったため xy に共に換算係数を掛け算して新座標系にあわせないといけないんだ。主成分スコアは二次元の場合次の式で計算されるよね。

主成分スコア = ax + by

このときの 元の変数にかかる係数 a、b を固有ベクトルと呼んでいる。変数に掛け算する固有の換算係数という意味なんだ。

散布図の中にプロットした点の集中している部分に回転軸を寄せてゆくこの作業が主成分分析です。 すなわち主成分分析では測定値の多次元散布空間に主成分の軸が直線として出来上がります。そしてその直線を方程式であらわしたものが、主成分スコアです。

元の測定変数群から方程式でひとつの指標(主成分)を計算することから、主成分スコアの式の意味を次のような表現で説明することが一般的です。

合成変数をつくる。縮約する。総合指標を作る。総合化する。新たなファクターを導く。など。
ひろがりのあるところに軸を設定する特徴から次のような表現が出てきます。これは軸の移動と回転に当たります。
情報の損失なしに・・・。最も固有値情報を取り込む・・・。合成変量の分散の最大化・・・。
また主成分分析ではひとつの主成分( = ある軸)の取り込んだ分散和である固有値が1以下になると意味が少ないと無視する解析手順をとります。このため次の表現が出てきます。
少数の総合指標にする。縮約する。集約する。要約する。
主成分分析はフランクフルトソーセージに棒を挿すような、一番データの広がった所に主成分軸を設定してゆきます。このことで、因子を集約する方法と説明されるのが、主成分分析とはという質問への一般の説明となっています。

何も主成分分析は、巷で言われている、因子集約の方法だけではありません。

我々は観測データがグラフ上で線状に並んでいたら、 x と y とに相関があると考えます。同じように多次元の空間でも、点が線状に並べば幾つかの変数間には相関があると考えます。
この変数間に順序情報を加えると、メカニズムとなります。たとえば「 A が増加すれば B が減少し、最終的に C が発生する」といった関連の表現です。

このメカニズムにタイトルをつける行為が主成分軸の意味を考えることなのです。

主成分分析でもっとも重要な部分は、「算出される因子負荷量行列は、メカニズムの数学的表現である」ということを理解することです。そして、因子負荷量の絶対値の大きさで、関係の薄い変数を排除できますから、メカニズムに参加する役者としての因子が選択できるのです。

主成分分析は、複数のメカニズムが分離でき、それぞれの変数選択ができる方法です。

わがタコ国では主成分ごとにその主成分が意味するメカニズムを因子負荷量から説明出来るようにしています。このとき、影響度におうじて測定変数を取捨選択することができます。その手順は3章で説明しています。また、その理論は9章の相関方向分析で説明します。
主成分分析は重心にまで原点を移して、いちばん広く見えるところに軸を入れていくという作業で出来た新座標系の位置に観測データを換算しているだけ。誤差なんか考えていないし、たねも仕掛けも無いのさ。

データの採取方法が無計画でいびつだったときでも主成分計算はできるから、このようなときにはメカニズムではなくいびつさを検出することもあることを知っておいてください。

 

いっぽう因子分析は、最初にデータの構造を仮定してしまう統計的やり方なんだ。共通因子と誤差分である独自因子とを分けられると仮定して計算方法を組み立てたやり方です。

因子分析は最初に主成分分析で初期値を計算したりするし、空間で軸を回転して情報量を分配するという点では同じだから誤解が多い。「情報量を分配するのが同じなら同じ方法」というのなら、分散分析だって重回帰分析だって全ての統計の手法は同じという言い方になります。
収束の条件(情報分配の考え方)が異なっているから、主成分分析と因子分析は別物です。

だから、座標軸を移動・回転させて空間上の位置をその座標系に数値換算しただけの主成分分析とは違う方法だよ。

統計的にデータの構造を仮定するということは、観測データが正規分布するということを前提にするので、因子分析は全部の観測データが正規分布することを前提にしています。
だから、カテゴリーデータなどの処理は因子分析の場合いろいろ考える必要が出てきます。

この仮定を無視して因子分析を計算することはできるけれど、そういう場合には意味のない活動をしていることになるよ。
無い物をあるように言いたいときはいいかもしれないが。

測定データ (観測データともいう。ある生徒達のテストの点数など) にはなにか全生徒達に特別の共通因子 (生徒の頭のよさとか集中力など) がいくつかあると仮定するんだよ。共通因子の大きさを因子スコアというんだ。
それぞれの生徒の測定データ値は、因子スコアに対して、±1の範囲での何%かの重みをかけて、全ての共通因子×重みの数値を合計したものが、測定データにかなり近づくように決められる。

測定データと「共通因子×重みの数値を合計」のが誤差として扱われる。心理学から出発しているから、誤差とは言わず、独自因子などと称するようだ。まあ、分散分析などの誤差も取り上げた因子以外の独自因子群効果とは言えるけどね。

この重みの係数のことをを因子負荷量というのだよ。全体の誤差が一番少なくなるように、重みを計算で出そうとするんだけど、この因子負荷量も共通因子もどのように考えても正解というしろものだから、何かの規準をきめてコンピューター上で何回も計算してはどっちがいいかなーなんて判断しながら回答を絞っていくというやり方をとるんだ。
因子負荷量がおおきいということは相関係数が高いのとおなじだから、因子負荷量が0から離れる方向で何度も計算してはやり直しという作業をする。人手でこの計算をさせると、きっと助手も辞めていくことだろうから、コンピューター時代のやり方だね。

さて、因子分析はどのようなときに使うかの質問だよね。たとえば、子供達に共通の能力というものが確実に予見されるなどという確信があるときは因子分析は有効な方法だよ。その能力が国語の読解能力にも家庭科の能力にも野球の能力にも関係しているのならいいかも。
頭のいいやつのほうがスポーツも大成するって言うだろ?「頭のいい」という何かの共通因子が仮定できればいい方法さ。頭のいい程度を数値にできればいいよね。(個人的にはイヤじゃけど)
ボールのキレがいい、キレ味すっきり○○〇ビール、体のキレがいい、尿のキレがいいなどは、言葉が同じだけど共通の因子など仮定できないようだから因子分析はつかわないほうがいいかな。

(科学的姿勢)
言葉で勝負する人たちはこういう論理展開をする人が多いけどね。大辞典「〇〇」をひもとくとこう書いてあって、だからこう言えるといういいかたで議論する人たちは、因子分析も主成分分析でも因子を扱えることから同じ土俵で議論してしまうんだよね。
落語やコントなど言葉のあそびのときはいいけれど、真理探究には向かないね。

お釈迦様が弟子のアーナンダーに呼びかけたことばがある。「なあ、アーナンダーさんよ」。
このことを仏典には「南無 阿弥陀 仏」とかいてある。お釈迦様がアーナンダーさんにかたりかけた記録が仏典でもある。
推測や言葉の哲学的議論だけをやりつづけると南無阿弥陀仏に特別の意味を作り出し、ある宗教のように太陽が地球を回っていることになるし、ある種の統計信者のように因子分析と主成分分析はどちらがいいかなんて不思議な議論もでてくるな。

因子分析がはじめから使える状況というのは、はじめから因子モデルが仮定できるということだから、創造的分野というより、かなりその事実がわかってきている分野なんだ。
残念ながら人間の頭脳構造は、全てを予測して因子モデルを構築するようにはできていない。

いっぽうの主成分分析は、尺度や、分布や、直線性を深く考えずに済むから、未知分野でとりあえず最初に因子間の関連を眺めるのに適している。 それでも、因子分析でやりたいというひとは、なんか分からんが、とりあえず因子分析をしてみた結果をあれこれ考えることで、様々な仮説や考えるヒントがえられる。昔はこれを試行錯誤といっていたけど、今は前向きに探索的研究と言っているな。

取り合えずやってみることは、人間にとって必須の活動なのだよ。やってみなはれ。ただ、この段階で外部発表するのはやや問題あり。理由はまだ気づいた段階でしかないから。気づいた仮説を証明するには、どのような補助調査とか測定をしなければいけないか、調査計画を再設計する必要があるのが普通だ。良心的な調査会社は、まず小さい調査で大まかな仮説を立てた後に本調査を行う。

データをとりあえず因子分析にかけてみた結果、因子負荷量で何とか説明がついたからそれでいいというやりかたは、探索的とは言わないね。因子分析というヨロイをまとい、探索的という言葉で飾ってはいるけれど、手じかにあるデータの集計をしました、という程度の活動です。
よく因子分析の事例として、生徒の色々な科目の成績を解析した事例があるよね。もし学会発表するなら、例えばさらに道徳の試験成績を入れて同じ傾向の結果が得られるかどうかのチェック活動をすべきなんだ。え?ちゃんとやってるぞって?ごめんね。
入社したら、SPSSなど便利な統計計算ソフトがすでにあって、使い方を教えてくれる先輩がいるんで、分けわかんなくても因子分析も主成分分析も計算しちゃう事例が増えています。
時代のもたらす危機感ということで、許してね。

特に因子分析では、因子軸を回転させてもっとも中途半端さのない(0に近い値が少ない)因子負荷量を選択するようにしている。
言葉で考える人間にとって、これはとても理解しやすい条件なんだ。主成分分析では0.4とか0.5とかいった中途半端な因子負荷量が多くどのように説明してよいか分からないことが多いため、因子分析のほうを好む人たちが多い。しかし中途半端な因子負荷量は、他の主成分と切り離せない関係があることを教えてくれる重要な因子群なんだよ。
中途半端な因子負荷量の性質と取り扱い方を研究することが今後の研究の方向として重要になるはずです。

人間達は、この段階で決定的なことを忘れがちなんだ。因子分析で最初に仮定した構造式はそっちのけで、選択されてきた因子負荷量が分かれば、その解釈に走ってしまうという行動をとってしまう。大好きな言葉の遊びの世界で自分が参加できるからなんだ。
でもここが大事なんだけど、それではまだ因子分析をしているとはいえない段階なんだ。

主成分分析は、散布図上で人間のもっとも素直なやり方を軸の選択方法に使っている。すなわち楕円形に分布している場合には、フランクフルトソーセージの棒が挿される方向に軸を設定する。いちばん広がっている方向に線を引くという行動は人間のすなおなグラフ理解方法と一致している。
factoranalysis.gif

一方バリマックス回転などコンピューターに軸の方向は任せてしまって、算出される因子スコアは、最初の座標軸と直接1:1の関係ではなく、独自因子という誤差分を差し引かれた値なんだ。あいまいな値の因子負荷量がなくなったからといって、機械があいまいでなくなるように適当に誤差分を差し引いて算出したものなのだよ。

誤差分として適当に機械が差し引いたベクトルの中で因子負荷量を値をゼロか±1に近くするという規準というのは始めの座標で考えたときにどのような回転位置で止まっているのだろうか。独自因子分を差し引いているから単純な軸の回転ではありません。
う〜ん、考えれば考えるほど解釈困難になるな。因子負荷量は解釈しやすくなっても、因子分析本来の解釈は難しいのだよ。

因子負荷量だけで解釈する因子分析の大方の解釈方法なら、別に因子分析でなくても主成分分析で軸の回転を施し、もっとも中途半端でない(0に近い値が少ない)因子負荷量を選択するようにするほうがわかりやすい。マシンが設定した誤差分などないから、解釈は単純です。しかもそのスコアの空間分布は初めのままなのです。

因子分析をしていますというなら、その次の段階が因子分析なの。
因子分析の存在理由は、共通因子の発掘にある。因子スコアの推定まで行って初めて因子分析をしましたといえる。
構造式を指定するというのは、新しく発見できた因子は次に観測したときにも同じ大きさの値を示すということを仮定している。再現性が必要なんだ。
次回に観測したときにはなくなってしまうような因子は、因子分析で仮定されている因子ではありません。いくら「権威ある統計ソフトのSPSSで計算して出てきました」といっても、再現性がなければそこで計算された因子とはいったいなんだったのか、だれも解答が出せない。
因子分析で因子を発見しましたというときには、再現性のチェックが必ず要求されるんだよ。

いっぽう、主成分分析でも主成分を新しい集約された指標として主張する場合にも同じ再現性が要求されます。データの取る範囲や密度でころころ変わる主成分軸の方向のことはもう知っているよね。データの採取方法で軸がころころかわるという点は因子分析でも同じです。次回に同じ調査をしたら、軸の位置が全く変わってしまいましたということでは、その指標ってなんなの?という事になります。

因子スコアの大小は、現実のなかの現象を説明しているはずです。だから因子スコアは現実に起こっている測定値の大小を説明できなければならないんだ。それに加えて、何回調査しても同じ数値になるという再現性があることが示されなければならない。それが正しい研究成果というものだろ?

因子軸や主成分軸を再現性のあるものにするというテーマは、因子分析と主成分分析の方法の優劣の問題ではなく、調査計画や試験計画の網羅性、均質性など人間側のデータのとり方の問題になります。とくに因子分析には再現性を保つために、この網羅性、データの均質性は特に強く要求される事項となります。

 

しかし主成分分析を、ただの多次元の散布図として利用するときには、散布図の読み取りかたを示すだけだから、強く再現性を要求されることはありません。統計とは関係のないばあいでもグラフを学会報告で提出し、目で見てグラフから「経時的に増加しています」といったような解釈をするよね。ただの多次元の散布図として利用するときには従来どおりの「結果はこうだった」という程度の範囲での責任を持てばよいのです。

どちらかいうと、主成分分析は、仮定するモデルがなく、誤差など考えずに単純に回転させた軸からながめた多変量空間の散布図でしかないから、なんにでも適用しやすいという利点がある。
人間は4次元以上の空間の散布状態など想像もつかないんだから、主成分分析が教えてくれる情報から、人間用に情報翻訳するのが主成分分析の使い方といえる。二次元の散布図を使う感覚で、情報翻訳の手順に慣れればいいんだよ。

統計など知りたくもない一般の人達(決定権がある人が多い)に結果を伝えるには、プレゼンテーションとして2次元とか3次元グラフまでしか使えないんだから、どうしても最初の観測データから2次元の散布図をたくさん並べて説明することになる。そのときに主成分分析は必要な因子を指定してくれるから余計な散布図を作らなくて済むね。
それは見る人によけいな雑音をいれないということだし、その後の研究の混乱も減少できる条件になっているはずだよ。

全部の変数の組み合わせで散布図マトリックスをずらっとならべて仕事をしましたというのと、因子を選択した状態で意味のある因子群を散布図にするのでは、仕事の質がぜんぜん違うと思う。

多変量解析ソフトはどこの会社にもある時代になってきたし、神田さんのように無償で提供してくれる素晴らしい人もいる。いつでもデータはだせるから、無意味な統計報告も多くなっているよね。でもそれじゃあ、分からないコンプレックスはいつまでも消えないし、影で統計処理なんて何にも出来ないなんて意見を言うようになる。

真理の探究は楽しいことなんだ。誰も知らなかったことを自分の手で明らかに出来ることは、自分に誇りと自信と楽しみをもたらしてくれる。
本当は統計処理は色々な役に立つことが出来るのに、つかいこなせないだけなんだよ。
その証拠に、統計処理は何にもできないという人も平均値は使うよね。平均値が統計処理で基本の構造になっていることを知らないといっているようなもんです。

主成分分析は、多次元空間を覗くには必須の方法だと考えて下さいね。

 

 2 主成分層別法がうまくいかない

  1. ランダムな空間分布のために主成分があるとはいえない場合

    マニュアルどおりにやった結果、主成分層別法がとても使い物にならないと思うことが生じます。

    たとえば、血液型と血液型特長の関係を知ろうとして、アンケートをとるとします。 「周囲の人に細かく気を使う」とか「人には心を開く方である」といったようなアンケート項目の個人の回答と、その人の血液型とを一元表として主成分分析をすると、固有値が集中しないで、多くの主成分が選択されてきます。
    そして、主成分層別をしようとしても、多数の主成分にわたって特徴を示すデータばかりで、一つの主成分だけの特徴を示すデータが少なく、特徴を見ようとしても、表のデータが少なすぎるときが出ます。

    すなわち次のようなことです。

    • 複数の主成分グループを作っても、たくさんのグループが出来て、それぞれが数個のデータしかないから散布図なんてかけない。
    • 主成分スコアが複数の主成分の特徴をもつものばかりで分けられない。

    これはどのように考えればよいのでしょうか。

    まず、全データで主成分スコア同志の散布図を作り、そのばらつき具合を見てください。複数の主成分にわたって特徴を示す主成分スコアばかりが生じた場合、そのデータの空間分布はどの軸にも接近していない場所に存在することを示しています。

    円形や正方形に近い形状で均等にばらついていませんか?
    あるいは、すべての象限に散布点が均等にひろがっていませんか?

    データの空間分布が均等にランダムで偏った所がなければ、固有値が1近くで多くの主成分が検出されてきます。完全に超空間の球状であれば、全て固有値は1となり、全ての主成分が選択されてくることになります。 このような状況は空間形状に歪みがなく、主成分1近傍で選択されてきたとはいえ主成分として取り扱うべき性質は少ないという判断になります。新しいメカニズムが発見できるような空間分布状況ではありません。

    通常では有意な主成分を選択する基準として「固有値が1以上である」としています。しかし多くの主成分が固有値が1近傍で選抜されてきたのなら、空間分布は均等にランダムな状態であったことを疑う必要があります。
    血液型のアンケートでこういう状態になれば、固有値1近くで選択されてきたとはいえその主成分では血液型と性格はあまり関係があるとはいえないという結論を引き出さざるを得ません。

     

  2. データ数が少なすぎる場合

    また、散布形状はゆがんでいるように見えるのに、計算結果からは一つだけの主成分特徴を示すデータの組数が少ないときには、判断するにはデータ数が小さすぎると考えてください。
    人間は散布状態を判断するとき、過去の経験のどれにあたるだろうかと考えて無理に右上がり分布だとか右下がりだとか見ようとしがちです。

 

注)主成分の固有値が1近傍であるというのは「確からしいうわさ」程度
知りたい変数以外の変数同士の因子負荷量列の扱いはどうするか。
  • 固有値がほとんど 1 近くの主成分群ばかりで、その中に研究目的の変数がふくまれないときには、思い切って切り捨ててしまうことも見識の一つです。 ただし、一般にはこのようなケースは、調査数が足りなかった事例が多いことも念頭においておいて下さいね。
  • 高価な試験を行っているときには、当面は報告にはしないけれど、Unknown Mechanisms Database としてデータ採取条件と共に因子負荷量列の記録をしておくことを勧めます。たまたま取り上げた因子の中では読めなかった関係が、他の因子を加えて主成分分析すれば、重要なメカニズムかもしれないからです。 「あの時、あんな現象があったなぁ」という経験を増やすことができますから、何かの時のヒントとなります。
    これらの状況が、あったとしても、自分の知りたい変数が選ばれている主成分に関した「整理された因子負荷量列」を捨ててしまうのはもったいない行為です。とりあえず出てきた主成分分析結果からはこういうことが言えるということは解析すべきです。その情報は、次のテストで何を注目すべきかを示唆してくれるからです。
s.gif

 3 主成分分析結果が現実の印象と合わない

1. 外れ値による場合

たくさんの変数を主成分分析に取り込んで計算させると、異常値ではないけれどかなり差の激しい外れ値が入ってくることがあります。外れ値の外れ方が大きいと通常私達が生活の中で差があるとキャッチしている他の変数の変化程度を、パソコンのほうは相対的に無視できると判断して主成分に選択してこない状況が出てきます。そして第1主成分だけに因子が集中してゆく傾向が出ます。

第3章手順5-10でできる表は、外れ値を除外した表に該当します。この表で再度、主成分分析をすると、納得できる結果が得られるときがあります。主成分層別法の手順通りに行えば外れ値の取り扱いも考慮されています。

2. 欠測値・異常値の混入

入力した数値が異常ではありませんか?現実に合わないという印象のときに最も多いケースが測定値以外から持ち込んだデータを使ってそのまま主成分分析をしたときです。

とりあえず、データの散布状態を知るため、主成分スコア同士の散布図を作ってみて異常値を発見してみましょう。

3. 最適温度とか最適濃度などが存在する場合

グラフが上に凸とか下に凸の最適条件がある場合には、従属変数値が上昇するに連れてある領域では目的変数が上昇していたのにそれ以上の領域になると逆に低下する傾向になるというようなことは自然界では良く生じています。
いつも経験していることが、従属変数の上昇につれて目的変数が上昇する領域の辺りしか経験していない場合には、試験的に行う未体験ゾーンの現象を理解できないことがあります。

4. 新発見の場合

もし、入力値が観測した正確な値であって、主成分層別法で取得した表で主成分分析を再度行ってもまだ現実に合わないというのなら、それは大発見です。あなたの仮説(= 常識)を捨てて、データの意味するところを謙虚に解釈することを勧めます。現実と合わないと感じている状況は、その人の経験を超えた現象を判断する状況ですから、一人で考えずに、多くの階層の人に聞いてみるのが得策です。

特にアンケートなんかでは、常識や願望にとらわれてしまうことが多々あります。たとえば理想の結婚相手として、頭の中では「性格を重要視する人は心を大事にするから経済性は二の次」( = 調査側の願望)と考えがちですが、実際に調査すると現実的な判断をする人が多く、経済力があることと、性格がよいという項目を同じ人が同時に選択するものです。必ずいったんは謙虚にデータが主張していることを解釈してみることをお勧めします。

あなたの判断が正しい場合なら、「自分が指摘できない新しい視点」を示されたと考えれば仮説の弱点を補強できる新たな思考範囲が生まれますよ。

5. 少ないデータで判断している場合

主成分分析をおこなってみたら、世間常識と異なる結果が出たから主成分分析はあまり意味がないという人が世の中にいます。その人は知っているようで主成分分析を知らないのだと思います。
思考の方向が科学的ではありません。主成分分析は、データの空間散布にひろがりがある方向に必ず主成分軸を寄せてゆきます。

主成分分析が常識以外の結果になったなら、まず考えるべきは、データの散布状態が、本来散布すべき常識である方向とはべつの方向に広がっていたということを示します。主成分分析は、与えられた散布状態に正直に軸の方向を計算するだけですから、この場合考えるべきはデータ採取の密度の偏りや網羅性が欠けていたと人間側に原因を考えるのが一番です。

常識外の結果で一番多いのが、データの不足ではないでしょうか。普通のデータ採取であればそれでなくても第1主成分には常識的な結果しか出なくてうんざりするくらいなのです。自分に自信を持ちすぎるワナに陥らないようにしましょう。

s.gif
s.gif

 4 主成分の因子選択に相関分析を使っていますがあまり意味がないのじゃないですか?

相関分析の限界

一般に、統計を実務として扱ってきた先生ほど、相関分析で因子の関係があるとかないとかいう判断を嫌います。その理由は、相関分析で因子間に関係があるという結果でも、科学の分野で得られてきた結果と相反することがよくあったからです。そういう先生たちは、色々な講習会で「相関分析ではものを言っちゃいけないよ」と教えているくらいです。私の経験でもこの部分では先生たちの判断を支持します。

ではそういうことを知っていながら、主成分分析の中で主成分に関係する因子選択の方法として因子負荷量に対して相関分析の手法が取り入れられている理由はなんでしょうか。

 

1.偽相関からの不信

一つには、単相関の場合には、偽相関のケースが多くあるということです。何か他の因子と絡み合って、見かけ上相関がありますというケースが多くなります。
主成分分析は、多くの因子からメカニズムまで検出しますから、偽相関という概念がうすくなります。「うすくなる」という意味は取り上げた因子以外に直接の相関がある因子が他にあれば、偽相関はやはり出てきます。しかし、技術的に計画して選択された因子群に直接の因果関係をもつものがある確率は非常に高いでしょうから、一般には、因子負荷量を用いた相関分析には偽相関は少ないのです。

 

2.精度の上昇がある

さらに、観測データには誤差成分が入っていますが、一般に管理した因子以外の多変量因子の成分がデータの誤差として扱われます。

主成分分析には、多くの因子を同時に解析するから、相関分析では誤差として扱われていた情報量が取り上げた因子効果として扱われるようになります。(根拠は第8章情報量の性質を参照)

主成分分析のほうが単相関のときより誤差分が小さくなっています。
シグナルとノイズの比を S/N 比といいますが、 S/N 比が上昇するわけです。

主成分分析の場合には、相関分析の因子選択の精度が上昇しているのです。これまでの2変数だけの相関分析は信用しにくい方法だったのが、多変量の空間では有効な方法になるのです。実際の経験から、ただの相関分析のときより主成分分析での因子選択方法では科学的な知識と経験によくあっています。

s.gif
s.gif

 5 え?算出された主成分は二つなのに、3種類の性質の異なるグループがあるの?

主成分分析は、空間の中の散布状態で一番広がっている方向に軸を設定するだけです。ばらばらな散布状態を直線と考えると思っていただければよろしい。

しかし、実際には直線で散布することはまれで、いろいろな散布状態があるわけです。

たとえば、空間に平行な二本の直線が存在するときには、方向が同じですから一つの主成分として直線に平行に軸が設定されます。直線の間の巾は第2主成分となります。第2主成分スコアの絶対値は全部同じ値になりますね。

実際には第1主成分には2本の直線があるわけですから、第1主成分の中には二つのメカニズムがあるわけです。

というより、第1主成分と第2主成分の二つが組で、この空間分布は平行であると表現していると考えたほうが良いでしょう。

どうです。よく言われるような、主成分同士は全く別の物と解釈してはいけなかったでしょう?

 

第二章でタコ国に墜落した飛行機の事例で考えてみましょう。

第1主成分は胴体です。第2主成分は主翼でした。

しかし水平尾翼は、胴体の後ろについているから大きい第1主成分値を持ちます。同時に主翼方向にも伸びていますから第2主成分の性質を同時に持ちます。

垂直尾翼は第1主成分と第3主成分の性質をあわせもちます。飛行機のパーツは胴体、主翼、水平尾翼および垂直尾翼の4グループあるわけですが、主成分は軸の方向が3種類しかないので、第3主成分までしか検出されません。

第2主成分は、主翼と平行な水平尾翼があるので主翼と水平尾翼は同じ方向で広がっていると計算されているのです。
これを主翼と水平尾翼の2グループであると発見するにはどうするか?

主成分スコアをよく吟味するか、私のお勧めは主成分層別をしてグループ分けしてしまうことです。そして、必ずそれぞれのグループで、次のような確認作業をしましょう。

  • 各主成分で選択されてきた因子負荷量の中から強い影響をもつ3変数を選んで、3次元バブル散布図などで図形化する。単なる散布図でも良い。
  • カテゴリーデータなどなら層別された表から横にらみする。
  • レーダーチャートで特徴形状を見つけ出す。

因子負荷量の解釈だけ行っていると、垂直尾翼が上の方向だけしかないことが発見できません。実際の調査で、コンピューターが富裕層の主成分を算出してきたのに、ついていた符号がマイナスだったので貧困層の特徴を示すと発表してしまうことはよくあるミスです。主成分層別すると、どちらに偏った分布をしているかがわかります。

主成分分析の主成分は、いちばん広がった方向に軸を設定しただけなのです。実際のグループ数はもっと多いことがあります。中級編、第7章にはこのことを詳しく説明しています。この点を理解できるとかなり主成分分析の解析にたいして自信を持って報告できるようになります。

実務への影響力という視点で解析の重要さから考えると、主成分分析は、この主成分層別をするための前処理と考える方があっています。

6 因子負荷量散布図の使い方を教えてください

市販のソフトでは主成分分析を行うとかならず因子負荷量散布図が作られる。どうしてもほしいというのなら早狩 進さんの作成されたエクセル用のフリーソフトがある。わたしは使ったことがないのでコメントのしようがないか ら、お決まりの自己責任でお願いします。

早狩 進さん Excel97用アドイン名:主成分分析アドイン (PCA97.xla) Ver.1.7
http://www.jomon.ne.jp/~hayakari/PCA.htm
私には因子負荷量散布図の具体的利用法が良くわからない。もし3変量以上の多変量データで主成分分析をおこな ったばあいには、3主成分以上が選択されることもたびたび起こる。そんな中で第1主成分と第2主成分との2次元散布図でいろいろ議論しようとすることの意味は理解できないので、どなたか教えてください。

因子負荷量散布図は例外なく半径1の円が描かれています。主成分軸の近傍に分布する因子負荷量のばあいは、そ の値が0.5以上であれば*1、その主成分の特徴をあらわしている主たる変量であるといえます。しかしひょっ とすると図に示されない第3主成分の因子負荷量も同時に大きいかもしれません。そうすると、2軸上の散布図で 表現する意味がなくなってしまいます。

*1 正確にはデータの組数で変わります。n数が小さければより大きい因子負荷量数で判断する必要がありますし 、逆に小さければ、0.3くらいの数値でも同じ危険率で変量に意味をもたせることとなります。経験からは、n数が50を超えるなら、0.5以上の数値を選択するほうが理解しやすい判断が得られることが多いです。
因子負荷量どうしの比較をしたいという動機には2つあります。

1 主成分スコアの意味付けをする。

情報を集約して合成し新しい変量を作ったときにその変量に命名するという ことです。

2 メカニズムを分離し、それに関係する変量を選択してメカニズム図を作成する。

メカニズムを知るには因子負荷量値の大小(正確には絶対値の大小)を目安に、同時に動いている変量群を選択・抽出することが一番 の目的となります。その場合に主成分に対応した因子負荷量散布図の意味は、軸近傍に散布ずる変量グループを0 .5以上で○で囲んで選択するという行動になるでしょう。ただ因子負荷量散布図でこのような判断をおこなうと き、第3主成分以降の主成分を見落とすという欠点が出てしまいます。

この欠点を克服した方法があります。「タコでもわかる主成分分析」は、第3章で因子負荷量による変量抽出とメ カニズム推定方法を説明しています。この方法は因子負荷量散布図の思想を3軸以上の主成分でも取り扱えるよう にした、一般化した方法です。また出来上がる図的表現はそのまま研究報告に利用できる表現となっていますので 、因子負荷量の散布図を使うより優れた方法です。

ただ、因子負荷量散布図で軸近傍に散布しない変量群は、今後の研究では主成分分析のさらなる利用方法を生み出 す可能性のある部分です。その理由は第1主成分と第2主成分の性質をともに持っているという特徴を有した変量 群ですから、研究を深めれば二つのメカニズムの接点となる変量群を、計算から合理的に選択できる可能性を持っ ているからです。この場合には、当然データの分布が多変量正規分布しているとは考えにくいはずという前提が入って きます。

s.gif
s.gif
次はおまけ。主成分層別したら近似式が求めたくなるよね。s.gif回帰と関数のあてはめ方法へ
フレーム構成なら目次つきで見やすいです。 ≫ フレームへ

  第3章へ s.gifyatop.gif おまけ  yaright.gif
上へ