Capítulo 4 Diferencias que presenta una variable numérica entre dos grupos
En este capítulo veremos procedimientos para contrastar si las diferencias numéricas obtenidas al comparar dos tratamientos (o dos poblaciones) son lo suficientemente grandes como para que su única causa sea atribuible al azar.
Este tipo de pruebas se suelen usar cuando se elige una muestra de individuos que han seguido cierto tratamiento (por ejemplo, un placebo), y otra muestra que ha recibido otro tratamiento (por ejemplo, un fármaco de pruebas).
Dependiendo de cómo se construyan ambas muestras, clasificamos el experimento en dos clases:
Muestras apareadas: Cuando en realidad no hay dos grupos de pacientes, si no que solo hay un grupo de ellos, pero de cada individuo se tienen dos medidas. Esto puede ser debido por ejemplo a que se ha medido cada uno en dos oacasiones (antes y después de un tratamiento) o se ha medido al pacientes con dos aparatos que deberían haber dado un resultado similar.
Muestras independientes: Este es el caso más común, en el que realmente si hay dos grupos diferentes de individuos, cada uno con una medición numérica. Se supone que los individuos de un grupo de tratamiento han sido extraídos independientemente de los del otro.
4.1 Muestras apareadas o relacionadas
Aparecen por ejemplo en los estudios de pacientes “antes y después”, es decir, cuando en un una base de datos de de pacientes tenemos dos columnas de datos numéricos, una correspondientes a los valores antes del tratamiento y otra correspondientes al valor después. En este caso también decimos que cada individuo es su propio control.
Hay otros ejemplos de estudios con apareamiento
Se deben realizar de modo apareados los estudios en que al medir una variable sospechamos de más fuentes de variabilidad además del tratamiento. Por ejemplo, si creemos que el sexo de los individuos puede influir notablemente en la variable que medimos y queremos anular el efecto tenemos varias posibilidades:
Hacer un estudio con todos los individuos del mismo sexo en cada muestra, y otro con todos los individuos del otro sexo. A esto se le denomina estratificar por sexos. En este caso lo que tenemos son dos estudios con muestras independientes.
Asociar a cada individuo del primer grupo, un individuo “que se parezca” del segundo. Por ejemplo, si pensamos que conjuntamente el sexo y la edad pueden influir en el resultado, podemos hacer que por cada individuo del primer grupo, se elija un individuo del segundo, del mismo sexo y de edad similar. A pesar de las dificultades que comporta hacer un estudio con esas características, habremos reducido la posibilidad de que las variables sexo y edad hayan influido mucho en las diferencias observadas entre tratamientos.
4.1.1 Hipótesis nula en estudios apareados
En los contrastes con muestras apareadas, la hipótesis nula es que no la distribución de los valores en una y otra medición son similares. Como en todo contraste de hipótesis, se declara que el efecto es estadísticamente significativo si la significación calculada es inferior a cierta cantidad pequeña (5% o 1% típicamente).
Los contrastes se realizan calculando las diferencias existentes entre cada observación de un grupo y la observación asociada en el segundo. Si las mencionadas diferencias tienen una distribución aproximadamente normal o bien la muestra es grande, la prueba que se suele usar es la t-student para muestras apareadas. Esta prueba funciona del siguiente modo. Si se dan las condiciones de validez (las diferencias son normales), las diferencias deberían ser aproximadamente normales de media cero. Si al calcular la media de las diferencias, el valor obtenido en la muestra no es consistente con una posible media de cero, se rechaza la hipótesis nula. Es decir, si la diferencia entre lo observado y la hipótesis nula no es atribuible al puro azar, aceptamos que hay diferencias entre los grupos.
Una prueba menos exigente es el contraste no paramétrico de Wilcoxon. Este último considera las diferencias entre cada observación y su control. Si la hipótesis nula fuese cierta, las diferencias negativas serían similares en cantidad y tamaño a las diferencias positivas. La prueba de Wilcoxon examina la discrepancia existente entre los resultados observados y la predicción de la hipótesis nula.
Ejemplo
Se estudia si mejoran unos niños su velocidad de lectura en palabras por minuto. Para ellos se les mide al inicio de un estudio, se les vuelve a medir tras una intervención. Se toma nota de la diferencia entre la velocidad final y la inicial. Puede descargar los datos del experimento en la base de datos lectura-anova.sav. La exploración de los primeros casos, ordenados de menor a mayor diferencia nos ofrece:
df=read_sav("datos/lectura-anova.sav", user_na=FALSE) %>% haven::as_factor()
Grupo | Antes | Despues | Diferencia | gr1 | gr2 |
---|---|---|---|---|---|
Control | 10.0 | 19 | 9.3 | 0 | 0 |
Control | 7.0 | 20 | 13.0 | 0 | 0 |
Técnica I | 6.5 | 23 | 16.2 | 1 | 0 |
Técnica I | 9.5 | 19 | 9.5 | 1 | 0 |
Control | 7.5 | 16 | 8.5 | 0 | 0 |
Técnica II | 7.5 | 17 | 9.5 | 0 | 1 |
Ya que los datos están ordenados de forma que los peores resultados se muestran primero, y estos han experimentado mejoría, parece que evidentemente vamos a encontrar gran diferencia en contra de la hipótesis nula. Veamos qué distribución presentan las diferencias:
ggplot(df, aes(x=Diferencia))+geom_histogram(fill="lightblue")+ geom_rug(sides = "b", aes(y = 0), position = "jitter", colour = "blue")+coord_cartesian(xlim=c(0,20))+geom_vline(xintercept = 0,lty=2,col="red")

