スポンサーリンク

見かけ倒しの統計学 ~ウソの相関を見抜く統計学~

記事内に広告が含まれています。

統計学をやっていると問題になってくることの一つに、本当は相関がないのに相関係数はおおきくなってしまうって問題があります。

相関係数が高いというのは、相関があるための必要条件ではあるけど、十分条件ではないとも言えます。相関係数が高いときは必ず相関があるとは言えないけど、相関があると言えるときは必ず相関係数が高いって関係です。

今回の記事は、相関係数が高くても相関がないというような、偽物の相関はどうやって見抜いたらいいの?ってのを解説していきます。

スポンサーリンク

第三の要因が影響している

例えば、相関係数を計算したら、「習い事をたくさんやっている子供の方がそうでない子供に比べて健康的だ」という結果になったとします(注、実際にそんなデータがあるかどうかは分かりません。あくまで、もしもこうだったらという仮定の話です)。ただ、そのデータだけでは「子供を健康的に育てたいなら習い事をたくさんさせるべきだ!」とはならないんですな。

というのも、「習い事をたくさんできるほどのお金があるから、より健康的な食べ物を買うことができて健康的になっているんじゃないの?」とか、「子供にたくさんの習い事をさせるほど意識の高い親だから、親が健康のことも高い意識を持っているので、結果として子供にもその影響が出てるだけなんじゃないの?」とか、色々な反論の余地があるわけです。

つまり、「習い事をたくさんやっている子供の方がそうでない子供に比べて健康的だ」という結果になった要因が他にも色々と考えられるわけです。もっと平たく言えば、「習い事」と「子供の健康」との間に因果関係はないかもしれないってことですな。

相関係数は大きいけど、因果関係はないということを偽相関と言います。この言葉を使って言えば「習い事」と「子供の健康」は偽相関かもしれないってことになります。見かけ上の相関のことを偽相関と呼ぶわけです。

ちなみに、図示するとこんな感じ(図1)。上の要因が下二つの結果を引き起こしてるって図です。偽相関ってのは、たまたまこの図で言うところの下二つの結果を統計分析してしまったために起こる問題ということですな。

図1.偽相関のイメージ図

「じゃあどうやって偽相関かどうかを見抜けばいいの?」って辺りを次の節で説明していきます。

根本原因の影響を排除する ~そもそもの発想~

そもそもの発想自体は単純で、偽相関と考えられる二つのデータから根本原因の影響を排除してやれば、より正確に2変量間の相関係数が出せるんじゃないの?って考え方になります。

イメージで言えば下図(図2)のような感じです。

図2.偽相関の判別のイメージ図

つまり、偽相関という結果は、変量同士に相関はないけど、根本原因が同じだったから起こっていたと考えていたわけです。そこで、じゃあ根本原因が各変量に与える影響を差し引いて相関係数を計算してやれば、純粋に2つの変量の相関係数が出せるんじゃないか?と考えるわけですな。

根本原因を変量zと表しておくと、変量zが他2つの変量に与える影響を差し引いて計算した相関係数のことをzを制御変数とする偏相関係数と言います。

考え方はこれだけなので、次の節で「じゃあ具体的にどんな計算をすればいいの?」ってのを説明していきます。

スポンサーリンク

第三変量による偏りがない相関係数を求める ~導出編~

上の節で、第三の要因による影響を除いた相関係数(偏相関係数)を計算すればいいじゃないって話をしました。

というわけで、先に偏相関係数を求める数式を載せておきます。ここに数値を代入して計算すれば、第三の要因による影響を失くした相関係数を求めることができます。

$$
r_{xy\cdot z} = \frac{r_{xy} – r_{xz}r_{yz}}{\sqrt{1 – r_{xz}^2} \sqrt{1 – r_{yz}^2}}
$$

数式を解説していきます。まず左辺の\( r_{xy\cdot z} \)は、変量zによる影響を無視したxとyの相関係数(zを制御変数とする偏相関係数)を表します。

右辺は、\( r_{xy} \)、\( r_{xz} \)、\( r_{yz} \)はそれぞれ\( x \)と\( y \)の相関係数、\( x \)と\( z \)の相関係数、\( y \)と\( z \)の相関係数を表しています。

偏相関係数の場合、無視したい変量を添え字としてドット記号で繋いで表すというわけですな。

とりあえず天下り的にこの公式を受け入れて、いったいどういうときに使われるの?っていう具体例を知りたいって方は、先に次の節をご覧くださいませ~。

スポンサーリンク

では、なぜこれで第三の要因をによる影響を抜き去った相関係数が求められるのかを不思議に思う知的好奇心が高めなスクリーンの前のあなたに向けて、公式を導出していきます。

まずは、第三の変量zでxとyを説明してやります。具体的には、単回帰分析をやってやります。つまり、

$$
\begin{equation}
\begin{split}
\hat{x} = a_{x} + b_{x}z \\
\hat{y} = a_{y} + b_{y}z
\end{split}
\end{equation}
$$

