Test de McNemar
El test de McNemar compara dos medidas binarias tomadas sobre los mismos sujetos, antes/después, dos evaluadores, dos pruebas diagnósticas, a diferencia del contraste chi-cuadrado de independencia, que asume grupos independientes. Es el equivalente para datos categóricos del test t pareado: ambos aprovechan el emparejamiento para conseguir un contraste más potente y más adecuado que tratar las dos medidas como muestras independientes.
¿Por qué no el contraste chi-cuadrado habitual?
Con datos pareados, un contraste chi-cuadrado de independencia estándar sería incorrecto. Asume que los dos conjuntos de observaciones son independientes, lo cual es falso por diseño aquí, son literalmente las mismas 100 personas encuestadas dos veces. Aplicar chi-cuadrado a datos pareados como si fueran dos muestras independientes ignora la correlación dentro de cada par y da un resultado no válido.
La tabla 2x2 para datos binarios pareados
Las respuestas de antes y después de cada sujeto caen exactamente en una de cuatro celdas, y solo dos de ellas acaban importando:
| Después: Sí | Después: No | |
|---|---|---|
| Antes: Sí | \(a\) | \(b\) |
| Antes: No | \(c\) | \(d\) |
El test de McNemar usa solo los pares discordantes, \(b\) (pasó de Sí a No) y \(c\) (pasó de No a Sí). Los pares concordantes \(a\) y \(d\) (personas que no cambiaron) no aportan información sobre si el cambio es asimétrico, así que quedan fuera del contraste por completo.
\[H_0: b = c \text{ (en la población)} \qquad H_1: b \neq c\]
Estadístico del contraste, con corrección por continuidad (la opción estándar por defecto):
\[\chi^2 = \frac{(|b-c|-1)^2}{b+c}\]
Sin corrección por continuidad:
\[\chi^2 = \frac{(b-c)^2}{b+c}\]
Bajo \(H_0\), ambas versiones siguen una distribución \(\chi^2\) con 1 grado de libertad.
Ejemplo resuelto
Una encuesta antes/después a los mismos votantes es el escenario clásico donde tratar las dos mediciones como independientes distorsionaría gravemente lo que realmente cambió:
Se encuesta a los mismos 100 votantes antes y después de ver un debate, preguntando si apoyan al Candidato A:
| Después: Sí | Después: No | Total | |
|---|---|---|---|
| Antes: Sí | 45 | 25 | 70 |
| Antes: No | 5 | 25 | 30 |
| Total | 50 | 50 | 100 |
Pares discordantes: \(b=25\) (apoyaba antes, se opuso después, perdió apoyo) y \(c=5\) (se oponía antes, apoyó después, ganó apoyo). Los 45 votantes que apoyaron siempre y los 25 que se opusieron siempre, las celdas concordantes \(a\) y \(d\), no juegan ningún papel en el contraste en sí.
Sin corrección:
\[\chi^2 = \frac{(25-5)^2}{25+5} = \frac{400}{30} = 13{,}333\]
\(gl=1\), \(p = 0{,}000261\).
Con corrección por continuidad:
\[\chi^2 = \frac{(|25-5|-1)^2}{30} = \frac{361}{30} = 12{,}033\]
\(gl=1\), \(p = 0{,}000523\).
Decisión: rechazamos \(H_0\) a cualquier nivel convencional, sea cual sea la versión usada. El debate produjo un cambio neto significativo en el apoyo, en concreto un desplazamiento en contra del Candidato A, ya que muchos más votantes pasaron de apoyar a oponerse (25) que al revés (5), aunque los totales marginales (70 frente a 50 de apoyo antes, pero 50 frente a 50 después) podrían sugerir a simple vista algo menos dramático de lo que revela el emparejamiento.

Cuando hay pocos pares discordantes
Como todo el test descansa únicamente en \(b\) y \(c\), un recuento discordante pequeño rompe la aproximación chi-cuadrado igual que le ocurre al contraste chi-cuadrado ordinario:
⚠️ El test de McNemar necesita suficientes pares discordantes para ser válido
Con pocos pares discordantes (una regla habitual: \(b+c < 25\)), la aproximación chi-cuadrado no es fiable, igual que el problema de frecuencias esperadas pequeñas del contraste chi-cuadrado ordinario. En ese caso usa la versión binomial exacta: bajo \(H_0\), \(b \sim \text{Binomial}(b+c, 0{,}5)\), y el p-valor exacto se obtiene directamente de la distribución binomial en lugar de la aproximación chi-cuadrado. mcnemar.test() no ofrece esta versión exacta directamente, usa binom.test(b, b+c, p = 0.5) sobre los recuentos discordantes cuando \(b+c\) es pequeño.
Más allá de 2 categorías: el test de Stuart-Maxwell
Cuando la variable pareada tiene más de dos categorías, no solo Sí/No, la generalización del test de McNemar es el test de Stuart-Maxwell, o el test de simetría de Bowker para el caso general \(r \times r\). Contrasta si la tabla completa es simétrica respecto a su diagonal. No se cubre en profundidad aquí, pero conviene saber que existe para cuando un resultado pareado tiene tres o más categorías.
Realizar el test en R
mcnemar.test() acepta directamente la tabla 2x2, y la versión binomial exacta de arriba solo necesita los dos recuentos discordantes:
tabla <- matrix(c(45, 25, 5, 25), nrow = 2, byrow = TRUE,
dimnames = list(Antes = c("Sí","No"), Despues = c("Sí","No")))
mcnemar.test(tabla) # con corrección por continuidad (por defecto)
mcnemar.test(tabla, correct = FALSE)
# Versión binomial exacta para pocos pares discordantes
binom.test(25, 25 + 5, p = 0.5)
💡 McNemar vs chi-cuadrado vs test t pareado: cuál usar
Dos grupos independientes, resultado categórico: usa el contraste chi-cuadrado de independencia. Mismos sujetos medidos dos veces, resultado categórico/binario: usa el test de McNemar, esta entrada. Mismos sujetos medidos dos veces, resultado continuo/numérico: usa el test t pareado. El hilo común entre los tres: siempre que las observaciones estén pareadas o emparejadas por diseño, usa un método que aproveche ese emparejamiento, nunca trates datos pareados como si vinieran de grupos independientes.