单面麦克尼马尔检验

机器算法验证 r mcnemar 测试 精确检验
2022-04-11 10:35:02

在 R 中,该函数mcnemar.test具有以下示例:

## Agresti (1990), p. 350.
## Presidential Approval Ratings.
##  Approval of the President's performance in office in two surveys,
##  one month apart, for a random sample of 1600 voting-age Americans.
Performance <- matrix(c(794, 86, 150, 570),
                      nrow = 2,
                      dimnames = list("1st Survey" = c("Approve", "Disapprove"),
                                      "2nd Survey" = c("Approve", "Disapprove")))
Performance
mcnemar.test(Performance)
## => significant change (in fact, drop) in approval ratings

我想执行一个单方面的版本,例如,在上面的示例中,以测试批准是否下降。我找到了一个执行双面和单面测试的包(exact2x2)。

exact2x2(Performance, alternative="two.sided", conf.level=0.95, paired=T)
## vs. 
exact2x2(Performance, alternative="greater",   conf.level=0.95, paired=T)

我的统计问题是:

  1. 如何进行单面的 McNemar 检验?两者在数学上有什么区别?

另外,我想知道:

  1. 为什么基本 R 函数不提供单面测试选项,而大多数其他统计测试提供该选项?

  2. 为什么包功能的两侧测试结果不同?

1个回答

我已经在这里这里相当广泛地描述了 McNemar 测试的要点,它可能会帮助您阅读这些内容。简而言之,McNemar 检验评估非对角线计数的平衡。如果人们从赞同过渡到不赞同的可能性与从不赞同过渡到赞同的可能性一样大,那么非对角线值应该大致相同。那么问题是如何测试它们是。假设一个 2x2 表格,其中包含标记为“a”、“b”、“c”、“d”的单元格(从左到右,从上到下),McNemar 提出的实际测试是: 检验统计量,我在这里称为,近似分布为

Qχ2=(bc)2(b+c)
Qχ2χ12,但不完全是,尤其是计数较小的情况下。可以使用“连续性校正”来改进近似值: 这会更好,实际上应该被认为是好的,但它不可能完全正确。这是因为检验统计量必然具有离散抽样分布,因为计数必然是离散的,但卡方分布是连续的(参见比较和对比、p 值、显着性水平和 I 型错误)。
Qχ2c=(|bc|1)2(b+c)

据推测,由于时间的计算限制,McNemar 选择了上述版本。有关键卡方值表,但计算机没有。尽管如此,所讨论的实际关系可以完美地建模为二项式: 这可以通过双尾测试、单尾“大于”版本或单尾“小于”版本以非常直接的方式。每一个都将是一个精确的测试。

Qb=bb+c

对于较小的计数,双尾二项式版本和将商与卡方分布进行比较的 McNemar 版本会略有不同。“在无穷远处”,它们应该是相同的。

R 不能真正提供 McNemar 检验标准实现的单尾版本的原因是,就其性质而言,卡方本质上始终是单尾检验(参见,卡方是否始终是单边检验?)。

如果你真的想要单尾版本,你不需要任何特殊的包,从头开始编码很简单:

Performance
#             2nd Survey
# 1st Survey   Approve Disapprove
#   Approve        794        150
#   Disapprove      86        570
pbinom(q=(150-1), size=(86+150), prob=.5, lower.tail=FALSE)
# [1] 1.857968e-05
## or:
binom.test(x=150, n=(86+150), p=0.5, alternative="greater")
#   Exact binomial test
# 
# data:  150 and (86 + 150)
# number of successes = 150, number of trials = 236, p-value = 1.858e-05
# alternative hypothesis: true probability of success is greater than 0.5
# 95 percent confidence interval:
#  0.5808727 1.0000000
# sample estimates:
# probability of success 
#              0.6355932

编辑:
@mkla25 指出(现已删除)pbinom()上面的原始调用不正确。(现已更正;请参阅原始修订历史。)二项式 CDF定义为比例指定值,因此补码严格要将二项式 CDF 直接用于“大于”检验,您需要使用来包含指定值。(明确地说:对于“小于”测试,这不是必需的。)不需要您记住这种细微差别的更简单的方法是使用,它可以为您做到这一点。 >(x1)binom.test()