Qué pregunta un test t
Todo test t responde a la misma pregunta de fondo: ¿esta diferencia de medias es real, o podría ser solo ruido? Las muestras oscilan - mide los tiempos de reacción de diez personas dos veces y obtendrás dos promedios distintos aunque nada haya cambiado. El test t compara la diferencia que observaste con la oscilación que esperarías por azar, y reporta cuán sorprendentes serían tus datos si la diferencia verdadera fuera cero.
Tres variantes, una función:
- De una muestra - ¿la media de este grupo es distinta de un valor fijo?
- De dos muestras - ¿estos dos grupos independientes tienen medias distintas?
- Pareado - ¿los mismos sujetos cambiaron entre dos mediciones?
Una muestra: t.test(x, mu = ...)
Supón que un proceso debería promediar 5.0 segundos, y cronometras diez ejecuciones:
La media muestral es 5.61 - pero ¿un exceso de 0.61 sobre el objetivo es significativo con solo diez ejecuciones, o entra dentro de la oscilación normal? Eso es exactamente lo que responde la salida.
Cómo leer la salida línea a línea
Esta es la sección que se gana el sueldo - la salida de cada variante de t.test() tiene la misma forma, así que aprende a leerla una sola vez. Ejecuta el bloque de arriba y empareja cada línea:
- t = 4.26 - el estadístico del contraste: la diferencia observada (5.61 − 5 = 0.61) dividida entre el error estándar de la media (unos 0.143). Dice que la media muestral se sitúa a algo más de cuatro errores estándar del valor hipotetizado. Mayor |t| = más sorprendente bajo la nula.
- df = 9 - grados de libertad, aquí n − 1. Un df pequeño significa muestras pequeñas, lo que significa que el test exige un t más grande antes de dejarse impresionar.
- p-value ≈ 0.002 - si la media verdadera fuera realmente 5, la probabilidad de extraer una muestra cuya media caiga al menos así de lejos de 5 (en cualquier dirección) es de aproximadamente el 0.2%. Ese es todo su significado. No es la probabilidad de que la media verdadera sea 5, y un valor p pequeño no demuestra tu explicación favorita - solo dice "difícil de achacar al azar". Con el umbral habitual de 0.05, aquí rechazas la nula.
- alternative hypothesis - una reformulación de lo que significaría "rechazar".
not equal to 5confirma que el contraste fue bilateral. - 95 percent confidence interval: 5.29 a 5.93 - el rango de medias verdaderas compatibles con los datos. Fíjate en que 5 queda fuera - es el mismo veredicto que p < 0.05, expresado en las unidades propias de los datos, y además te dice el tamaño plausible del efecto, cosa que el valor p nunca hace.
- sample estimates - la media observada, para que el lector vea el hecho bruto que se está contrastando.
Si necesitas las piezas de forma programática: result <- t.test(times, mu = 5) y luego result$p.value, result$conf.int, result$estimate.
Dos muestras: comparar grupos independientes
Para dos grupos independientes, la interfaz de fórmula se lee como la propia pregunta. ToothGrowth registra el crecimiento dental en cobayas que recibieron vitamina C como zumo de naranja (OJ) o como ácido ascórbico (VC):
Léelo como "contrasta len dividido por supp". La salida ahora muestra dos estimaciones muestrales (la media por grupo, unos 20.7 vs 17.0), y el intervalo de confianza es para la diferencia entre ambas. Aquí p ≈ 0.061 y el intervalo va de aproximadamente −0.17 a 7.57: cruza el cero, así que al nivel 0.05 no puedes descartar "ninguna diferencia" - aunque un intervalo que se estira hasta +7.6 también te advierte contra declarar que la diferencia no existe. "No significativo" significa no demostrado, no demostrado ausente.
Welch es el valor por defecto - y eso es bueno
Mira el encabezado de la salida: Welch Two Sample t-test, con df fraccionarios (unos 55.3). El test t clásico de Student asume que ambos grupos tienen la misma varianza; la versión de Welch elimina esa suposición y ajusta los grados de libertad para compensar. Cuando las varianzas realmente son iguales, Welch da respuestas esencialmente idénticas; cuando no lo son, el test de Student puede estar gravemente descalibrado mientras Welch se mantiene honesto. Así que el valor por defecto de R es el seguro - rara vez hay una razón para anularlo.
El ritual previo de "comprueba primero las varianzas iguales y luego elige el test" es un consejo desfasado; simplemente usa Welch.
Pareado: antes y después
Cuando ambas mediciones provienen de los mismos sujetos, los grupos no son independientes - y tratarlos como independientes desperdicia la potencia del test. Las puntuaciones de ocho personas antes y después de un curso de formación:
paired = TRUE contrasta la media de las diferencias intra-persona (aquí un promedio de 2.75 puntos, p ≈ 0.001). Por qué el pareado lo cambia todo: las personas difieren entre sí mucho más de lo que la formación cambió a nadie - la dispersión entre sujetos, de 65 a 80, ahogaría una mejora de 2-3 puntos en un test no pareado. Tomar las diferencias resta la línea base de cada persona, así que solo queda el cambio. La regla: si los datos tienen una estructura natural de "la misma unidad medida dos veces", parealos. (Y nunca uses paired = TRUE cuando los grupos son genuinamente independientes - el emparejamiento sería ficción.)
Tests unilaterales: manejar con cuidado
Por defecto el contraste es bilateral: cuenta una diferencia en cualquiera de las dos direcciones como evidencia. Si - antes de ver los datos - tu hipótesis solo tenía sentido en una dirección, puedes decirlo:
El valor p se reduce a la mitad respecto al contraste bilateral, que es exactamente por lo que existe la tentación: cambiar a unilateral después de espiar los datos es p-hacking. Usa alternative = "greater" o "less" solo con una dirección genuinamente prerregistrada; en caso de duda, quédate con el bilateral.
Supuestos, y el plan B
El test t asume que las observaciones son independientes y que las medias muestrales se distribuyen de forma aproximadamente normal - lo cual se cumple cuando los propios datos son más o menos normales o las muestras son razonablemente grandes (el teorema central del límite hace el trabajo pesado; con n ≈ 30+ por grupo, una no-normalidad moderada deja de ser un problema). Comprueba la forma con un histograma rápido o un boxplot. La independencia, en cambio, no la rescata ningún test - viene de cómo se recogieron los datos.
Para muestras pequeñas con datos claramente sesgados o valores atípicos extremos, el plan B no paramétrico estándar es una línea: wilcox.test(len ~ supp, data = ToothGrowth), que compara distribuciones mediante rangos en lugar de medias.
Lo que te llevas
t.test(x, mu = )para una muestra,t.test(y ~ group, data = )para dos,paired = TRUEpara antes/después.- El valor p es "cuán sorprendentes son estos datos si la diferencia verdadera fuera cero" - nada más; el intervalo de confianza te dice el tamaño plausible del efecto en unidades reales.
- El valor por defecto de R para dos muestras es el test de Welch (df fraccionarios) - consérvalo.
- El pareado elimina el ruido entre sujetos; úsalo siempre que las mismas unidades se midan dos veces.
- Alternativas unilaterales solo con una dirección comprometida de antemano;
wilcox.test()es el plan B basado en rangos.
A continuación: comparar las medias de tres o más grupos a la vez - ANOVA con aov().
Preguntas frecuentes
¿Cómo se hace un test t en R?
Con t.test(). Una muestra contra un valor fijo: t.test(x, mu = 5). Dos grupos independientes: t.test(value ~ group, data = df). Mediciones antes/después sobre los mismos sujetos: t.test(after, before, paired = TRUE).
¿Cómo se interpreta el valor p de un test t en R?
Es la probabilidad de ver una diferencia al menos tan grande como la tuya si la diferencia verdadera fuera cero. Un valor p pequeño (por convención, por debajo de 0.05) significa que los datos son difíciles de explicar como ruido, así que rechazas la hipótesis nula. No es la probabilidad de que la nula sea cierta, y no dice nada sobre cuán grande o importante es la diferencia - para eso, lee el intervalo de confianza.
¿Por qué R reporta un test t de Welch por defecto?
El t.test() de dos muestras de R usa por defecto la versión de Welch, que no asume que los dos grupos tengan varianzas iguales - por eso los grados de libertad salen fraccionarios. Welch se comporta de forma casi idéntica al test clásico de Student cuando las varianzas son iguales y es más seguro cuando no lo son, así que el valor por defecto es la elección correcta. Usa var.equal = TRUE solo si un trabajo de clase exige explícitamente el test clásico agrupado.
¿Cuándo se debe usar un test t pareado en R?
Cuando los dos conjuntos de mediciones vienen en parejas naturales - el mismo sujeto medido antes y después, el mismo objeto valorado por dos métodos. t.test(after, before, paired = TRUE) contrasta la media de las diferencias dentro de cada pareja, lo que elimina la variación entre sujetos y suele dar mucha más potencia que tratar los grupos como independientes.