Se ve que todos los individuos han mejorado. la evidencia contra la hipótesis nula la encontramos en esta tabla
df %>% desc1vn(vNum = "Diferencia",columnas = c("mediaet","p.intra","ic1","ic2")) %>%
mutate(Variable="Diferencia") %>% select(Variable,everything()) %>%
knitr::kable(booktabs=T,
col.names=c("Variable","media±et", "p (signif.)", "ic95%(min)", "ic95%(max)"))
Variable | media±et | p (signif.) | ic95%(min) | ic95%(max) |
---|---|---|---|---|
Diferencia | 12.15±0.39 | <0.001* | 11 | 13 |
La diferencia observada en los niños representa una mejoría de más de 12 palabras por minuto. Sea cual sea la mejoría media si se aplicase en toda la población de niños similares a estos, los datos observados están en contra de la hipótesis nula de no mejoría (p<0.001). Tenemos una confianza del 95% de que sea cual sea la mejoría media, el valor real está en algún lugar entre 11 y 13 palabras por minuto (redondeando).
En SPSS podemos realizar este calculo seleccionando el menú: “_Analizar - Comparar medias - prueba T para muestras apareadas”. Allí marcamos el par de variables Antes y Después. También podríamos haber elegido el menú”_Analizar - Comparar medias - prueba T para una muestra” y haber trabajado con la variable Dferencia. El resultado es el mismo.
4.2 Dos Muestras independientes
Sirven para tratar problemas como el de si el nivel de hierro es similar en los individuos que padecen determinada enfermedad frente a los individuos sanos. Para ello podríamos elegir una muestra de individuos enfermos y otra de sanos, y comparar si los valores de una muestra tienen tendencia a ser mayores que los de la otra.
En los contrastes con muestras independientes, la hipótesis nula es que los valores obtenidos en una y otra muestra son similares, frente a la hipótesis alternativa de que son diferentes. El valor obtenido en la significación nos permite decidir si se rechaza o no la hipótesis nula.
Hay varias maneras de realizar este tipo de contrastes:
Prueba t-student para dos medias: Se basa en contrastar si las medias de cada grupo son similares. Este tipo de contrastes es válido cuando se da alguna de las siguientes condiciones:
Las desviaciones típicas/varianzas son similares y las observaciones de cada muestra son normales.
Las desviaciones típicas/varianzas son similares y los tamaños muestrales son grandes.
Hay diferencia notable entre las varianzas de cada grupo, pero los tamaños de cada muestra son similares y además las muestras son grandes o aproximadamente normales.
Pruebas no paramétricas para muestras independientes: No requieren ningún tipo de suposición sobre la distribución de las muestras. Esto permite que se puedan usar con variables discretas u ordinales. Pruebas populares son las de Mann-Whitney, Wilcoxon o la prueba de Kolmogorov-Smirnov de dos muestras.
En el caso de que queramos aplicar la prueba t-student, debemos tener en cuenta que esta se ve muy afectada en caso de que las muestras no estén similarmente dispersas, y es necesario hacer una corrección. Debemos comprobar que no existan observaciones anómalas. Disponemos del contraste de Levene para la igualdad de varianzas. De hecho, SPSS lo realiza automáticamente siempre que se desea realizar la prueba t-student, y muestra los resultados para la prueba t-student, tanto en el caso de que el usuario desee admitir la igualdad de varianzas, como rechazarla. Se suele recomendar al usuario elegir un nivel de significación alto para esta prueba (hasta el 15%).
Ejemplo
Se cree que la ingesta de calcio reduce la presión sanguínea. Para contrastarlo se decidió elegir a 21 individuos de características similares para participar en un estudio. A 10 de ellos elegidos al azar, se les asignó un tratamiento consistente en un suplemento de calcio durante 3 meses y se observó la diferencia producida en la presión arterial (la que había “antes” menos la que había “después”). A los 11 individuos restantes se les suministró un placebo y se midió también la diferencia. Los datos podemos encontrarlos en la base de datos [calcio.sav]{datos/calcio.sav}, de la que exploramos las primeras líneas:
df=read_sav("datos/calcio.sav", user_na=FALSE) %>% haven::as_factor()
df %>% head() %>% knitr::kable(booktabs=T)
Grupo | Antes | Despues | Diferencia |
---|---|---|---|
Placebo | 110 | 121 | -11 |
Calcio | 111 | 116 | -5 |
Placebo | 114 | 119 | -5 |
Calcio | 110 | 114 | -4 |
Calcio | 112 | 115 | -3 |
Placebo | 102 | 105 | -3 |
solo nos interesa la variable Diferencia comprarada entre ambos grupos, pero de todas formas vamos a examinar las mediciones Antes. La razón es que al realizar un experimento, repartimos a los individuos en dos grupos, y estamos muy interesados en que los dos grupos sean muy similares en el punto de partida (medición basal):
grid.arrange(
ggplot(df,aes(x=Grupo,y=Antes))+geom_boxplot(fill="lightblue"),
ggplot(df,aes(x=Grupo,y=Diferencia))+geom_boxplot(fill="lightblue"),
ncol=2)
Se aprecia que los dos grupos eran similares al iniciarse el experimento. Sin embargo el grupo de que tomo el Placebo practicamente se quedó igual, y el que tomó Calcio experimentó una mejoría. Nos queda por saber si esta mejoría es explicable por el azar o va más allá (diferencia estadísticamente significativa entre grupos).
df %>% generaTablatTestPorGrupo("Grupo", c("Antes","Diferencia"),
columnas = c("n","mediaet","p.t","ci95", "p.w")) %>%
knitr::kable( booktabs = T,
col.names=c("Variable",
"n","media±et",
"n","media±et",
"p (parám.)","ic95% dif.", "P (no parám).")) %>%
add_header_above(c(" " = 1, "Placebo" = 2, "Calcio" = 2, " "=3))
Variable | n | media±et | n | media±et | p (parám.) | ic95% dif. | P (no parám). |
---|---|---|---|---|---|---|---|
Antes | 11 | 113.27±2.85 | 10 | 114.90±3.61 | 0.714 | 1.63[-7.58,10.83] | 0.944 |
Diferencia | 11 | -0.27±1.87 | 10 | 5.00±2.91 | 0.129 | 5.27[-1.71,12.26] | 0.323 |
A la vista de los resultados, entre el grupo Calcio y el Placebo no hay diferencias estadísticamente significativas, no solo al inicio del experimento, si no que el cambio producido en los individuos también es compatible con la hipótesis nula de que obtienen resultados similares. Las significaciones obtenidas se han realizado tanto con la prueba paramétrica de la t-student como con una prueba no paramétrica. Ambas obtienen conclusiones similares.
Podemos realizar la prueba paramétrica en SPSS en el menú: “Analizar - Comparar medias -Prueba t para muestras independientes”. En la variable Grupo hemos de indicar que comparamos los grupos 0 (Placebo), con el grupo 1 (Calcio), pues así es como se han codificado numéricamente las variables. El el campo de Variables de prueba situamos las variables Antes y Diferencia.
La prueba no paramétrica está en un diálogo análogo que obtenemos en el menú “_Analizar - Pruebas no paramétricas - Cuadros de dialogo antiguos - 2 muestras independientes”
Una representación gráfica de los intervalos de confianza muestra que ambos tienen el común el valor cero. Es decir, ninguno de ellos puede decirse que presente una mejoría significativa. ¿Podría interpretarse como que entre ellos no hay diferencia? Esto es algo que no se deduce directamente mirando a los intervalos de confianza, aunque nuestra intuición nos indique que no deben haber mucha diferencia entre ellas.
resumen=df %>% gather(Variable,Valor,-Grupo) %>%
group_by(Grupo,Variable) %>%
summarise(Media=mean(Valor),
n=length(Valor),
IC=sd(Valor)/sqrt(n)*qt(0.975,n-1))
ggplot(resumen %>% filter(Variable=="Diferencia"), aes(x=Grupo,y=Media)) +
geom_errorbar(aes(ymin=Media-IC,ymax=Media+IC),width=0.2, size=1, color="navyblue")+
geom_point( size=4, shape=21, fill="white")+ylab("Diferencia")+
geom_hline(yintercept=0,lty=2,color="red")

