La conocida como “t de Student” es una prueba estadística que se utiliza para comparar las medias de una o dos muestras con el objetivo de determinar si hay evidencia significativa de que las medias son diferentes entre sí. Dependiendo de la situación, se pueden usar diferentes variantes de la prueba t.
Prueba t para una muestra. Determinar si la media de una muestra es significativamente diferente de un valor específico, que generalmente es una media teórica o conocida de la población.
Prueba t para dos muestras independientes. Comparar las medias de dos muestras independientes para ver si hay una diferencia significativa entre ellas.
Prueba t para muestras pareadas. Comparar las medias de dos muestras relacionadas o pareadas, como las medidas antes y después en el mismo grupo de sujetos.
Pruebas de hipótesis. Se utiliza comúnmente en pruebas de hipótesis donde la hipótesis nula (H0) afirma que no hay diferencia entre las medias, y la hipótesis alternativa (H1) sugiere que sí la hay.
\[ \\ \]
Prueba t para una muestra: Los datos deben provenir de una población que sigue una distribución normal. Este supuesto es especialmente importante cuando el tamaño de la muestra es pequeño (n < 30). Sin embargo, si la muestra es grande, la prueba t es robusta frente a desviaciones moderadas de la normalidad.
Prueba t para dos muestras independientes: Se asume que ambas poblaciones de las que provienen las muestras siguen una distribución normal.
Test de Shapiro-Wilk. Muestras pequeñas/medianas (3 a 50 muestras).
Test de Kolmogorov-Smirnov (K-S). Adecuado para muestras grandes (50 a 100). Tamaños más grandes pueden detectar desviaciones de la normalidad que no resultan prácticas.
Test de Lilliefors. Una variación del test de Kolmogorov-Smirnov ajustada para distribuciones con media y desviación estándar desconocidas.
Test de Anderson-Darling. Cualquier tamaño de muestra. Evalúa la adecuación de la muestra a una distribución normal y es más sensible en los extremos de la distribución.
Test de Jarque-Bera. Más común en muestras grandes (de 50 a 100). Basado en los momentos de la distribución (asimetría y curtosis) para evaluar la normalidad.
Histograma. Visualizar la distribución de los datos para evaluar si se asemeja a una distribución normal.
Gráfico Q-Q (Quantile-Quantile). Comparar los cuantiles de la muestra con los cuantiles de una distribución normal. Los puntos deben seguir aproximadamente una línea recta. Desviaciones significativas de esta línea indican desviaciones de la normalidad.
Gráfico P-P (Probability-Probability). Similar al gráfico Q-Q, compara las probabilidades acumuladas de la muestra con las de una distribución normal. Los puntos deben alinearse a lo largo de la línea diagonal.
Prueba t para dos muestras independientes: Se asume que las varianzas de las dos poblaciones son iguales (homocedasticidad). Existen variantes de la prueba t que no requieren este supuesto (por ejemplo, la prueba t de Welch), pero la prueba t estándar lo presupone.
Test de Bartlett. Evaluar si las varianzas de dos o más grupos son iguales. Es más sensible a la normalidad de los datos en comparación con el test de Levene. Un valor p bajo indica que las varianzas entre los grupos son significativamente diferentes, lo que sugiere heterocedasticidad.
Test de Levene. Evaluar la igualdad de varianzas entre dos o más grupos. Es menos sensible a las desviaciones de la normalidad en comparación con el test de Bartlett.Un valor p bajo (por debajo del nivel de significancia, como 0.05) indica que las varianzas entre los grupos son significativamente diferentes,lo que sugiere heterocedasticidad.
Test de Fligner-Killeen. Evaluar la igualdad de varianzas entre dos o más grupos, especialmente cuando los datos no se distribuyen normalmente.Menos sensible a las desviaciones de la normalidad y más robusto en presencia de datos que no cumplen con el supuesto de normalidad.
Las observaciones deben ser independientes unas de otras, es decir, el valor de una observación no debe influir en el valor de otra. Este supuesto es crucial en todas las variantes de la prueba t (una muestra, dos muestras independientes, muestras pareadas).
Escala de Medición. La variable dependiente debe ser continua (es decir, debe estar medida en una escala de intervalo o de razón).
Los datos deben haber sido seleccionados de manera aleatoria de la población, lo que ayuda a garantizar que las conclusiones sean generalizables a toda la población.
# caso 1
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
t.test(x, mu = 5)
##
## One Sample t-test
##
## data: x
## t = 0.52223, df = 9, p-value = 0.6141
## alternative hypothesis: true mean is not equal to 5
## 95 percent confidence interval:
## 3.334149 7.665851
## sample estimates:
## mean of x
## 5.5
# p = 0.6141,
# Ho = la media es igual a 5.
# No se rechaza H0. La media es igual a 5.
# caso 2
x <- c(1, 2, 3, 4, 5)
t.test(x, mu = 10)
##
## One Sample t-test
##
## data: x
## t = -9.8995, df = 4, p-value = 0.0005844
## alternative hypothesis: true mean is not equal to 10
## 95 percent confidence interval:
## 1.036757 4.963243
## sample estimates:
## mean of x
## 3
# p = 0.0005844
# Ho = la media es igual a 10.
# Se rechaza Ho. La media no es igual a 10.
# caso 3
# aplicamos intervalo de confianza del 95% y 99%
t.test(x, mu = 10, conf.level = 0.95)
##
## One Sample t-test
##
## data: x
## t = -9.8995, df = 4, p-value = 0.0005844
## alternative hypothesis: true mean is not equal to 10
## 95 percent confidence interval:
## 1.036757 4.963243
## sample estimates:
## mean of x
## 3
t.test(x, mu = 10, conf.level = 0.99)
##
## One Sample t-test
##
## data: x
## t = -9.8995, df = 4, p-value = 0.0005844
## alternative hypothesis: true mean is not equal to 10
## 99 percent confidence interval:
## -0.2555867 6.2555867
## sample estimates:
## mean of x
## 3
# ejemplo 1
tratamiento <- c(120, 121, 133, 143, 123, 132, 120, 122, 143)
control <- c(90, 100, 110, 109, 124, 109, 80, 70, 77)
t.test(tratamiento, control)
##
## Welch Two Sample t-test
##
## data: tratamiento and control
## t = 4.666, df = 12.065, p-value = 0.0005375
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 17.06633 46.93367
## sample estimates:
## mean of x mean of y
## 128.55556 96.55556
# p = 0,0005375
# Ho = Igualdad de medias.
# Se rechaza Ho. Las medias no son iguales.
# ejemplo 2
t.test(tratamiento, control,
mu = 0,
alternative = "two.side",
paired = FALSE,
var.equal = TRUE,
conf.level = 0.95)
##
## Two Sample t-test
##
## data: tratamiento and control
## t = 4.666, df = 16, p-value = 0.0002582
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 17.46141 46.53859
## sample estimates:
## mean of x mean of y
## 128.55556 96.55556
# alternative = "two side" (a dos colas): opción POR DEFECTO.
# = "less" (evalua si la media de uno es MENOR que la del otro).
# = "greater" (evalua si la media de uno es MAYOR que la del otro).
# paired = muestras pareadas. Opción FALSE por defecto.
# objeto creado
t <- t.test(tratamiento, control)
t$statistic
t$parameter
t$p.value
t$conf.int
t$estimate
t$null.value
t$method
t$alternative
t$stderr
tratamiento <- c(120, 121, 133, 143, 123, 132, 120, 122, 143)
control <- c(90, 100, 110, 109, 124, 109, 80, 70, 77)
# creamos el dataframe
df <- data.frame(
tratamiento = tratamiento,
control = control
)
head(df)
## tratamiento control
## 1 120 90
## 2 121 100
## 3 133 110
## 4 143 109
## 5 123 124
## 6 132 109
t.test(df$tratamiento, df$control)
##
## Welch Two Sample t-test
##
## data: df$tratamiento and df$control
## t = 4.666, df = 12.065, p-value = 0.0005375
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 17.06633 46.93367
## sample estimates:
## mean of x mean of y
## 128.55556 96.55556
# p = 0,0005375
# Ho = Igualdad de medias.
# Se rechaza Ho. Las medias no son iguales.
# cargamos el dataframe
df <- read.xlsx("DESeq2.xlsx", colNames = TRUE)
df
## X1 CONTROL X3 X4 TRATAMIENTO X6 X7
## 1 gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 2 A 728 943 966 779 813 912
## 3 B 1873 1856 1972 2410 2189 2041
## 4 C 0 3 0 56 94 94
## 5 D 207 253 246 548 397 250
## 6 E 84 52 177 227 240 175
## 7 F 646 602 692 590 647 620
## 8 G 615 557 677 807 962 829
## 9 H 8 6 16 0 0 8
## 10 I 2942 2279 2590 3255 3071 2949
## 11 J 13 13 8 10 3 4
## 12 K 195 253 165 300 303 291
## 13 L 868 592 676 703 778 907
## 14 M 189 124 224 249 275 215
## 15 N 1685 1604 1312 2056 1488 1319
## 16 Ñ 107 82 132 39 71 69
## 17 O 162 253 335 290 290 338
## 18 P 131 295 184 360 279 312
## 19 Q 64 115 115 196 191 213
## 20 R 119 120 121 1 1 1
# dimensiones
dim(df)
## [1] 20 7
# observamos las 6 primeras filas
head(df)
## X1 CONTROL X3 X4 TRATAMIENTO X6 X7
## 1 gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 2 A 728 943 966 779 813 912
## 3 B 1873 1856 1972 2410 2189 2041
## 4 C 0 3 0 56 94 94
## 5 D 207 253 246 548 397 250
## 6 E 84 52 177 227 240 175
# eliminamos el encabezado de las columnas
colnames(df) <- NULL
head(df)
##
## 1 gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 2 A 728 943 966 779 813 912
## 3 B 1873 1856 1972 2410 2189 2041
## 4 C 0 3 0 56 94 94
## 5 D 207 253 246 548 397 250
## 6 E 84 52 177 227 240 175
# ahora convertimos la primera línea en encabezado de las columnas
colnames(df) <- df[1,]
head(df)
## gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 1 gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 2 A 728 943 966 779 813 912
## 3 B 1873 1856 1972 2410 2189 2041
## 4 C 0 3 0 56 94 94
## 5 D 207 253 246 548 397 250
## 6 E 84 52 177 227 240 175
# elimino la primera fila de datos
df <- df[-1,]
head(df)
## gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 2 A 728 943 966 779 813 912
## 3 B 1873 1856 1972 2410 2189 2041
## 4 C 0 3 0 56 94 94
## 5 D 207 253 246 548 397 250
## 6 E 84 52 177 227 240 175
## 7 F 646 602 692 590 647 620
# reindexo
row.names(df) <- NULL
head(df)
## gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3
## 1 A 728 943 966 779 813 912
## 2 B 1873 1856 1972 2410 2189 2041
## 3 C 0 3 0 56 94 94
## 4 D 207 253 246 548 397 250
## 5 E 84 52 177 227 240 175
## 6 F 646 602 692 590 647 620
# creo una copia para el segundo ejercicio
df2 <- df
Vamos a crear una función (prueba_t) que nos permita (1) agrupar las muestras wt y mt para cada una de las filas y (2) realizar un test de t-student a los grupos creados. Estudiaremos así la igualdad de medias entre ambos grupos, para cada fila y, añadiremos al dataframe el p_value obtenido.
prueba_t <- function(fila){
wt_group <- as.numeric(fila[2:4])
mt_group <- as.numeric(fila[5:7])
ts <- t.test(wt_group, mt_group)
return(ts$p.value)
}
# usamos apply para ejecutar la función prueba_t en cada una de las líneas
df$p_value <- apply(df, 1, prueba_t)
head(df)
## gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3 p_value
## 1 A 728 943 966 779 813 912 0.64015574
## 2 B 1873 1856 1972 2410 2189 2041 0.08762739
## 3 C 0 3 0 56 94 94 0.02338946
## 4 D 207 253 246 548 397 250 0.19586295
## 5 E 84 52 177 227 240 175 0.08032730
## 6 F 646 602 692 590 647 620 0.42780001
Si queremos añadir a un dataframe dos o más parámetros, podemos hacerlo de la siguiente forma (en este ejemplo, vamos a añadir el valor del estadístico (t) y el p-value). La función prueba_t devolverá un vector con estos dos valores y con la función apply haremos que se ejecute la prueba para los grupos wt y mt de cada una de las líneas.
prueba_t <- function(fila){
wt_group <- as.numeric(fila[2:4])
mt_group <- as.numeric(fila[5:7])
ts <- t.test(wt_group, mt_group)
return(c(parametros = ts$statistic, ts$p.value))
}
# utilizamos t(apply...) para transponer los resultados y que las filas se
# conviertan en columnas.
parametros_to_df2 <- t(apply(df2, 1, prueba_t))
colnames(parametros_to_df2) <- c("t", "p-value")
head(parametros_to_df2)
## t p-value
## [1,] 0.5176155 0.64015574
## [2,] -2.7662431 0.08762739
## [3,] -6.3224330 0.02338946
## [4,] -1.8690552 0.19586295
## [5,] -2.5850277 0.08032730
## [6,] 0.8994681 0.42780001
df2 <- cbind(df2, parametros_to_df2)
head(df2)
## gene_id WT_1 WT_2 WT_3 MT_1 MT_2 MT_3 t p-value
## 1 A 728 943 966 779 813 912 0.5176155 0.64015574
## 2 B 1873 1856 1972 2410 2189 2041 -2.7662431 0.08762739
## 3 C 0 3 0 56 94 94 -6.3224330 0.02338946
## 4 D 207 253 246 548 397 250 -1.8690552 0.19586295
## 5 E 84 52 177 227 240 175 -2.5850277 0.08032730
## 6 F 646 602 692 590 647 620 0.8994681 0.42780001
EOF