python计算四格表卡方统计值及其矫正值

xxxspy 2017-11-15 08:43:09
Categories: Tags:

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

四格表的卡方计算公式:

卡方检验一般要求交叉表中的单元格内的数值或者期望值大于5, 当这个条件不满足的情况下, 需要对其进行校正, 一般用Yates’s校正公式计算卡方值. 计算公式是:

Python中我们用scipy模块scipy.stats.chi2_contingency来计算卡方及其P值:

1
2
3
4
5
6
7
8
9
10
from scipy.stats import chi2_contingency
#未校正的卡方
chi2_contingency([[44, 4], [32, 10]],False)
#下面的结果依次是:卡方值, p值, 自由度, 期望频率
(4.0843179377013969, 0.043282916905174974, 1, array([[ 40.53333333, 7.46666667],
[ 35.46666667, 6.53333333]]))
#校正过的卡方
chi2_contingency([[44, 4], [32, 10]],True)
(2.9911133861439323, 0.083722586239569685, 1, array([[ 40.53333333, 7.46666667],
[ 35.46666667, 6.53333333]]))

为了方便大家计算, 我在这里用JavaScript开发了一个卡方计算器, 可以在线直接计算.