を求めてやります。\( a_{x} \)、\( b_{x} \)はそれぞれxとzの関係を表す切片と回帰係数です。\( a_{y} \)と\(b_{y}\)も同じように考えてください。

これで\( x \)と\(y\)を\(z\)で表すということができました。あとは、それぞれの実測値からこの回帰方程式で得られた理論値を引いて(残差を計算して)、相関係数(それぞれの残差に対する相関係数)を求めれば、第三の変量\( z \)による影響を無視した相関係数が計算できることになります。まぁ、\( x \)と\(y\)を\(z\)で表現してから差を取るってのは妥当な考え方っすよね~。

というわけで、\( x \)と\( y \)それぞれの残差(実測値と理論値の差)から相関係数を計算しようとすると次のようになります。

$$
r_{xy \cdot z} = \frac{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} } { \sqrt{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} ^2 } \sqrt{ \sum \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} ^2 } }
$$

で、こいつをゴリゴリと計算していけばいいんですが、さすがに骨が折れるので、細かい部分に分けて計算していきます。

まずは\( x_i – \hat{x_i} \)と\( \overline{ x_i – \hat{x_i} } \)を計算していきます。

$$
\begin{equation}
\begin{split}
x_i – \hat{x_i} &= x_i – \{ a_x + b_x z_i \} \\
&=x_i – \{ (\overline{x} – b_x \overline{ z } ) + b_x z_i \} \\
&=(x_i – \overline{x}) – b_x( z_i – \overline{ z } )
\end{split}
\end{equation}
$$

$$
\begin{equation}
\begin{split}
\overline{ x_i – \hat{x_i} } &= \overline{ (x_i – \overline{x}) – b_x( z_i – \overline{ z } ) } \\
&= \frac{ 1 } { n } \sum_{ i=0 }^{ n } (x_i – \overline{x}) – \frac{ b_x } { n } \sum_{ i=0 }^{ n } ( z_i – \overline{ z } )
&= 0
\end{split}
\end{equation}
$$

nはデータ数です。偏差(実測値と平均値の差)は性質上、すべて足し合わせると0になります(平均値の差をすべて足すと、正の値と負の値が互いに打ち消し合うので)。なので、\( \overline{ x_i – \hat{x_i} } \)は0になります。

ここまで確認出来たら、分母の左側にあるルートの中身を計算します。式の最後に出てくる\( s_x^2 \)、\( s_z^2 \)、\( s_{xy} \)はそれぞれ\(x\)の分散、\(z\)の分散、\(x\)と\(z\)の共分散です。

$$
\begin{equation}
\begin{split}
\sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} ^2 &= \sum \{ (x_i – \hat{x_i}) ^2 – 2 (x_i – \hat{x_i}) ( \overline{ x – \hat{x} } ) + ( \overline{ x – \hat{x} } ) ^2 \} \\
&= \sum (x_i – \hat{x_i}) ^2 \\
&= \sum ( (x_i – \overline{x}) – b_x( z_i – \overline{ z } ) ) ^2 \\
&= \sum ( (x_i – \overline{x})^2 – 2 b_x \sum ( x_i – \overline{x} ) ( z_i – \overline{ z } ) + b_x^2 \sum ( z_i – \overline{ z } )^2 \\
&= n s_x^2 – 2 b_x n s_{xz} + b_x^2 s_z^2 \\
\end{split}
\end{equation}
$$

ここで、式全体を\( n s_x^2 \)で括って、\( b_x \)を共分散割る分散の形に直して計算していきます。

$$
\begin{equation}
\begin{split}
n s_x^2 – 2 b_x n s_{xz} + b_x^2 s_z^2 &= n s_x^2(1 – 2 \frac{ s_{xz} } { s_z^2 } \frac{ s_{xz} } { s_x^2 } + \frac{ s_{xz}^2 } { s_z^4 } \frac{ s_z^2 } { s_x^2 } ) \\
&= n s_x^2(1 – \frac{ s_{xz}^2 } { s_x^2 s_z^2 } ) \\
&= n s_x^2(1 – r_{xz}^2 )
\end{split}
\end{equation}
$$

同じように考えて、

$$
\begin{equation}
\begin{split}
\sum \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} ^2 &= n s_y^2(1 – r_{yz}^2 )
\end{split}
\end{equation}
$$

と表すことができます。

スポンサーリンク

今までの計算結果から、

$$
\begin{equation}
\begin{split}
r_{xy \cdot z} &= \frac{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} } { \sqrt{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} ^2 } \sqrt{ \sum \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} ^2 } } \\
&=\frac{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} } { \sqrt{ n s_x^2(1 – r_{xz}^2 ) } \sqrt{ n s_y^2(1 – r_{yz}^2 ) } } \\
&=\frac{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} } { n s_x s_y \sqrt{ (1 – r_{xz}^2 ) } \sqrt{ (1 – r_{yz}^2 ) } } \\
\end{split}
\end{equation}
$$

と式変形できるようになりました。次は分子を計算します。

