Me interesa el modelado de los datos de respuesta binaria en observaciones emparejadas. Nuestro objetivo es hacer una inferencia sobre la eficacia de una intervención previa a la intervención 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.
Dados los datos 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 un $2 \times 2$ cuadro de contingencia de la información de respuesta emparejada:
\begin {array}{cc|cc} & & \mbox y \\ & & \mbox y \mbox {Incorrecto} \\ \hline \mbox y \mbox {Correcto} & a & b& \\ & \mbox {Incorrecto} & c& d& \\ \end {\i1}{\b1}
Estamos interesados en la prueba de hipótesis: $ \mathcal {H}_0: \theta_c = 1$ .
La prueba de McNemar da: $Q = \frac {(b-c)^2}{b+c} \sim \chi ^2_1$ bajo $ \mathcal {H}_0$ (asintóticamente). Esto es intuitivo porque, bajo el nulo, esperaríamos una proporción igual de los pares discordantes ( $b$ y $c$ ) para favorecer un efecto positivo ( $b$ ) o un efecto negativo ( $c$ ). Con la probabilidad de definición de caso positivo definida $p = \frac {b}{b+c}$ y $n=b+c$ . Las probabilidades de observar una pareja discordante positiva es $ \frac {p}{1-p}= \frac {b}{c}$ .
Por otra parte, la regresión logística condicional utiliza un enfoque diferente para probar la misma hipótesis, al maximizar la probabilidad condicional:
$$ \mathcal {L}(X ; \beta ) = \prod_ {j=1}^n \frac { \exp ( \beta X_{j,2})}{ \exp ( \beta X_{j,1}) + \exp ( \beta X_{j,2})}$$
donde $ \exp ( \beta ) = \theta_c $ .
Entonces, ¿cuál es la relación entre estas pruebas? ¿Cómo se puede hacer una simple prueba de la tabla de contingencia presentada anteriormente? Mirando la calibración de los valores p de los enfoques de Clogit y McNemar bajo el nulo, ¡pensarías que no tienen ninguna relación!
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')