我已经使用以下代码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
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中复制它?我尝试过使用这个chisquare函数scipy但是我得到的结果非常不同; 我不确定这是否是正确使用的功能.我搜索了scipy文档,但它运行到1000多页是相当艰巨的; 该numpy文件比增加近50%.
Fre*_*Foo 35
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)
Run Code Online (Sandbox Code Playgroud)
虽然在期望值均匀分布在类上的情况下,您可以省略预期值的计算:
>>> chisquare(observed)
(40.0, 1.065509033425585e-08)
Run Code Online (Sandbox Code Playgroud)
第一个返回值是χ2统计量,第二个是测试值的p值.
小智 7
只是想指出虽然答案看起来在语法上是正确的,但你不应该在你的例子中使用卡方分布,因为你观察到的频率太小而无法进行准确的卡方检验.
"当每个类别的观测或预期频率太小时,此测试无效.典型的规则是所有观测和预期的频率应至少为5." 请参阅:http: //docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chisquare.html#scipy.stats.chisquare
| 归档时间: |
|
| 查看次数: |
28071 次 |
| 最近记录: |