2つのデータの相関関係(相関係数)は因果関係とは別物

2つのデータのあいだに相関関係が成立するかどうかを客観的に判断するには、相関係数(Correlation coefficient)といわれる指標を使います。相関係数の数学的な背景は決して易しいものではありませんが、相関係数の値を出すこと自体は私たちになじみの深いExcelPythonを使えば簡単にできます。しかも、因果関係が成立するかどうかを見極める難しさに比べて相関係数の値を使って相関関係を検証することは、遥かに容易であります。

一般に相関係数は次の式で求めることができます。

相関係数=(共分散)/ (Xの標準偏差)×Yの標準偏差))

なお、共分散や標準偏差について説明を加えると数学のテキストになってしまうので、ここでは割愛します。その代わりに、簡単に相関係数を求める方法を以下に示します。

 

◆先ずは、電卓で相関係数を計算します

仮説的な例として、次の 2 つのデータ セットの相関関係を計算する必要があると仮定します。

X:(41192340555733

Y:(94607471827661

相関関係を見つけるには 3 つのステップが必要です。 1つ目は、すべてのX値を合計してSUM(X)を求め、すべてのY値を合計してSUM(Y)を求めます。さらに、各X値に対応するY値を乗算して、それらを合計して SUM(X,Y)を求めることです。

SUM(X) = (41 + 19 + 23 + 40 + 55 + 57 + 33) = 268

SUM(Y) = (94 + 60 + 74 + 71 + 82 + 76 + 61) = 518

SUM(X,Y) = (41 x 94) + (19 x 60) + (23 x 74) + ... (33 x 61) = 20,391

次のステップでは、各 X 値を取得して 2 乗し、これらすべての値を合計して SUM(x^2) を求めます。 Y 値についても同じことを行う必要があります。

SUM(X^2) = (41^2) + (19^2) + (23^2) + ... (33^2) = 11,534

SUM(Y^2) = (94^2) + (60^2) + (74^2) + ... (61^2) = 39,174

7 つの観測値nがあることに注意すると、次の式を使用して相関係数 r を求めることができます。

 

r=相関係数 n=観測値の数

この例では、相関関係は次のようになります。                  

r = (7 x 20,391 - (268 x 518) /√((7 x 11,534 - 268^2) x (7 x 39,174 - 518^2))= 3,913 / 7,248.4 = 0.54

 

◆次はエクセルを用いて同様に相関係数を計算します。

エクセルでは、相関係数を直接計算してくれる関数があります。それがCORREL関数です。下記のように、CORREL関数の中に、X軸とY軸の値を入れれば、そのまま相関係数を計算してくれます。

 

 
 図.エクセルで相関係数を算出       図.エクセルで散布図を出力

 

◆最後は、Google Colaboratoryを使いPythonコードで同様に相関係数を計算します。

import numpy as np

import pandas as pd

math_score = [41192340555733]

english_score = [94607471827661]

df_math = pd.DataFrame(math_score, columns=["math_score"])

df_english = pd.DataFrame(english_score, columns=["english_score"])

df = pd.concat([df_math, df_english], axis=1)

corr = df.corr()

print(corr)

出力結果

 

 
 図.Google ColaboratoryPythonコード    図.Pythonコードで散布図出力
 

さて、相関係数の数値の大小で相関が強いか弱いかがわかります。諸説ありますが、相関係数の大小と相関の強弱の関係は以下が目安とされています。

0.7 1.0     かなり強い正の相関がある

0.4 0.7     正の相関がある

0.2 0.4     弱い正の相関がある

-0.2 0.2      ほとんど相関がない

-0.4 -0.2    弱い負の相関がある

-0.7 -0.4    負の相関がある

-1.0 -0.7    かなり強い負の相関がある

 

相関係数は、「2種類のデータ間の関連性」を数値的な根拠とともに示すことができる便利な指標です。しかし、次の3点について注意しよう。①データの数が少ないと意味がありません。具体的には、データ数を100以上用意できると、信頼できる値を得られると考えられています。外れ値に大きく影響されるので、散布図でデータ全体を可視化して、外れ値に関して確認することが重要です。③直線関係しか分からないので、散布図でデータ全体を可視化して関係性を確認することが重要です。稀に曲線回帰する場合もあります。

 

冒頭の「ビール」と「おむつ」の関係は、人間の観察力、想像力ではカバーできない関係もコンピュータが予測できる、いわば「風が吹けば桶屋が儲かる」の「風」と「桶屋」のかけ離れ度合がどんどん広くなっても予測できるようになっていることを示したエピソードのひとつです。

 

「風が吹いたらなぜ桶屋が儲かる?」は江戸時代から伝わる言い回しで、一見、何の関係も無さそうなところにまで影響が及ぶ事例や、そのために使われる無理なこじつけを批判するような場面で使います。話の流れは、風が吹くと土ぼこりがたって目に入り盲人が増える。盲人は三味線で生計を立てようとするから、三味線の胴を張る猫の皮の需要が増える。猫が減るとねずみが増え、ネズミが桶をかじるから桶屋がもうかって喜ぶということ。とどのつまりは、大風が吹けば桶屋が喜ぶことになるとのことです。ただ、それぞれの事象の発生率も加味すると「風が吹いても桶屋は儲からない」とも言われます。一般的には、「ある事象が発生したことより、意外なところに影響が及ぶこと」を表しています。現代での事例は、“新型ウイルスが生まれると、ホットケーキの粉が店頭から消える”については、マスク・消毒用アルコールは入手困難、カップ麺・パスタ麺、さらには、ホットケーキの粉までもが品薄傾向となりました。


このブログの人気の投稿

小論文 統計的因果推論の現場適用による排泄ケアの展望

排泄ケア相談員の育成に向けて

解説 排泄ケアの相談支援計画書作成のためのチェックリスト