偏差の総和が0であるということに注意すれば、分配法則を適用したらほとんどの項が0になることが分かります(書くのがさすがに大変だったので省略しましたが)。

$$
\begin{equation}
\begin{split}
\sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} &= \sum \{ (x_i – \hat{x_i}) (y_i – \hat{y_i} ) \} \\
&= \sum \{ ( (x_i – \overline{x}) – b_x( z_i – \overline{ z } ) ) \\ & \hspace{11pt} ( (y_i – \overline{y}) – b_y( z_i – \overline{ z } ) ) \} \\
&= \sum \{ ( ( x_i – \overline{x} ) (y_i – \overline{y}) – b_y ( x_i – \overline{x} ) ( z_i – \overline{ z } ) \\ & \hspace{11pt} – b_x(y_i – \overline{y} ) ( z_i – \overline{ z } ) + b_x b_y ( z_i – \overline{ z } )^2 ) \} \\
&= n ( s_{xy} – b_y s_{xz} – b_x s_{yz} + b_x b_y s_z^2 ) \\
&= n ( s_{xy} – \frac{ s_{yz} s_{xz} } { s_z^2 } – \frac{ s_{xz} s_{yz} } { s_z^2 } + \frac{ s_{xz} } { s_z^2 } \frac{ s_{yz} } { s_z^2 } s_z^2 ) \\
&= n s_x s_y ( r_{xy} – r_{xz} r_{yz} ) \\
\end{split}
\end{equation}
$$

これで、分子が計算できました。なので、最終的には、

$$
\begin{equation}
\begin{split}
\frac{ \sum \{ (x_i – \hat{x_i}) – ( \overline{ x – \hat{x} } ) \} \{ (y_i – \hat{y_i}) – ( \overline{ y – \hat{y} } ) \} } { n s_x s_y \sqrt{ (1 – r_{xz}^2 ) } \sqrt{ (1 – r_{yz}^2 ) } }
&= \frac{ n s_x s_y ( r_{xy} – r_{xz} r_{yz} ) } { n s_x s_y \sqrt{ (1 – r_{xz}^2 ) } \sqrt{ (1 – r_{yz}^2 ) } }
&= \frac{ ( r_{xy} – r_{xz} r_{yz} ) } { \sqrt{ (1 – r_{xz}^2 ) } \sqrt{ (1 – r_{yz}^2 ) } } \\
\end{split}
\end{equation}
$$

となって、\(z\)を制御変数とする偏相関係数が計算できました。

では、具体的にはどう計算すればいいのかを次節で説明します。

スポンサーリンク

偏相関係数を求める ~計算例編~

やること自体は簡単で、次のようなデータがあったとします(参照元は下の方にまとめておきました)。

西暦1950年から2015年まで5年おきのデータを取り出したもので、各年の離婚件数、交通事故発生件数、総人口をまとめた表になっています。

やりたいことは、離婚件数と交通事故件数の間に相関があるのかどうかを見ることです。というわけで、上の表を、横軸に離婚件数、縦軸に交通事故件数を取ってグラフ化したものが、下の図3です。

図3.離婚件数に対する交通事故件数のグラフ

このグラフでは、離婚件数と交通事故数には相関があるように見えます。実際に相関係数を計算すると0.729なので、かなりの相関性があるという結果になります。

しかし、実際問題として離婚件数と交通事故件数の間に何らかの関係性があるとは思えません。離婚の悲しみから運転がおろそかになって交通事故が起きやすくなってしまうと考えることもできますが、人口が多ければ多いほど離婚数も交通事故数も増えるので相関があるように見えているという説明の方が自然ではないでしょうか?

ということで、偽相関かどうか白黒はっきりとさせるために人口を制御変数とした偏相関係数を求めてみましょう。といっても、上の公式に数値を代入していくだけなので、計算は省いて結果だけを書きます。興味がある方はこちらにExcelファイルを置いておくのでご参照くださいませ~(普通にExcelの関数を使えばもっと楽です)。

偏相関係数は0.067となるので、離婚件数と交通事故件数の間には相関がないという結果になりました。つまり、相関係数が高かったのは人口による影響が大きかったというわけですな。

という感じで、第三の変数による影響を無視して偽相関かどうかの判定をしたい場合は偏相関係数を計算していきます。

まぁ、こういうデータは人口に対する比率で考えることがほとんどだと思うので、そもそも相関係数が高いって問題は起きない可能性も高いですが。まぁ、こういう風にして使えるよーっていう例だと思って見てください。

データの引用元

人口動態統計『平成29年(2017)人口動態統計(確定数)の概況|厚生労働省
交通事故統計『道路の交通に関する統計 平成29年中の交通事故の発生状況 | ファイル | 統計データを探す | 政府統計の総合窓口
人口データ『統計局ホームページ/日本の統計 2019-第2章 人口・世帯 2- 1 人口の推移と将来人口
※すべて2019年9月12日(木)に確認しました。

タイトルとURLをコピーしました