Logistic
McNemar 檢驗與條件邏輯回歸之間的關係
我對成對觀察中的二元響應數據建模感興趣。我們的目標是推斷組中事前干預的有效性,可能會調整幾個協變量,並確定作為乾預的一部分接受特別不同培訓的組是否存在效果修改。
給定以下形式的數據:
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')
對不起,這是一個老問題,我偶然發現了這個。
您的 mcnemar 測試代碼中存在錯誤。嘗試:
n <- 100 do.one <- function(n) { id <- rep(1:n, each=2) case <- rep(0:1, times=n) rs <- rbinom(n*2, 1, 0.5) c( 'pclogit' = coef(summary(clogit(case ~ rs + strata(id))))[5], 'pmctest' = mcnemar.test(table(rs[case == 0], rs[case == 1]))$p.value ) } out <- replicate(1000, do.one(n))