多変量解析の前に相関行列を見よう

 Excelのピボットテーブルでクロス集計から統計解析まででも書いたが,統計解析の醍醐味は多変量解析にある.単変量解析では変数間の交絡の可能性が否定できず,重要なポイントを見落とすことがある.

 統計の専門家ではないので完全に我流の方法であるが,多変量解析における変数選択の参考になるかと思い,記しておく.

 過去に査読者とのやり取りの中で,変数選択の方法をかなり具体的に指示され,その通りにしないと通さないぞという言外の圧力を感じたことがある.

 その時は違和感を感じつつもその通りにしたら通ったのだが,どうにもその違和感がずっと残っていた.いわく,単変量解析で有意になった変数のみを組み合わせて多変量解析に持ち込む,という手法だったのだが,本当にそれで良かったのだろうか?

教科書では「すべての変数を投入せよ」とあるが…

 率直に言うと,最初はこれ(強制投入法)で解析した.しかし,有意な変数が全く出てこない.やむを得ずステップワイズ(変数減少法)に変更して何とか有意差ありに持ち込んだ.

 考えられる原因はいろいろある.ありがちなのはサンプルサイズが小さすぎることやサンプルの偏りなど.投入する変数が多いほど必要なサンプルサイズが増える.一般には変数一個につきサンプルはその 10 倍必要である,というもの.

 しかしこれは一般論であり,実際には少数のパイロット試験から必要なサンプルサイズを見積もる必要があって,その数を計算する公式もある.

多変量解析には多重共線性の問題がつきまとう

 目的変数 1 個に対して独立変数 n 個を線形結合して回帰式を組み立てるのであるが,初めて多変量解析をする人など,初心者には少々荷が重い.統計ソフトにもいろいろあってそれぞれに方法が少しずつ異なり,最初に選んだソフトを使い続けることになるだろう.

 多変量解析には常に多重共線性の問題がつきまとう.変数同士が相関していて回帰式が定まらないとか,相関係数の符号が実際の逆向きになるとか.

 例えが適当でないが,連立方程式を解いている時に 0 = 0 となったことはないか?あれは同じ式が複数ある時に発生する.それと同じことが起きるのである.

 変数が増えるほどその危険性が高まる.あれもこれもと欲張って解析に投入したくなるのだが,ちょっと待て.

その変数,本当に必要か?

 落ち着いてよく考えてみよう.同じ領域の中でいくつか候補の変数がある場合,最終的に一つに絞らなくてはいけない.なぜか?

 同じ領域から抽出した変数は,互いに相関していることが多く,多重共線性を持ち込む要因となるからである.

理想は,一つの領域から唯一の変数

 あくまでも理想である.現実にはそのような理想状態にはなかなか持ち込めない.しかし,努力はすべきだ.一つの領域の中で,その領域を代表する変数は何か?

 それが分かれば苦労はしない.分からないから解析する.再帰的な問いではあるが,独立変数は互いに素である必要がある.

変数が増えるほど,将来の予測精度は落ちる

 矛盾するようだが,回帰式の変数が増えるほど現在のデータセットへの過剰適応 (over fitting) が進み,未知のデータセットへの予測精度が落ちる.

 これは専門的な話になるため割愛するが,回帰式の精度を評価する手法として情報量基準なる指標があり,変数の数が罰則項として組み込まれている.興味のある人は赤池情報量基準,ベイズ情報量基準で検索してほしい.

 

データベースの正規化も実は同じ

 話題が変わるが,リレーショナルデータベースでは正規化という手続きによりテーブルが分割されている.テーブル内の関数従属性を排除するとも言うが,リレーションは直交するとも表現される.

 なぜテーブルを分割するのか分からないかもしれないが,情報の無損失分解のために必要な処置だとだけ覚えておけばいい.

 俺にはこの二つの概念は全く同じに見える.多重共線性の排除とリレーションの正規化とは,同じものの違う側面である気がしてならない.

いきなり多変量解析する前に

 変数同士の相関関係を俯瞰してみよう.少なくとも多重共線性を起こしそうな変数の組み合わせが見つかるかも知れない.

