Python中的卡方检验

15 投票
2 回答
37639 浏览
提问于 2025-04-18 16:04

我想在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/

撰写回答