我正在计算小并发表的chi2检验统计量:
obs = np.array([
[652, 576],
[1348, 924]
])
当我手动计算时,如Wikipedia(Σ(Oᵢ - Eᵢ)²/Eᵢ)所示,我达到了结果~12.660,但scipy.stats.chi2_contingency
函数返回这些结果并进行了另一次测试统计:
>>> scipy.stats.chi2_contingency(obs)
(12.40676502094132, 0.00042778128638335943, 1, array([[ 701.71428571, 526.28571429],
[ 1298.28571429, 973.71428571]]))
我将结果的预期频率与我的相比较,结果相同。另外,通过将我的数据输入在线计算器,可以得到与我自己相同的结果(例如在http://www.socscistatistics.com/tests/chisquare2/default2.aspx上)。
这个函数在减少测试统计量方面有什么神奇之处?
答案 0 :(得分:3)
默认情况下,correction
为True
,这意味着在自由度为1的情况下应用Yates的连续性校正(如此处所示)。如果你设置correction=False
这不会发生,你会得到12.660 ......作为测试统计数据:
>>> scipy.stats.chi2_contingency(obs, correction=False)
(12.660142450795965,
0.00037353375362753034,
1,
array([[ 701.71428571, 526.28571429],
[ 1298.28571429, 973.71428571]])
documentation为correction
参数提供了以下进一步信息,并总结了耶茨的更正:
如果为True,且自由度为1,则应用Yates的连续性校正。校正的效果是将每个观察值调整0.5到相应的预期值。