何のために相関行列を作るのか?

 変数同士の相関を確認するためである.その際には,同一の領域から抽出した複数の変数を一箇所にまとめて並べると,全体を把握しやすくなる.

そもそも,相関行列って何?

 変数を縦横のマス目,つまり表頭と表側に並べて表を作る.表頭は左から右へ,表側は上から下へ,同じ順番で変数を並べる.するとその交わるところに相関係数を表現できる.これが相関行列だ.

 変数の数が n 個なら,組み合わせの数は n × n になるのは分かるな?だが実際にはその半分でいい.なぜか?

 実は相関行列は対角行列でもあり,対角線を挟んで線対称になっている.しかも対角線上は自分自身との組み合わせなので常に相関係数は 1 になり,これは考えなくて良いことになっている.

 だから,正確には (n2 – n)/2 通りの組み合わせになる.約半分だ.遠目から見ると,正方形ではなくて三角形に見える.

 相関係数が分からないって?

相関係数とは何か?

 抽象的に言うと,原因と結果の繋がりの強さを数字で表現したものだ.範囲は – 1 から + 1 まで.ある原因が起きると結果が起こる程度の強さだ.

 0 だと無関係,プラスなら原因は結果を促進する方向に作用し,マイナスだと原因は結果を起こりにくくする方向に作用する.

 プラスの時には「正の相関がある」と言い,マイナスの時には「負の相関がある」と言う.

SPSSでの手順

 そろそろ具体的な方法について書いておこう.ここからは SPSS を例に相関行列の作成方法を見ていく.無料でもっと高性能の統計ソフトがあるのも承知しているが,これしか使えないので勘弁してくれ.

データセットを開く

 EXCEL のファイルが多いだろう.SPSS 起動時のダイアログで直接開くと何故か文字化けしやすいので一旦キャンセルして Ctrl + O キーで開く.

データセットを開く

「分析」→「相関」→「2変量…」を選択

SPSSで「分析」「相関」「2変量」を選択する

2変量の相関分析ウィンドウが開く

 初期状態では左側のパネルには投入前の変数が表示されており,右側のパネルには何も表示されていない.

2変量の相関分析

変数を投入する

 変数を右側のパネルに移していく.ここで移した順番に相関行列の変数が並ぶので,移す順番には注意が必要だ.

 具体的には,同じ領域の変数は隣り合うように移すことだ.

変数を投入

「オプション」で「平均値と標準偏差」をチェック

 右上に「オプション」ボタンがある.記述統計を出力するかどうか選ぶ.ここでは「平均値と標準偏差」にチェックを入れている.欠損値の扱いはよく分からない.「続行」をクリックする.

オプションで「平均値と標準偏差」にチェック

「OK」をクリックすると相関行列ができる

 左下の「OK」ボタンをクリックすると相関行列が出力される.

EXCELでの処理

EXCELにコピペする

 EXCEL のワークシートに貼り付ける.統計的有意となった数値の右肩にアスタリスクが付いていて,以後の操作に支障があるためこれを消したい.

EXCELに貼り付けた相関行列

「検索と置換」でアスタリスクを消す

 「検索する文字列」にアスタリスクを単独で入れるとすべての文字が検索対象になってしまう.これはアスタリスクがワイルドカードを示す特殊な文字だからだ.

 これをエスケープするには半角のチルダをアスタリスクの前に入力する.「すべて置換」するとアスタリスクだけが消える.

「検索と置換」でアスタリスクを消すには半角チルダでエスケープする

「有意確率」の行を選択する

 ここからは統計的有意となった相関係数を強調表示したい.対象となる「有意確率」の行を選択するには,コントロールキーを押しながら行番号をクリックしていく.

「有意確率」の行を選択

「条件付き書式」の「ルールの管理…」を選ぶ

 その状態で「条件付き書式」から「ルールの管理…」を選ぶ.

「条件付き書式」の「ルールの管理...」

「新規ルール…」をクリック

「新規ルール...」

