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

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

【統計学】平均の差の検定(RとPython)

平均の差の検定。ある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)

#基本統計量の確認
summary(wins)
#Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#4.00   12.25   13.00   13.61   17.75   22.00 
summary(score)
#Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#32.00   44.50   50.50   54.22   61.50   84.00 


#平均の差の検定
t.test(wins, score,var.equal=T)     # 等分散を仮定したt検定

結果です。

f:id:imakoto0323:20180620145642p:plain

Pythonで実装

from pandas import DataFrame
import pandas as pd
from scipy import stats

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]
                   })

t, p = stats.ttest_ind(df['wins'], df['score'], equal_var=True)
print( "t値 = %(t)s" %locals() )
#t値 = -11.592527280898539
print( "p値 = %(p)s" %locals() )
#p値 = 2.327500630337065e-13