---
title: Contrastes para dos poblaciones pareadas
lang: es
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
library(tidyverse)
df <- read_csv("datos/datos-curso.csv")
```
En el [capítulo anterior](12-contrastes-dos-poblaciones-independientes.qmd) las dos poblaciones comparadas estaban formadas por individuos distintos: por ejemplo, un grupo de hombres y un grupo de mujeres, sin ninguna relación entre las observaciones de un grupo y las del otro. Sin embargo, en muchos estudios las dos poblaciones que se comparan no son independientes, sino que están **pareadas** o **relacionadas**: los mismos individuos se miden dos veces, por ejemplo antes y después de una intervención, o en dos condiciones, momentos o pruebas distintas. En ese caso cada individuo aporta un **par de valores relacionados entre sí**, y esa relación debe tenerse en cuenta al elegir el contraste, porque ignorarla (tratando los datos como si procedieran de dos grupos independientes) desaprovecha información y puede llevar a conclusiones erróneas.
En el conjunto de datos del curso, `notaA` y `notaB` son las calificaciones obtenidas por los mismos 120 alumnos en dos asignaturas distintas, por lo que cada alumno aporta un par de notas relacionadas entre sí (un alumno con buen rendimiento tenderá a obtener buenas notas en ambas asignaturas). Lo mismo ocurre con `calificacionA` y `calificacionB`, la versión cualitativa (Aprobado / Suspenso) de esas mismas dos calificaciones. Este capítulo presenta los contrastes adecuados para este tipo de comparaciones, distinguiendo según si la variable dependiente es cuantitativa o cualitativa.
## Variable dependiente cuantitativa: comparar `notaA` con `notaB`
Antes de plantear ningún contraste conviene visualizar la relación entre las dos notas de cada alumno, precisamente para comprobar que están pareadas y no son dos muestras independientes.
```{r}
ggplot(df, aes(x = notaA, y = notaB)) +
geom_point(alpha = 0.6, color = "steelblue") +
geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "darkred") +
labs(
title = "Nota de la asignatura A frente a la nota de la asignatura B",
subtitle = "por alumno; la línea discontinua marca la igualdad notaA = notaB",
x = "notaA",
y = "notaB"
) +
theme_minimal()
```
```{r}
cor(df$notaA, df$notaB, use = "complete.obs")
```
La correlación entre `notaA` y `notaB` es de 0.81: un alumno con una nota alta en la asignatura A tiende a tener también una nota alta en la B, lo que confirma que ambas notas están relacionadas y proceden de los mismos individuos, y no de dos grupos de alumnos distintos. En el diagrama de dispersión se observa además que la mayoría de los puntos quedan por debajo de la línea discontinua `notaA = notaB` (92 de los 115 alumnos con ambas notas), es decir, que la mayoría de los alumnos obtiene una nota más alta en B que en A. Precisamente por existir esta relación entre las dos mediciones, el contraste debe tener en cuenta el emparejamiento en lugar de tratar `notaA` y `notaB` como si procedieran de dos poblaciones independientes.
Para comparar las notas de la asignatura A y de la asignatura B de los mismos alumnos conviene empezar creando la variable que resume, para cada alumno, la diferencia entre ambas notas:
```{r}
df <- df %>% mutate(diferencia_AB = notaA - notaB)
```
Esta variable `diferencia_AB` es la clave de todo este apartado: un contraste sobre dos poblaciones pareadas puede plantearse de forma equivalente como un contraste sobre esta única variable diferencia frente al valor 0, exactamente igual que los contrastes sobre la media o la mediana de una sola población que se vieron en el capítulo de [contrastes para una población](11-contrastes-una-poblacion.qmd). Si no hay diferencia real entre las dos asignaturas, la diferencia `diferencia_AB` debería distribuirse en torno a 0; si una de las dos asignaturas tiende a puntuar más alto que la otra, la diferencia se desplazará sistemáticamente por encima o por debajo de 0.
Cabe señalar que cinco alumnos no tienen registrada la nota de la asignatura B (son valores perdidos, `NA`), por lo que la diferencia también queda como `NA` en esos cinco casos. Todos los análisis siguientes se basan, por tanto, en los 115 alumnos con datos completos en ambas asignaturas.
**Estadísticos descriptivos de la diferencia**
```{r}
library(moments)
df %>%
summarise(
n = sum(!is.na(diferencia_AB)),
media = mean(diferencia_AB, na.rm = TRUE),
dt = sd(diferencia_AB, na.rm = TRUE),
minimo = min(diferencia_AB, na.rm = TRUE),
Q1 = quantile(diferencia_AB, 0.25, na.rm = TRUE),
mediana = median(diferencia_AB, na.rm = TRUE),
Q3 = quantile(diferencia_AB, 0.75, na.rm = TRUE),
maximo = max(diferencia_AB, na.rm = TRUE),
asimetria = skewness(diferencia_AB, na.rm = TRUE),
apuntamiento = kurtosis(diferencia_AB, na.rm = TRUE)
)
```
Sobre los 115 alumnos con ambas notas, la diferencia `notaA - notaB` tiene una media de -0.88 y una desviación típica de 0.90, con un mínimo de -3.2 y un máximo de 1.1 (cuartiles -1.5, -0.8 y -0.3). El hecho de que la media y la mediana sean negativas indica que, en general, los alumnos obtienen una nota más alta en la asignatura B que en la A. El coeficiente de asimetría, -0.43, muestra una ligera asimetría negativa (cola algo más larga hacia valores muy negativos), y el apuntamiento, 2.86, es muy próximo a 3, el valor de referencia de la distribución normal, lo que no sugiere colas especialmente pesadas ni ligeras.
**Gráficos**
```{r}
ggplot(df, aes(y = diferencia_AB)) +
geom_boxplot(fill = "steelblue", alpha = 0.6) +
labs(
title = "Diagrama de caja y bigotes de la diferencia notaA - notaB",
y = "Diferencia (notaA - notaB)"
) +
theme_minimal()
```
El diagrama de caja confirma lo observado en los estadísticos descriptivos: la caja se sitúa casi por completo por debajo de 0, sin valores atípicos, lo que refuerza la idea de que la mayoría de los alumnos sacan mejor nota en la asignatura B que en la A.
**Test de normalidad de Shapiro-Wilk sobre la diferencia**
```{r}
shapiro.test(df$diferencia_AB)
```
El test de Shapiro-Wilk proporciona un p-valor de 0.074, mayor que 0.05, por lo que no se rechaza la hipótesis nula de normalidad: puede asumirse que la diferencia `diferencia_AB` sigue una distribución aproximadamente normal. Este resultado, junto con el hecho de disponer de $n=115$ pares (muy por encima de 30), respalda el uso del test t para datos pareados que se presenta a continuación.
### Test t para datos pareados
:::{#def-dospareadas-t-pareado}
## Test t para datos pareados
El _test t para datos pareados_ contrasta si existe diferencia entre las medias de dos poblaciones pareadas, es decir, medidas sobre los mismos individuos. Si $D$ es la variable que recoge, para cada individuo, la diferencia entre sus dos mediciones, y $\mu_D$ es la media poblacional de esa diferencia, el contraste plantea las hipótesis
$$H_0: \mu_D = 0 \quad \text{frente a} \quad H_1: \mu_D \neq 0,$$
siendo $H_0$ equivalente a afirmar que las medias de las dos poblaciones pareadas, $\mu_1$ y $\mu_2$, coinciden.
:::
**Requisitos**:
- La variable dependiente es cuantitativa y se mide dos veces sobre los mismos individuos (o sobre pares de individuos emparejados según algún criterio).
- La variable diferencia $D$ sigue una distribución normal, o bien el tamaño muestral es suficientemente grande ($n \geq 30$) para que el teorema central del límite garantice la normalidad aproximada de la media de las diferencias.
En el ejemplo, la diferencia `diferencia_AB` no se ha podido rechazar como normal (Shapiro-Wilk, $p=0.074$) y además se dispone de $n=115$ pares, por lo que se cumplen ambos requisitos y puede aplicarse con garantías el test t para datos pareados para comparar las notas medias de los mismos alumnos en las asignaturas A y B.
:::{#exm-dospareadas-t-pareado}
```{r}
t.test(df$notaA, df$notaB, alternative = "two.sided", paired = TRUE)
```
```{r}
media_ic <- function(x) {
x <- x[!is.na(x)]
m <- mean(x)
ee <- sd(x) / sqrt(length(x))
ic <- qt(0.975, df = length(x) - 1) * ee
data.frame(y = m, ymin = m - ic, ymax = m + ic)
}
ggplot(df, aes(x = "", y = diferencia_AB)) +
stat_summary(fun.data = media_ic, geom = "errorbar", width = 0.2, color = "darkred") +
stat_summary(fun = mean, geom = "point", size = 3, color = "darkred") +
labs(
title = "Media e intervalo de confianza al 95% de la diferencia notaA - notaB",
x = NULL,
y = "Diferencia (notaA - notaB)"
) +
theme_minimal()
```
El test t para datos pareados proporciona un estadístico $t=-10.51$ con 114 grados de libertad y un p-valor menor que $2.2\times10^{-16}$, muy inferior a 0.05, por lo que se rechaza la hipótesis nula $H_0: \mu_D=0$. La media estimada de la diferencia es -0.88, con un intervalo de confianza al 95% de $(-1.05, -0.72)$, que no contiene el 0. Se concluye, por tanto, que existe una diferencia significativa entre las notas medias de las asignaturas A y B para los mismos alumnos, siendo la nota media de la asignatura B significativamente superior a la de la asignatura A.
:::
### Test de Wilcoxon para datos pareados
:::{#def-dospareadas-wilcoxon-pareado}
## Test de Wilcoxon para datos pareados
El _test de Wilcoxon para datos pareados_ (o test de los rangos con signo de Wilcoxon) es la alternativa no paramétrica al test t para datos pareados. Contrasta si existe diferencia entre las distribuciones (habitualmente interpretada como diferencia entre las medianas) de dos poblaciones pareadas, sin necesidad de asumir normalidad de la diferencia. La hipótesis nula es
$$H_0: \text{la distribución de las diferencias es simétrica en torno a 0}$$
frente a la alternativa de que existe un desplazamiento sistemático de las diferencias por encima o por debajo de 0.
:::
**Requisitos**:
- La variable dependiente es cuantitativa (o al menos ordinal) y se mide dos veces sobre los mismos individuos.
- No se requiere que la diferencia siga una distribución normal, lo que lo hace preferible al test t para datos pareados cuando ese supuesto no se cumple o el tamaño muestral es pequeño.
Aunque en el ejemplo anterior la diferencia `diferencia_AB` pudo asumirse normal y el test t era plenamente aplicable, se ilustra a continuación su alternativa no paramétrica, útil como contraste de robustez o para las situaciones en las que la normalidad de la diferencia no pueda asumirse.
:::{#exm-dospareadas-wilcoxon-pareado}
```{r}
wilcox.test(df$notaA, df$notaB, alternative = "two.sided", paired = TRUE)
```
El test de Wilcoxon para datos pareados proporciona un estadístico $V=398$ y un p-valor de $2.44\times10^{-15}$, muy inferior a 0.05, por lo que se rechaza la hipótesis nula de simetría de las diferencias en torno a 0. La conclusión coincide con la del test t: existe una diferencia significativa entre las calificaciones de los mismos alumnos en las asignaturas A y B.
:::
## Variable dependiente cualitativa: comparar `calificacionA` con `calificacionB`
Las variables `calificacionA` y `calificacionB` recogen, para los mismos 120 alumnos, el resultado cualitativo (Aprobado / Suspenso) de las asignaturas A y B. Al tratarse de la misma pareja de alumnos medidos dos veces con una variable cualitativa binaria, no puede aplicarse aquí un contraste de independencia habitual, sino uno diseñado específicamente para datos pareados.
### Test de McNemar
:::{#def-dospareadas-mcnemar}
## Test de McNemar
El _test de McNemar_ contrasta si la proporción de una categoría de una variable cualitativa binaria cambia entre dos mediciones pareadas realizadas sobre los mismos individuos. Si $b$ es el número de individuos que pasan de la categoría 1 a la categoría 2 entre la primera y la segunda medición, y $c$ el número de individuos que pasan de la categoría 2 a la categoría 1, la hipótesis nula es
$$H_0: p_b = p_c$$
es decir, que las proporciones marginales de las dos mediciones son iguales, o equivalentemente, que no hay un cambio neto entre la primera y la segunda medición (los cambios en un sentido y en el otro se compensan).
:::
**Requisitos**:
- La variable dependiente es cualitativa binaria (dos categorías) y se mide dos veces sobre los mismos individuos.
- Los datos se organizan en una tabla de contingencia 2x2 **pareada**, en la que filas y columnas representan las categorías de la misma variable en la primera y en la segunda medición, y cada individuo contribuye a una única celda.
Nótese que en esta situación no puede utilizarse el test chi-cuadrado de independencia empleado en el capítulo de [contrastes para dos poblaciones independientes](12-contrastes-dos-poblaciones-independientes.qmd): allí las dos poblaciones comparadas estaban formadas por individuos distintos, de modo que cada observación era independiente de las demás, condición que exige el test chi-cuadrado. Aquí, en cambio, cada uno de los 120 alumnos aparece dos veces en la tabla (una en `calificacionA` y otra en `calificacionB`), por lo que las observaciones no son independientes entre sí, y aplicar un chi-cuadrado de independencia estándar sería incorrecto. El test de McNemar resuelve este problema centrándose únicamente en los alumnos que cambian de categoría entre las dos mediciones.
:::{#exm-dospareadas-mcnemar}
```{r}
tabla <- table(df$calificacionA, df$calificacionB)
tabla
```
```{r}
mcnemar.test(tabla, correct = TRUE)
```
De los 115 alumnos con calificación registrada en ambas asignaturas, 86 aprueban las dos y 14 suspenden las dos: estos alumnos no cambian de categoría y no aportan información al contraste. De los 29 alumnos restantes, 12 suspenden la asignatura A pero aprueban la B, mientras que solo 3 aprueban la A y suspenden la B. El test de McNemar, aplicado sobre estos cambios discordantes, proporciona un estadístico $\chi^2=4.27$ con 1 grado de libertad y un p-valor de 0.039, menor que 0.05, por lo que se rechaza la hipótesis nula de igualdad de proporciones marginales. Se concluye que la proporción de aprobados no es la misma en la asignatura A que en la B para los mismos alumnos: de hecho, la proporción de aprobados pasa del 77.4% (89 de 115) en la asignatura A al 85.2% (98 de 115) en la asignatura B, un aumento que resulta ser estadísticamente significativo.
:::
## Para saber más
Este capítulo ha cubierto el caso de dos mediciones pareadas. Cuando las dos poblaciones comparadas están formadas por individuos distintos, sin ninguna relación entre ellos, el contraste adecuado es el que se presenta en el capítulo de [contrastes para dos poblaciones independientes](12-contrastes-dos-poblaciones-independientes.qmd). Y cuando se dispone de más de dos medidas repetidas sobre los mismos individuos (por ejemplo, las cinco notas `notaA` a `notaE` de cada alumno, en lugar de solo dos), los contrastes t y de Wilcoxon para datos pareados dejan de ser aplicables y hay que recurrir a los que se presentan en el capítulo de [contrastes para más de dos poblaciones relacionadas](15-contrastes-medidas-repetidas.qmd).