Relación entre la prueba de McNemar y la regresión logística condicional

14

Estoy interesado en el modelado de datos de respuesta binaria en observaciones emparejadas. Nuestro objetivo es hacer una inferencia sobre la efectividad de una intervención pre-post en un grupo, ajustando potencialmente varias covariables y determinando si existe una modificación del efecto por parte de un grupo que recibió un entrenamiento particularmente diferente como parte de una intervención.

Datos dados de la siguiente forma:

id phase resp
1  pre   1
1  post  0
2  pre   0
2  post  0
3  pre   1
3  post  0

Y una tabla de contingencia de información de respuesta emparejada:2×2

PreCorrectoIncorrectoEnviarCorrectounsiIncorrectoCre

Estamos interesados ​​en la prueba de hipótesis: .H0 0:θC=1

La prueba de McNemar da: bajoH0(asintóticamente). Esto es intuitivo debido a que, bajo la hipótesis nula, es de esperar una proporción igual de los pares discordantes (byc) estar a favor de un efecto positivo (b) o un efecto negativo (c). Con la probabilidad de definición de caso positiva definidap=bQ=(si-C)2si+Cχ12H0 0siCsiC yn=b+c. La probabilidad de observar un par discordante positivo esppag=sisi+Cnorte=si+C .pag1-pag=siC

Por otro lado, la regresión logística condicional utiliza un enfoque diferente para probar la misma hipótesis, maximizando la probabilidad condicional:

L(X;β)=j=1norteExp(βXj,2)Exp(βXj,1)+Exp(βXj,2)

donde .Exp(β)=θC

Entonces, ¿cuál es la relación entre estas pruebas? ¿Cómo se puede hacer una prueba simple de la tabla de contingencia presentada anteriormente? Al observar la calibración de los valores p de clogit y los enfoques de McNemar bajo nulo, ¡pensaría que no tenían relación alguna!

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')

ingrese la descripción de la imagen aquí

AdamO
fuente
pb=pcad/bc=1
Me parece recordar que uno puede parametrizar la prueba de McNemar como prueba de una razón de posibilidades, por lo que me pregunto cómo se podría escribir la probabilidad (¿probabilidad condicional?) Para esa prueba.
AdamO
No estoy seguro de si te refieres a la versión exacta de la prueba de McNemar. Breslow y Day (1980) , pág. 164-166 y el paquete exact2x2 pueden ser referencias.
Randel

Respuestas:

4

Lo siento, es un problema antiguo, me encontré con esto por casualidad.

Hay un error en su código para la prueba mcnemar. Probar con:

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))

ingrese la descripción de la imagen aquí

eusebe
fuente
¡Guauu! Gracias y bienvenidos a la comunidad. Solo para aclarar, McNemar trabaja en pares coincidentes discordantes (?) ¿Se eliminan dichos pares de clogit? No veo cómo participa la identificación en el cálculo de los resultados de mcnemar. Quizás generar una correlación en estos ayudaría a dilucidar qué está haciendo clogit.
AdamO
2

Hay 2 modelos estadísticos competitivos. Modelo # 1 (hipótesis nula, McNemar): probabilidad correcta a incorrecta = probabilidad de incorrecta a correcta = 0.5 o equivalente b = c. Modelo # 2: probabilidad correcta a incorrecta <probabilidad de incorrecta a correcta o equivalente b> c. Para el modelo # 2 usamos el método de máxima verosimilitud y la regresión logística para determinar los parámetros del modelo que representan el modelo 2. Los métodos estadísticos se ven diferentes porque cada método refleja un modelo diferente.

AMM
fuente
¿Estás diciendo que Clogit no es una prueba de dos colas?
AdamO