「指定の値を含むセルだけを書式設定」を選ぶ

 「新しい書式ルール」では,まずルールの種類を決める.ここでは「指定の値を含むセルだけを書式設定」を選ぶ.

「指定の値を含むセルだけを書式設定」

 さらにルールの内容を編集する.ここでは「セルの値」はそのままに,「次の値より小さい」を選択する.

「次の値より小さい」で 0.05 を入力して「書式…」をクリック

 値には 0.05 と入力する.「プレビュー」の右端に「書式…」ボタンがあるのでクリックする.

「次の値より小さい」で 0.05 を入力して「書式...」

「塗りつぶし」タブで強調色を選ぶ

 セルの書式設定の「塗りつぶし」タブで背景色を選ぶ.ここではもっとも薄い黄色を選んでいる.

「塗りつぶし」タブで強調色を選ぶ

「OK」をクリック

 プレビューに強調色が入る.

プレビューに強調色が入る

「適用」をクリックして「OK」をクリックすると…

 今設定したルールが一つ掲載されている.「適用」「OK」の順にクリックする.

「適用」をクリックして「OK」をクリック

こうなる

 これは統計的有意となったセルだけを強調表示していることになる.

統計的有意となったセルだけを強調表示

強調されたセルの直上のセルを選択

 コントロールキーを押しながら,色の付いたセルの直上のセルをクリックして選択する.対角線の左下の三角形か,右上の三角形か,どちらかだけでよい.ここでは左下の三角形を選んだ.

強調されたセルの直上のセルを選択

「条件付き書式」から「ルールの管理…」を選ぶ

 その状態で「条件付き書式」から「ルールの管理…」を選ぶ.

「条件付き書式」から「ルールの管理...」

「新規ルール…」をクリック

 条件付き書式ルールの管理.ここで複数のルールの管理(新規作成,編集,削除)を行う.「新規ルール」をクリックする.

「新規ルール...」をクリック

 正の相関とは相関係数が 0 より大きいということであり,負の相関とは相関係数が 0 より小さいということである.これをセルの背景色で表現したい.

「指定の値を含むセルだけを書式設定」で「次の値より大きい」を選び,0 を入力して「書式」をクリック

 まず正の相関のセルだ.「次の値より大きい」を選択し,値には 0 を入力する.プレビューの右端の「書式…」ボタンをクリックする.

「指定の値を含むセルだけを書式設定」で「次の値より大きい」を選び,0 を入力して「書式」をクリック

「塗りつぶし」タブで強調色を選ぶ

 「塗りつぶし」タブで強調色を選ぶ.ここでは二番目に薄い緑色を選んだ.

「塗りつぶし」タブで強調色を選ぶ

「OK」をクリック

  条件と書式が決まったので「OK」をクリックする.

「OK」をクリック

もう一度「新規ルール…」をクリック

 一番目のルールが表示されている.次に二番目のルール,負の相関を表現したい.「新規ルール」をクリックする.

「指定の値を含むセルだけを書式設定」で「次の値より小さい」を選び,0 を入力して「書式」をクリック

 今度は「次の値より小さい」を選択し,値には 0 を入力する.プレビューの右端の「書式…」をクリックする.

もう一度「新規ルール...」をクリック「指定の値を含むセルだけを書式設定」で「次の値より小さい」を選び,0 を入力して「書式」をクリック

「塗りつぶし」タブから強調色を選ぶ

 「塗りつぶし」タブで強調色を選ぶ.ここではもっとも薄い赤を選んだ.

「塗りつぶし」タブから強調色を選ぶ

「OK」をクリック

 条件と書式が決まったので「OK」をクリックする.

条件と書式が決まったので「OK」をクリック

「適用」をクリックして「OK」をクリックすると

 二つの条件が表示されている.「ルール(表示順で運用)」では,ルールの優先順位を決めることができるのだが,今回は 0 を挟んで条件が明確に分かれているため競合は発生しない.

二つの条件が表示されている

 「適用先」の重なり具合で意図せぬ結果が発生しかねない状況ではあるが,今回はこれで「適用」し「OK」をクリックして終了とする.

