Python中的卡方检验

15

我想在Python中运行卡方检验。我已经编写了代码来执行此操作,但是由于scipy文档非常稀少,我不知道自己是否做得对。

首先说一下背景: 我有两组用户。我的零假设是,无论是哪组的人更有可能使用桌面、移动设备还是平板电脑,都没有显着差异。

这些是两组的观察到频率:

[[u'desktop', 14452], [u'mobile', 4073], [u'tablet', 4287]]
[[u'desktop', 30864], [u'mobile', 11439], [u'tablet', 9887]]

这是我的代码,使用scipy.stats.chi2_contingency

obs = np.array([[14452, 4073, 4287], [30864, 11439, 9887]])
chi2, p, dof, expected = stats.chi2_contingency(obs)
print p

这给了我一个p值为2.02258737401e-38,显然是显著的。

我的问题是:这段代码看起来有效吗?特别是,考虑到我的数据,我不确定是否应该使用scipy.stats.chi2_contingency还是scipy.stats.chisquare

2个回答

6
我对该函数的使用不予置评。然而,问题可能是统计性质的。你看到的非常小的p值很可能是由于你的数据包含大量频率(约为一万)。当样本大小过大时,任何差异都会变得显著,因此p值很小。你正在使用的测试方法对样本大小非常敏感。有关更多详细信息,请参见这里

5
您正确地使用了chi2_contingency。 如果您对卡方检验的适当使用或如何解释其结果感到不确定(即,您的问题涉及统计测试而非编码),请考虑在“CrossValidated”网站上发问:https://stats.stackexchange.com/

有关差异的实际示例,请参阅以下网站: http://connor-johnson.com/2014/12/31/the-pearson-chi-squared-test-with-python-and-r/ - BenP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接