いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【統計学】相関係数の検定(RとPython)

文字通り相関係数に差があるかどうかの検定です。 帰無仮説相関係数をρとするとρ=0、対立仮説はρ≠0となります。 つまり2群に直線的な関係性があるかどうか確かめる検定ということになります。

データは教科書有斐閣統計学」P60のJリーグの表です。

Rで実装

#勝数
wins  <- c(22, 20, 20, 18, 17, 18, 13, 13, 13, 13, 13, 13, 13, 12, 12, 5, 6, 4)
#得点
score <- c(67, 84, 80, 60, 68, 62, 51, 47, 49, 50, 57, 43, 56, 46, 42, 32, 44, 38)

#相関係数の検定
cor.test(wins, score, method="pearson")

結果はこちら

f:id:imakoto0323:20180620160451p:plain

Pythonで実装

import pandas as pd
import numpy as np

df = pd.DataFrame({ 
                   'score':[67, 84, 80, 60, 68, 62, 51, 47, 49, 50, 57, 43, 56, 46, 42, 32, 44, 38],
                   'wins':[22, 20, 20, 18, 17, 18, 13, 13, 13, 13, 13, 13, 13, 12, 12, 5, 6, 4]
                   })

#検定統計量
def T(r, n):
    t = np.sqrt(n-2)*(r/np.sqrt(1-r**2))
    return t

#自由度
n = len(df['wins'])-2
#相関係数
corr = df.corr()['score']['wins']
t = T(corr, n)

print(t)
#6.5437594263510706

結果

t値が十分大きいため、帰無仮説を棄却できる。つまり相関係数は0ではない。