¿Es lo mismo que la diferencia entre dos grupos sea significativa que el que sus respectivos intervalos de confianza para la media no se toquen?
Parecería que es lo mismo, pero no es así. La realidad es que si hay diferencia significativa entre la media de dos grupos, entonces los intervalos de confianza se tocan nada o muy poco. Vamos a ilustrarlo retomando la base de datos 2poblaciones-Mismotrabajo-DiferenteNutricion.sav.
Vamos a usar tanto las pruebas t-student como las no paramétricas para estudiar las diferencias entre los individuos de Málaga y Tanger en todas las variables numéricas.
Normalmente en una publicación científica pondríamos como tabla de resultados algo similar a esto:
vNumericas=names(df) %>% setdiff("Grupo")
df %>% generaTablatTestPorGrupo("Grupo", vNumericas,
columnas = c("n","mediaet","p.t","ci95","p.w")) %>%
knitr::kable( booktabs = T,
col.names=c("Variable",
"n","media±et",
"n","media±et",
"p dif.","IC95% dif.", "p")) %>%
add_header_above(c(" " = 1, "Tanger" = 2, "Málaga" = 2,"t-test"=2, "No normal"=1)) %>%
kable_styling(font_size=12)
Variable | n | media±et | n | media±et | p dif. | IC95% dif. | p |
---|---|---|---|---|---|---|---|
Colesterol | 30 | 162.67±8.32 | 50 | 209.12±6.06 | <0.001* | 46.45[26.15,66.76] | <0.001* |
Trigliceridos | 30 | 82.13±8.39 | 50 | 113.22±9.98 | 0.018* | 31.09[5.45,56.72] | 0.018* |
Glucemia | 30 | 78.03±2.09 | 50 | 88.18±2.72 | 0.004* | 10.15[3.40,16.89] | <0.001* |
PAS | 30 | 119.83±1.86 | 50 | 121.70±1.83 | 0.472 | 1.87[-3.28,7.01] | 0.596 |
PAD | 30 | 72.50±1.80 | 50 | 70.30±1.37 | 0.329 | -2.20[-6.67,2.27] | 0.322 |
Peso | 30 | 72.67±1.46 | 50 | 81.38±1.25 | <0.001* | 8.71[4.94,12.49] | <0.001* |
Talla | 30 | 170.33±0.86 | 50 | 169.48±0.67 | 0.431 | -0.85[-3.01,1.30] | 0.611 |
Consumo | 30 | 1909.17±87.23 | 50 | 3528.04±78.71 | <0.001* | 1618.87[1387.71,1850.04] | <0.001* |
Gasto | 30 | 1894.20±34.52 | 50 | 1880.30±62.59 | 0.845 | -13.90[-154.73,126.93] | 0.972 |
Normalmente no mostraríamos los dos tipos de significación si no que haríamos la elección de usar pruebas paramétricas o no paramétricas según se den las condiciones de validez. Obsérvese que cuando las muestras no son pequeñas y las desviaciones de la normalidad no son grandes, ambos tipos de prueba suelen ofrecer significaciones similares.
Veamos para varias de estas variables como son los ic95% para las medias en cada grupo, y para las diferencias entre ambos grupos. La diferencia entre ambos grupos será significativa cuando el IC)%% para la diferencia no contiene al cero. En ese caso observaremos que los IC95% para cada grupo se tocan nada o muy poco.
dfResumen=df %>% generaTablatTestPorGrupo("Grupo", vNumericas,
columnas = c("ic1","ic2", "ci_min","ci_max"))
dfResumenTidy = dfResumen %>% select(-ci_min,-ci_max) %>% gather(Clave,Valor,-Variable) %>%
separate(Clave,c("Concepto","Grupo")) %>% spread(Concepto,Valor)
dfResumen %>%
knitr::kable(booktabs=T,
col.names=c("Variable",
"ic(min)","ic(max)" ,
"ic(min)","ic(max)",
"ic.dif.(min)", "ic.dif.(max)")) %>%
add_header_above(c(" " = 1, "Tanger" = 2, "Málaga" = 2,"Málaga-Tanger"=2))
Variable | ic(min) | ic(max) | ic(min) | ic(max) | ic.dif.(min) | ic.dif.(max) |
---|---|---|---|---|---|---|
Colesterol | 146 | 180 | 197 | 221 | 26.1 | 66.8 |
Trigliceridos | 65 | 99 | 93 | 133 | 5.4 | 56.7 |
Glucemia | 74 | 82 | 83 | 94 | 3.4 | 16.9 |
PAS | 116 | 124 | 118 | 125 | -3.3 | 7.0 |
PAD | 69 | 76 | 68 | 73 | -6.7 | 2.3 |
Peso | 70 | 76 | 79 | 84 | 4.9 | 12.5 |
Talla | 169 | 172 | 168 | 171 | -3.0 | 1.3 |
Consumo | 1731 | 2088 | 3370 | 3686 | 1387.7 | 1850.0 |
Gasto | 1824 | 1965 | 1755 | 2006 | -154.7 | 126.9 |
Para el colesterol se ve que el IC95% para la diferencia no contiene al valor cero, es decir, tenemos evidencia estadísticamente significativa en contra de que las medias en ambos grupos sean iguales. Por otro lado, vemos que los IC95% para las medias de colesterol en ambos grupos no se cruzan. Hasta ahora todo coincide con la intuición.
laVariable="Colesterol"
grid.arrange(
ggplot(dfResumenTidy %>% filter (Variable==laVariable), aes(x=Grupo, y=(ic1+ic2)/2)) +
geom_errorbar(aes(ymin=ic1,ymax=ic2),width=0.2, size=1, color="navyblue")+
geom_point( size=4, shape=21, fill="white")+ylab(laVariable)+xlab(""),
ggplot(dfResumen %>% filter (Variable==laVariable), aes(x="Málaga-Tanger", y=(ci_max+ci_min)/2)) +
geom_errorbar(aes(ymin=ci_min,ymax=ci_max),width=0.2, size=1, color="navyblue")+
geom_point( size=4, shape=21, fill="white")+ylab(str_c("Diferencia de ", laVariable)) +
xlab("")+geom_hline(yintercept=0,lty=2,color="red"),
ncol=2)

