Python中的卡方检验
我使用以下代码R
来确定观测值(例如20、20、0和0)与期望值/比率(例如,在四种情况下分别为25%)的拟合程度如何:
> chisq.test(c(20,20,0,0), p=c(0.25, 0.25, 0.25, 0.25))
Chi-squared test for given probabilities
data: c(20, 20, 0, 0)
X-squared = 40, df = 3, p-value = 1.066e-08
如何在Python中复制此代码?我试过使用chisquare
from中的函数,scipy
但是获得的结果却大不相同。我不确定这是否是正确的功能。我在scipy
文档中进行了搜索,但是由于运行到1000多个页面,这非常令人生畏。该numpy
文件比增加近50%。
-
scipy.stats.chisquare
期望观察到的和期望的绝对频率,而不是比率。您可以获得所需的东西>>> observed = np.array([20., 20., 0., 0.]) >>> expected = np.array([.25, .25, .25, .25]) * np.sum(observed) >>> chisquare(observed, expected) (40.0, 1.065509033425585e-08)
尽管在期望值均匀地分布在类上的情况下,您可以省略期望值的计算:
>>> chisquare(observed) (40.0, 1.065509033425585e-08)
返回的第一个值是χ²统计量,第二个返回的是测试的 p 值。