Rでカイ二乗検定 を pandas/scipy で
カイ二乗検定を行うだけであればpandasは必要なさそうです。
Rで下記のように行っていたコードを、
chisq.test( c(10, 10, 10, 25, 1, 4) )
scipy.stats.chi2_contingencyに渡すために、本来同数であれば全部10回ずつになる、という仮定を並べておきます。
>>> import scipy.stats >>> obs = np.array(10,10,10,10,10,10], [10,10,10,25,1,4) >>> res = scipy.stats.chi2_contingency(obs) >>> res[0:2] (16.363636363636363, 0.005879038879660156)
p値が0.005ということになりました。
同様に
10, 10, 10, 8, 8, 14
というデータであればp値は0.95311546950018988となりました。
検定の結果としては両方共Rで実施した場合と等しくなっています。
Rでこれと同じ数字を出すためには
> m = matrix(c(10,10,10,10,10,10, 10,10,10,25,1,4),ncol=6, byrow=T) > m [,1] [,2] [,3] [,4] [,5] [,6] [1,] 10 10 10 10 10 10 [2,] 10 10 10 25 1 4 > chisq.test(m) Pearson's Chi-squared test data: m X-squared = 16.3636, df = 5, p-value = 0.005879
このようにしないといけなかったのですね。
うどん、そば、ラーメンのケースでは
>>> scipy.stats.chi2_contingency(np.array([[1,7,3],[13,6,10]]))[0:2] (7.5634710117468744, 0.022783116860954487)
となりRと結果が異なっています。これはR側で計算値が不正確、というメッセージのとおりだからかもしれません。