En cuanto a la siguiente variable, Triglicéridos y Glucemia nos encontramos la sorpresa: observamos que el IC95% para la diferencia de medias no contiene (por poco) al cero, es decir, la diferencia de medias es apenas significativamente diferente de cero, sin embargo los intervalos de confianza dentro de cada grupo se cruzan (por poco).

Estudie lo que ocurre en el resto de variables y compruebe si gráficamente es cierto lo de que:
Cuando la diferencia entre dos grupos es estadísticamente significativa, los IC95% de cada grupo se tocan nada o muy poc.o







En las publicaciones suele verse un tipo de gráfico u otro: El que muestra los intervalos de confianza en cada grupo, o el que sirve para estudiar las diferencias entre dos grupos. Existe una tercera posibilidad, usando la libreria emmeans de R, donde además de observarse los intervalos de confianza para la media en cada grupo, una flecha interior indica cuando las comparaciones entre dos grupos son significativas: Ocurre justo cuando no tienen intersección común. Este tipo de gráficos será muy útil cuando haya muchas comparaciones a realizar entre grupos (análisis posthoc de ANOVA).
listaGraficos=vNumericas %>% map( ~ lm(formula(str_c(.," ~ Grupo")),data=df) %>%
emmeans("Grupo") %>% plot(comparisons=TRUE)+xlab(.x)+ylab("")+coord_flip())
do.call("grid.arrange", c(listaGraficos, ncol=3))