こうなる

 統計的有意となった相関係数が符号に応じて強調表示されている.今度は「有意確率」と「N」の行が邪魔なので消したい.

統計的有意となった相関係数が符号に応じて強調表示

「有意確率」と「N」の行を選択する

 コントロールキーを押しながら「有意確率」と「N」の行番号をクリックしていく.

「有意確率」と「N」の行を選択

右クリックして「非表示」を選ぶ

 その状態で右クリックして「非表示」を選ぶ.

右クリックして「非表示」

さらに「Pearsonの相関係数」の文字の入った B 列を選択して…

 相関係数の行だけになる.今度は B 列が邪魔だ.これも消したい.

「Pearsonの相関係数」の文字の入った B 列を選択

右クリックして「非表示」を選ぶ

 B 列を選んで右クリックし,「非表示」を選ぶ.

右クリックして「非表示」

今度は対角線上の 1 から右のセル領域を 1 行ずつ選択して…

 面倒な作業はまだ続く.対角線から右上の三角形も邪魔だ.これも消そう.コントロールキーを押しながら,「対角線上のセルから右側の行」を「1 行ずつ」選択する.根気のいる作業だ.

対角線上の 1 から右のセル領域を 1 行ずつ選択

右クリックして「数式と値のクリア」を選ぶと…

 その状態で右クリックして「数式と値のクリア」を選ぶ.

右クリックして「数式と値のクリア」を選ぶ

こうなる

 ようやく左下の三角形だけになった.だが今度は縦の罫線が邪魔になってきた.これも消そう.

全体を選択してコントロールキーと 1 キーを同時に押すと「セルの書式設定」が開くので「罫線」タブを選び…

 コントロール + A キーを押して全て選択し,コントロール + 1 キーを押すと「セルの書式設定」ダイアログが開く.「罫線」タブを選ぶ.

「セルの書式設定」が開くので「罫線」タブを選ぶ

「なし」をクリックする

 「プリセット」から「なし」をクリックする.これで罫線が全部消える.

「プリセット」から「なし」をクリック

見えている行を 1 行ずつ選択して右クリックし「行の高さ」を選ぶ

 相関行列は本来,正方形の形をしている.だが実際には縦に潰れて横長の形をしている.行の高さを大きくしよう.

 コントロールキーを押しながら,見えている行を 1 行ずつ選択する.その状態で右クリックして「行の高さ」を選ぶ.

 なぜ 1 行ずつ選ぶのかって?ドラッグで一度に全部選択したら,次の処理で,先ほど非表示にした行が再表示されてしまうからだ.こんなことなら,いっそのこと削除してしまえばよかった…

「行の高さ」に 48 と入力する

 値は何でもよいが,自分で見てよいと思うものを入力すればよい.画像では 36 となっているが,48 にすると正方形に近くなる.

「行の高さ」に 48 と入力

完成形はこんな形をしている

 いろいろ加工しているが,相関行列は正方形をしている.統計的有意となった相関係数のセルを強調表示し,色が濃いほど相関係数が高いことを示している.細かい数字を見ても眠くなるだけだから,いっそ色だけにした方が視覚からのインパクトが強くていいかも知れない.

相関行列は正方形をしている.統計的有意となった相関係数のセルを強調表示し,色が濃いほど相関係数が高いことを示している

Officeの入手先

 マイクロソフトから購入する以外にない.インストール時にレジストレーションコードを入力する仕様となっており,これを回避する手段はない.一時期,OpenOffice とか LibreOffice とかが流行ったけど,今はどうなってるのだろう?

SPSSの入手先

 Amazon のやつはやめておけ.まず,正式なライセンス登録ができないし,サポートも受けられない.カネを捨ててでも人柱になりたいというなら止めないが,本当に使えるならカスタマーレビュー数がこんなに少ないはずがない.

 正規品が高価なのはどうしようもない.俺が購入した時は日本 IBM の取り扱いだったが,2016 年 7 月 1 日からアドバンスト・アナリティクス社に移管された.

“多変量解析の前に相関行列を見よう” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください