如何在 python 中执行 mcnemar 测试
McNemar 检验用于确定配对数据之间的比例是否存在统计显着差异。
本教程介绍如何在 Python 中执行 McNemar 测试。
示例:Python 中的 McNemar 测试
假设研究人员想知道某个营销视频是否可以改变人们对特定法律的看法。他们对 100 人进行了调查,看看他们是否支持这项法律。然后他们向所有 100 人播放营销视频,并在视频结束后再次对他们进行调查。
下表显示了观看视频前后支持该法律的总人数:
营销前的视频 | ||
---|---|---|
营销后视频 | 支持 | 受不了 |
支持 | 30 | 40 |
受不了 | 12 | 18 |
为了确定观看视频前后支持法律的人数比例是否存在统计上的显着差异,我们可以进行麦克尼马尔检验。
第 1 步:创建数据。
首先,我们将创建一个表来保存数据:
data = [[30, 40], [12, 18]]
第 2 步:执行麦克尼马尔测试
接下来,我们可以使用 Python statsmodels 库中的mcnemar() 函数,该函数使用以下语法:
mcnemar(数组,精确=真,校正=真)
金子:
- 表:方形列联表
- 精确:如果精确为真,则将使用二项式分布。如果正确为假,则将使用卡方分布
- 校正:如果为真,则使用连续性校正。通常,当表格单元格的数量小于 5 时,通常会应用此修正。
下面的代码展示了如何在我们的具体示例中使用该函数:
from statsmodels.stats.contingency_tables import mcnemar #McNemar's Test with no continuity correction print(mcnemar(data, exact=False)) pvalue 0.000181 statistic 14.019 #McNemar's Test with continuity correction print(mcnemar(data, exact=False, correction=False)) pvalue 0.000103 statistic 15,077
在这两种情况下,无论是否应用连续性校正,检验的 p 值都小于 0.05。
这意味着在这两种情况下,我们都会拒绝零假设,并得出结论:在观看营销视频之前和之后支持法律的人数比例在统计上是不同的。