我对成对观察中的二元响应数据建模感兴趣。我们的目标是推断组中事前干预的有效性,可能会调整几个协变量,并确定作为干预的一部分接受特别不同培训的组是否存在效果修改。
给定以下形式的数据:
id phase resp
1 pre 1
1 post 0
2 pre 0
2 post 0
3 pre 1
3 post 0
以及成对响应信息
我们对假设检验感兴趣:。
McNemar 检验给出:在下(渐近)。这是直观的,因为在零值下,我们期望相等比例的不一致对(和)有利于正面效应()或负面效应()。定义了正例定义的概率和。观察到正不一致对的几率是。
另一方面,条件逻辑回归使用不同的方法通过最大化条件似然来检验相同的假设:
其中。
那么,这些测试之间有什么关系呢?如何对前面介绍的列联表进行简单测试?查看 clogit 和 McNemar 方法在 null 下的 p 值校准,您会认为它们完全不相关!
library(survival)
n <- 100
do.one <- function(n) {
id <- rep(1:n, each=2)
ph <- rep(0:1, times=n)
rs <- rbinom(n*2, 1, 0.5)
c(
'pclogit' = coef(summary(clogit(rs ~ ph + strata(id))))[5],
'pmctest' = mcnemar.test(table(ph,rs))$p.value
)
}
out <- replicate(1000, do.one(n))
plot(t(out), main='Calibration plot of pvalues for McNemar and Clogit tests',
xlab='p-value McNemar', ylab='p-value conditional logistic regression')