Este tutorial está diseñado para guiar a los estudiantes en la comparación de medias de dos grupos utilizando la prueba t, una técnica fundamental en la inferencia bioestadística.
Prueba t para muestras independientes: Cuando los dos grupos no tienen relación entre sí (ej. un grupo de tratamiento y un grupo control).
Intervalos de confianza para muestras independientes: Grupo de tratamiento y grupo control.
Prueba t para muestras pareadas (dependientes): Cuando las observaciones de los dos grupos están relacionadas (ej. mediciones “antes y después” en el mismo paciente).
Intervalos de confianza para la diferencia de medias para muestras pareadas (dependientes: Mediciones de “antes y después” en el mismo pacientes.
Para cada prueba, desarrollaremos un ejemplo clínico, mostraremos el cálculo manual basado en las fórmulas, y luego implementaremos la solución en R.
Al finalizar esta sección, el estudiante será capaz de:
t.test(..., paired = FALSE) en R.Usamos esta prueba cuando comparamos las medias de dos grupos que no están relacionados. Los sujetos en el Grupo A son diferentes e independientes de los sujetos en el Grupo B (ej. grupo tratamiento vs. grupo placebo).
Importante: ¿Varianzas Iguales o Desiguales?
Prueba t de Student (clásica): Asume que las varianzas en ambas poblaciones son iguales.
Prueba t de Welch: No asume que las varianzas sean iguales. Es la prueba por defecto en R y se considera más robusta y segura de usar en la mayoría de las situaciones.
Usaremos la Prueba t de Welch.
Supuestos:
Las dos muestras son independientes.
Los datos en cada grupo siguen (aproximadamente) una distribución normal, o ambas muestras son grandes (n₁ > 30 y n₂ > 30).
Fórmula (Prueba t de Welch):
La H₀ es que la diferencia de medias poblacionales es 0 (μ₁ - μ₂ = 0). El estadístico t se calcula como:
\(t = \frac{(\bar{x}_1 - \bar{x}_2) - 0}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}\)
Donde:
Un investigador compara dos técnicas quirúrgicas para una apendicectomía: la técnica nueva (Grupo A) y la técnica estándar (Grupo B). Se registra el tiempo de estancia hospitalaria (en días) de pacientes asignados aleatoriamente a cada grupo.
Datos:
¿Existe diferencia significativa en el tiempo medio de estancia entre las dos técnicas?
Paso 1: Calcular medias y varianzas de cada grupo
Grupo A (Nueva):
Grupo B (Estándar):
Paso 2: Calcular el Error Estándar (denominador de la fórmula t)
\(SE = \sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}} = \sqrt{\frac{0.9}{10} + \frac{1.0}{9}}\)
\(SE = \sqrt{0.09 + 0.111...} = \sqrt{0.2011...} \approx 0.4485\)
Paso 3: Calcular el estadístico t
\(t = \frac{\bar{x}_1 - \bar{x}_2}{SE} = \frac{5.3 - 7.333}{0.4485} = \frac{-2.033}{0.4485} \approx -4.533\)
Paso 4: Grados de libertad (aproximación simple)
\(gl = min(n_1-1, n_2-1) = min(10-1, 9-1) = min(9, 8) = 8\).
R calculará un valor más preciso, cercano a 16.9, usando la fórmula completa de Welch-Satterthwaite).
# 1. Creamos los vectores con los datos
grupo_A_nueva <- c(5, 6, 4, 5, 7, 6, 5, 4, 6, 5)
grupo_B_estandar <- c(7, 8, 6, 7, 9, 8, 6, 7, 8)
# 2. Ejecutamos la prueba t independiente (Welch's t-test)
# Esta es la prueba por defecto cuando paired=FALSE
resultado_indep <- t.test(grupo_A_nueva, grupo_B_estandar,
paired = FALSE,
var.equal = FALSE)
# 3. Mostramos el resultado
print(resultado_indep)
##
## Welch Two Sample t-test
##
## data: grupo_A_nueva and grupo_B_estandar
## t = -4.5341, df = 16.554, p-value = 0.0003125
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -2.981433 -1.085234
## sample estimates:
## mean of x mean of y
## 5.300000 7.333333
grupo_A_nueva <- c(...) y
grupo_B_estandar <- c(...): Creamos dos vectores, uno
para cada grupo independiente. El tamaño (n) puede ser diferente.t.test(grupo_A_nueva, grupo_B_estandar, ...):
paired = FALSE: Este es el valor por defecto, pero lo
incluimos para ser explícitos. Indica que los grupos no están
relacionados.var.equal = FALSE: Este es el argumento clave para
ejecutar la Prueba t de Welch. Le dice a R que
no asuma que las varianzas son iguales. Es la opción
recomendada.La salida Welch Two Sample t-test confirma el
análisis.
t = -4.5332: El estadístico t, que coincide
perfectamente con nuestro cálculo manual.df = 16.9...: Los grados de libertad calculados por R
usando la fórmula de Welch-Satterthwaite. (Note que es diferente de
nuestra aproximación simple de 8).p-value = 0.000299: El valor p.mean of x: 5.3 y mean of y: 7.333: Las
medias de cada grupo, coincidiendo con nuestros cálculos.95 percent confidence interval: [-2.98, -1.08]: Este es
el IC para la diferencia de medias (μ₁ - μ₂). Como el intervalo
no incluye el 0, esto refuerza nuestra conclusión de que la diferencia
es estadísticamente significativa.Calcular e interpretar un intervalo de confianza para la diferencia entre dos medias poblacionales (\(\mu_1 - \mu_2\)) en un diseño independiente.
Aquí estimamos el rango de valores plausibles para la diferencia entre las medias de los dos grupos (\(\mu_1 - \mu_2\)). Usaremos la fórmula de Welch (que no asume varianzas iguales), ya que es la que R usa por defecto y es más robusta.
La fórmula general es:
\[ IC(\mu_1 - \mu_2) = (\bar{x}_1 - \bar{x}_2) \pm (t^* \times \sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}) \]
Donde:
\((\bar{x}_1 - \bar{x}_2)\): La diferencia observada entre las medias muestrales.
\(\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}\): El Error Estándar (EE) de la diferencia (Prueba de Welch).
\(t^*\): El valor t-crítico. Importante: Los grados de libertad (\(gl\)) para la prueba de Welch se calculan con la fórmula de Welch-Satterthwaite, que es compleja.
Usaremos los datos de estancia hospitalaria (Técnica Nueva vs. Estándar).
Datos resumen (calculados en el ejemplo anterior):
Grupo A (Nueva): \(\bar{x}_1 = 5.3\), \(s_1^2 = 0.9\), \(n_1 = 10\)
Grupo B (Estándar): \(\bar{x}_2 \approx 7.333\), \(s_2^2 = 1.0\), \(n_2 = 9\)
Paso 1: Calcular la diferencia de medias y el Error Estándar (EE)
Diferencia: \(\bar{x}_1 - \bar{x}_2 = 5.3 - 7.333 = -2.033\)
Error Estándar (EE): \(\sqrt{\frac{0.9}{10} + \frac{1.0}{9}} = \sqrt{0.09 + 0.111...} \approx 0.4485\)
Paso 2: Encontrar grados de libertad (\(gl\)) y valor \(t^*\) crítico
Grados de Libertad: El cálculo manual de los \(gl\) de Welch es muy complejo. En la práctica, tomamos este valor de la salida de R. En nuestro tutorial anterior, R nos dijo: \(gl \approx 16.9\).
Valor \(t^*\):
Buscamos el \(t^*\) para un IC del 95%
con 16.9 \(gl\).
qt(0.975, df = 16.9) nos da \(t^*
\approx 2.111\).
Paso 3: Calcular el Margen de Error (ME)
\(ME = t^* \times EE = 2.111 \times 0.4485 \approx 0.9466\)
Paso 4: Construir el Intervalo de Confianza
\(IC = (\bar{x}_1 - \bar{x}_2) \pm ME\)
\(IC = -2.033 \pm 0.9466\)
Interpretación: “Tenemos una confianza del 95% de que la verdadera diferencia en el tiempo medio de estancia (Técnica Nueva - Técnica Estándar) está entre -2.98 y -1.09 días.”
Conexión con la prueba t: Como el intervalo no incluye el 0, concluimos que la diferencia es estadísticamente significativa. Además, dado que ambos límites son negativos, podemos afirmar que la Técnica Nueva (Grupo 1) tiene un tiempo de estancia significativamente menor que la Estándar (Grupo 2).
Nuevamente, t.test() hace todo el trabajo.
# 1. Datos
grupo_A_nueva <- c(5, 6, 4, 5, 7, 6, 5, 4, 6, 5)
grupo_B_estandar <- c(7, 8, 6, 7, 9, 8, 6, 7, 8)
# 2. Ejecutamos la prueba de Welch (por defecto)
resultado_indep_ic <- t.test(grupo_A_nueva, grupo_B_estandar,
paired = FALSE,
var.equal = FALSE,
conf.level = 0.95)
# 3. Mostramos el resultado
print(resultado_indep_ic)
##
## Welch Two Sample t-test
##
## data: grupo_A_nueva and grupo_B_estandar
## t = -4.5341, df = 16.554, p-value = 0.0003125
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -2.981433 -1.085234
## sample estimates:
## mean of x mean of y
## 5.300000 7.333333
La salida de R incluye:
Welch Two Sample t-test
...
95 percent confidence interval:
-2.979905 -1.086762
El resultado de R coincide (salvo leves redondeos) con nuestro cálculo manual.
paired = FALSE: Especifica que son grupos
independientes.var.equal = FALSE: Este es el argumento clave para usar
la aproximación de Welch, que es la recomendada. R
calculará los \(gl\) (16.9) y el IC
correspondientes.conf.level = 0.95: De nuevo, define el nivel de
confianza deseado.Al finalizar esta sección, el estudiante será capaz de:
t.test(..., paired = TRUE) en R.Usamos la prueba t pareada cuando cada observación en un grupo está naturalmente conectada o emparejada con una observación en el otro grupo. El caso más común en medicina clínica es medir una variable en los mismos sujetos antes y después de una intervención.
El procedimiento se basa en analizar la diferencia entre cada par de observaciones. En esencia, transformamos un problema de dos muestras en un problema de una sola muestra (las diferencias) y probamos si la media de estas diferencias es significativamente distinta de cero.
Supuestos:
Fórmula (basada en las diferencias, d):
La hipótesis nula (H₀) es que la media de las diferencias poblacionales
(μ_d) es 0. El estadístico t se calcula como:
\(t = \frac{\bar{x}_d - 0}{s_d / \sqrt{n}}\)
Donde:
Se desea evaluar la eficacia de un nuevo fármaco hipolipemiante. Se mide el nivel de colesterol LDL (en mg/dL) en 8 pacientes antes de iniciar el tratamiento y después de 6 semanas.
| Paciente | Antes (mg/dL) | Después (mg/dL) |
|---|---|---|
| 1 | 145 | 130 |
| 2 | 150 | 140 |
| 3 | 160 | 145 |
| 4 | 130 | 125 |
| 5 | 155 | 140 |
| 6 | 162 | 150 |
| 7 | 140 | 130 |
| 8 | 138 | 130 |
Paso 1: Calcular las diferencias (d = Antes - Después)
Paso 2: Calcular la media de las diferencias (\(\bar{x}_d\))
\(\bar{x}_d = \frac{15 + 10 + 15 + 5 + 15 + 12 + 10 + 8}{8} = \frac{90}{8} = 11.25\)
Paso 3: Calcular la desviación estándar de las diferencias (\(s_d\))
Primero, la varianza (\(s_d^2\)):
\(s_d^2 = \frac{\sum (d_i - \bar{x}_d)^2}{n-1}\)
\(s_d^2 = \frac{(15-11.25)^2 + (10-11.25)^2 + ... + (8-11.25)^2}{8-1}\)
\(s_d^2 = \frac{(3.75)^2 + (-1.25)^2 + (3.75)^2 + (-6.25)^2 + (3.75)^2 + (0.75)^2 + (-1.25)^2 + (-3.25)^2}{7}\)
\(s_d^2 = \frac{14.06 + 1.56 + 14.06 + 39.06 + 14.06 + 0.56 + 1.56 + 10.56}{7} = \frac{95.5}{7} = 13.64\)
Ahora, la desviación estándar:
\(s_d = \sqrt{13.64} \approx 3.693\)
Paso 4: Calcular el estadístico t
\(t = \frac{\bar{x}_d}{s_d / \sqrt{n}} = \frac{11.25}{3.693 / \sqrt{8}} = \frac{11.25}{3.693 / 2.828} = \frac{11.25}{1.306} \approx 8.61\)
Paso 5: Grados de libertad
\(gl = n - 1 = 8 - 1 = 7\)
En la práctica bioestadística, reportar el valor p exacto es fundamental. Esta sección explica por qué las tablas de probabilidad tradicionales son limitadas y cómo R nos proporciona el valor exacto de forma instantánea.
Usaremos el resultado del ejemplo anterior: un estadístico \(t = 8.61\) con \(gl = 7\) grados de libertad.
Las tablas de distribución T, como las que se encuentran en los apéndices de los libros de texto, no están diseñadas para dar valores p exactos para cualquier estadístico t.
En su lugar, muestran los valores críticos de t para niveles de significancia (valores p) específicos y predefinidos (generalmente 0.10, 0.05, 0.025, 0.01, etc.).
¿Cómo la usamos? Buscamos nuestros grados de libertad (\(gl = 7\)) y luego tratamos de “ubicar” nuestro estadístico t (\(t = 8.61\)) entre los valores de la tabla.
| gl | p = 0.10 | p = 0.05 | p = 0.025 | p = 0.010 | p = 0.005 |
|---|---|---|---|---|---|
| … | … | … | … | … | … |
| 6 | 1.440 | 1.943 | 2.447 | 3.143 | 3.707 |
| 7 | 1.415 | 1.895 | 2.365 | 2.998 | 3.499 |
| 8 | 1.397 | 1.860 | 2.306 | 2.896 | 3.355 |
| … | … | … | … | … | … |
Interpretación con la Tabla:
gl = 7.t = 8.61.t = 3.499 es
p = 0.005.Conclusión de la tabla: Lo único que un docente podía reportar usando tablas era
p < 0.005. No se podía obtener el valor exacto, solo un “techo” o límite superior.
R (y cualquier software estadístico) no usa tablas. Utiliza funciones de cálculo integral para encontrar el área exacta bajo la curva de la distribución T.
La función clave es pt().
pt(q, df): Calcula la probabilidad acumulada (el área a
la izquierda) de un cuantil q con
df grados de libertad.En el ejemplo del tutorial, estábamos probando si el fármaco reducía el LDL, por lo que la hipótesis alternativa era “greater” (Antes > Después). Esto es una prueba de cola derecha.
Queremos el área a la derecha de 8.61.
Por lo tanto, tenemos dos formas de calcularlo:
Opción 1 (Resta): Calcular el área total (1) y restarle el área a la izquierda.
1 - pt(8.61, df = 7)
Opción 2 (Directa): Usar el argumento
lower.tail = FALSE para pedirle a R que calcule
directamente el área de la cola derecha.
pt(8.61, df = 7, lower.tail = FALSE)
Si la prueba hubiera sido de dos colas (simplemente para ver si había alguna diferencia, Hₐ: \(\mu_d \neq 0\)), tendríamos que calcular el área en ambas colas. Como la distribución T es simétrica, simplemente multiplicamos por 2 el resultado de una cola.
2 * pt(8.61, df = 7, lower.tail = FALSE)Aquí está el bloque de código R para obtener el valor p exacto.
# Definimos nuestros valores
t_estadistico <- 8.61
grados_libertad <- 7
# --- Cálculo para una prueba de COLA DERECHA (como en el tutorial, "greater") ---
# Usamos lower.tail = FALSE para obtener el área a la DERECHA de 8.61
p_valor_una_cola <- pt(t_estadistico, df = grados_libertad, lower.tail = FALSE)
print(paste("Valor p (una cola derecha):", p_valor_una_cola))
## [1] "Valor p (una cola derecha): 2.84248219720405e-05"
# --- Cálculo para una prueba de DOS COLAS (si la H1 fuera "diferente de") ---
# Multiplicamos por 2 el área de la cola
p_valor_dos_colas <- 2 * pt(t_estadistico, df = grados_libertad, lower.tail = FALSE)
print(paste("Valor p (dos colas):", p_valor_dos_colas))
## [1] "Valor p (dos colas): 5.6849643944081e-05"
La salida del código nos muestra:
[1] "Valor p (una cola derecha): 3.344837e-05"
El valor 3.344837e-05 es la notación científica para
0.0000334.
Este es el valor p exacto para nuestra prueba de una cola.
Como puede ver, es muchísimo más pequeño que el límite de
p < 0.005 que nos dio la tabla, lo que confirma que el
resultado es altamente significativo.
# 1. Creamos los vectores con los datos
antes <- c(145, 150, 160, 130, 155, 162, 140, 138)
despues <- c(130, 140, 145, 125, 140, 150, 130, 130)
# 2. Ejecutamos la prueba t pareada
resultado_pareado <- t.test(antes, despues, paired = TRUE, alternative = "greater")
# 3. Mostramos el resultado
print(resultado_pareado)
##
## Paired t-test
##
## data: antes and despues
## t = 8.6148, df = 7, p-value = 2.832e-05
## alternative hypothesis: true mean difference is greater than 0
## 95 percent confidence interval:
## 8.775883 Inf
## sample estimates:
## mean difference
## 11.25
antes <- c(...) y despues <- c(...):
Creamos dos vectores numéricos que contienen los datos de las
mediciones. Es crucial que el orden de los datos corresponda a los pares
(el paciente 1 de “antes” debe ser el paciente 1 de “después”).t.test(antes, despues, ...): Esta es la función
principal.
paired = TRUE: Este argumento es fundamental. Le dice a
R que los datos son pareados y que debe calcular las diferencias
primero.alternative = "greater": Especificamos la hipótesis
alternativa. Dado que probamos si el fármaco reduce el LDL,
esperamos que la media de “Antes” sea mayor que la de “Después”
(o que la diferencia Antes - Después sea mayor que 0).La salida Paired t-test confirma el análisis.
t = 8.6141: Este es el estadístico t, que coincide
(salvo redondeo) con nuestro cálculo manual.df = 7: Los grados de libertad (n-1).p-value = 3.339e-05: Este es el valor p
(0.00003339).mean of the differences: 11.25: La media de las
diferencias observadas, idéntica a nuestro cálculo manual.Calcular e interpretar un intervalo de confianza para la media de las diferencias (\(\mu_d\)) en un diseño pareado.
En un diseño pareado, el IC no se construye sobre la diferencia de las medias de los grupos, sino sobre la media de las diferencias (\(\bar{x}_d\)). El objetivo es estimar dónde se encuentra la verdadera media de las diferencias poblacional (\(\mu_d\)).
La fórmula es esencialmente un IC para una sola muestra (la muestra de las diferencias):
\[ IC(\mu_d) = \bar{x}_d \pm (t^* \times \frac{s_d}{\sqrt{n}}) \]
Donde:
Usaremos los mismos datos del fármaco hipolipemiante (colesterol LDL).
Datos resumen (calculados en el tutorial anterior):
Paso 1: Encontrar el valor \(t^*\) crítico
Para un IC del 95% con 7 grados de libertad, buscamos en una tabla T
(o usamos R) el valor que corresponde a 0.025 en la cola superior.
qt(0.975, df = 7) nos da \(t^*
\approx 2.365\).
Paso 2: Calcular el Error Estándar (EE) de \(\bar{x}_d\)
\(EE = \frac{s_d}{\sqrt{n}} = \frac{3.693}{\sqrt{8}} \approx \frac{3.693}{2.828} \approx 1.306\)
Paso 3: Calcular el Margen de Error (ME)
\(ME = t^* \times EE = 2.365 \times 1.306 \approx 3.089\)
Paso 4: Construir el Intervalo de Confianza
\(IC = \bar{x}_d \pm ME\) \(IC = 11.25 \pm 3.089\)
Interpretación:
“Tenemos una confianza del 95% de que la verdadera reducción media en el colesterol LDL después del tratamiento está entre 8.16 y 14.34 mg/dL.”
Conexión con la prueba t: Note que el valor 0 no está incluido en este intervalo. Esto es la misma conclusión que obtuvimos con la prueba de hipótesis (p < 0.05): la diferencia es estadísticamente significativa.
La función t.test() calcula esto automáticamente. Por
defecto, ejecuta la prueba de dos colas y proporciona el IC del 95%.
# 1. Datos
antes <- c(145, 150, 160, 130, 155, 162, 140, 138)
despues <- c(130, 140, 145, 125, 140, 150, 130, 130)
# 2. Ejecutamos la prueba. R calcula el IC por defecto.
# No especificamos "alternative" para obtener el IC bilateral estándar.
resultado_pareado_ic <- t.test(antes, despues, paired = TRUE, conf.level = 0.95)
# 3. Mostramos el resultado
print(resultado_pareado_ic)
##
## Paired t-test
##
## data: antes and despues
## t = 8.6148, df = 7, p-value = 5.665e-05
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## 8.162053 14.337947
## sample estimates:
## mean difference
## 11.25
Al ejecutar el código, la salida incluye:
95 percent confidence interval:
8.161302 14.338698
Este resultado coincide perfectamente con nuestro cálculo manual.
t.test(antes, despues, paired = TRUE): Al igual que
antes, especificamos que los datos son pareados.conf.level = 0.95: Este es el valor por defecto, pero
es bueno incluirlo para ser explícitos. Le dice a R que calcule un IC
del 95%. Si quisiéramos un IC del 99%, usaríamos
conf.level = 0.99.mean of the differences: 11.25).| Característica | IC Pareado | IC Independiente (Welch) |
|---|---|---|
| Parámetro Estimado | Media de las diferencias (\(\mu_d\)) | Diferencia de las medias (\(\mu_1 - \mu_2\)) |
| Punto de Partida | \(\bar{x}_d\) | \(\bar{x}_1 - \bar{x}_2\) |
| Error Estándar (EE) | \(\frac{s_d}{\sqrt{n}}\) | \(\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}\) |
| Grados de Libertad (\(gl\)) | \(n - 1\) | Fórmula de Welch-Satterthwaite (compleja) |
| Interpretación Clave | ¿El 0 está en el IC de la media de diferencias? | ¿El 0 está en el IC de la diferencia de medias? |
| Característica | Prueba t Pareada | Prueba t Independiente (Welch’s) |
|---|---|---|
| Cuándo usar | Datos dependientes (ej. Antes/Después, gemelos, datos emparejados) | Dos grupos independientes (ej. Tratamiento vs. Control) |
| En qué se enfoca | Media de las diferencias de los pares (\(\bar{x}_d\)) | Diferencia de las medias de los grupos (\(\bar{x}_1 - \bar{x}_2\)) |
| Supuesto clave | Normalidad de las diferencias | Normalidad en cada grupo (o n grandes) |
| Supuesto de Varianza | No aplica (se usa la varianza de las diferencias) | No asume varianzas iguales |
| Comando R | t.test(x, y, paired = TRUE) |
t.test(x, y, var.equal = FALSE) |
Pregunta: Un investigador desea saber si un programa de mindfulness reduce la ansiedad. Mide el nivel de ansiedad de 15 participantes (usando una escala estandarizada) antes de iniciar el programa y de nuevo después de 8 semanas. ¿Qué prueba debe utilizar?
Respuesta: Debe usar una prueba t para muestras pareadas, porque las mediciones (antes y después) provienen de los mismos 15 participantes.
Para reforzar estos conceptos, recomiendo los siguientes videos en inglés de fuentes académicas y de alta calidad: