Se ha descrito cómo calcular los valores p que son omnipresentes en las ciencias de la vida. Sin embargo, no se recomienda presentar los valores p como el único resumen estadístico de los resultados. La razón es simple: la significación estadística no garantiza la significación científica. Con tamaños de muestra suficientemente grandes, se podría detectar una diferencia estadísticamente significativa en el peso de 1 microgramo. ¿Pero es este un hallazgo importante? ¿Se diría que una dieta tiene como resultado un mayor peso si el aumento es menor a una fracción de un porcentaje? El problema de informar solo valores p es que no proporcionará una pieza de información muy importante: el tamaño del efecto. Recuerde que el tamaño del efecto es la diferencia observada. A veces, el tamaño del efecto se divide por la media del grupo de control y se expresa como un aumento porcentual.
Una alternativa mucho más atractiva es presentar los intervalos de confianza. Un intervalo de confianza incluye información sobre el tamaño del efecto estimado y la incertidumbre asociada con esta estimación. Aquí se usan los datos de los ratones para ilustrar el concepto detrás de los intervalos de confianza.
Antes de mostrar cómo construir un intervalo de confianza para la diferencia entre los dos grupos, se mostrará cómo construir un intervalo de confianza para la media de la población de ratones hembras de control. Luego se volverá a la diferencia de grupo después de que se haya aprendido cómo construir intervalos de confianza en el caso simple. Se comienza leyendo los datos y seleccionando las filas apropiadas, se puede hacer usando cualquiera de las siguientes dos opciones:
# Opción número 1: Usando el paquete dagdata
if (!require("devtools")) install.packages("devtools") # Para instalar librerías desde otras fuentes diferentes a CRAN
if (!require("dagdata")) install_github("genomicsclass/dagdata") # Para tener disponibles los datos del estudio de ratones
dir <- system.file(package = "dagdata")
filename <- file.path(dir,"extdata/mice_pheno.csv")
# Opción número 2: Descargando el archivo desde la web
library(downloader)
url <- "https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extdata/mice_pheno.csv"
filename <- "mice_pheno.csv"
if (!file.exists(filename)) download(url,destfile=filename)
Luego se leen los datos.
datos <- read.csv(filename) %>% na.omit
poblacionControl <- datos[datos$Sex=="F" & datos$Diet=="chow", 3]
El promedio de la población \(\mu_X\) es el parámetro de interés aquí:
mu_control <- mean(poblacionControl)
print(mu_control) # [1] 23.89338
Hay interés en estimar este parámetro. En la práctica, no se puede ver la población completa, así que, como se hizo con los valores p, se demuestra cómo se pueden usar muestras para hacer esto. Se comienza con una muestra de tamaño 30:
N <- 30
muestra_control <- sample(poblacionControl,N)
print(mean(muestra_control)) # [1] 24.03267
Se sabe que esta es una variable aleatoria, por lo que el promedio de la muestra no será una estimación perfecta. De hecho, debido a que en este ejemplo ilustrativo se conoce el valor del parámetro, se puede ver que no son exactamente iguales. Un intervalo de confianza es una forma estadística de informar el hallazgo, el promedio de la muestra, de una manera que resume explícitamente la variabilidad de la variable aleatoria.
Con un tamaño de muestra de 30, se usará el Teorema del límite central. El TLC dice que \(\bar{X}\) o mean (muestra_control) sigue una distribución normal con media \(\mu_X\) o mean (poblacionControl) y un error estándar de aproximadamente \(s_X/\sqrt{N}\) o :
errorestandar <- sd(muestra_control)/sqrt(N)
print(errorestandar) # [1] 0.6875646
Un intervalo de confianza del 95% (se pueden usar porcentajes de confianza distintos al 95%) es un intervalo aleatorio con una probabilidad del 95% de caer en el parámetro que estamos estimando. Tenga en cuenta que decir que en el 95% de los intervalos aleatorios caerá el valor verdadero (la definición anterior) no es lo mismo que decir que hay un 95% de probabilidad de que el valor verdadero caiga en el intervalo calculado. Para construirlo, se nota que el TLC dice que \(\sqrt{N} (\bar{X} - \mu_X)/s_X\) sigue una distribución normal con media 0 y desviación estándar 1. Esto implica que la probabilidad de este evento:
\[ -2 \leq \sqrt{N} \dfrac{(\bar{X}-\mu_X)}{s_X} \leq 2 \]
que escrito en código R es:
pnorm(2) - pnorm(-2) # [1] 0.9544997
… es decir, aproximadamente 95% (para acercarse use qnorm(1-0.05/2) en lugar de 2). Ahora se hace algo de álgebra básica para despejar \(\mu_X\) y se obtiene que el siguiente evento:
\[ \bar{X}-\dfrac{2\cdot{s_X}}{\sqrt{N}} \leq \mu_X \leq \bar{X}+\dfrac{2\cdot{s_X}}{\sqrt{N}} \]
tiene una probabilidad del 95%.
Se debe tener en cuenta que son los límites del intervalo \(\bar{X}\pm\dfrac{2\cdot{s_X}}{\sqrt{N}}\) los que son aleatorios, no \(\mu_X\). Nuevamente, la definición del intervalo de confianza es que el 95% de intervalos aleatorios contendrán el valor fijo verdadero \(\mu_X\). Para un intervalo específico que se ha calculado, la probabilidad es 0 o 1 de que contenga la media poblacional fija \(\mu_X\).
Se demuestra esta lógica a través de la simulación. Se puede construir este intervalo con R con relativa facilidad:
Q <- qnorm(1 - 0.05/2)
intervalo <- c(mean(muestra_control)-Q*errorestandar, mean(muestra_control)+Q*errorestandar )
intervalo # [1] 22.68506 25.38027
intervalo[1] < mu_control & intervalo[2] > mu_control # [1] TRUE
que cubre \(\mu_X\) o mean(poblacionControl). Sin embargo, se puede tomar otra muestra y es posible que no se tenga tanta suerte. De hecho, la teoría dice que se cubrira \(\mu_X\) el 95% de las veces. Como se tiene acceso a los datos de población, se puede confirmar esto tomando varias muestras nuevas:
library(rafalib)
B <- 250
mypar()
plot(mean(poblacionControl)+c(-7,7),c(1,1),type="n", xlab="peso",ylab="intervalo",ylim=c(1,B))
abline(v=mean(poblacionControl))
cubierto <- vector('numeric', B)
for (i in 1:B) {
muestra_control <- sample(poblacionControl,N)
errorestandar <- sd(muestra_control)/sqrt(N)
intervalo <- c(mean(muestra_control)-Q*errorestandar, mean(muestra_control)+Q*errorestandar)
cubierto[i] <- mean(poblacionControl) <= intervalo[2] & mean(poblacionControl) >= intervalo[1]
color <- ifelse(cubierto[i],"green","red")
lines(intervalo, c(i,i),col=color, lwd=1.5)
}
abline(v=mean(poblacionControl))
Se muestran 250 realizaciones aleatorias de intervalos de confianza del 95%. El color indica si el intervalo incluye el parámetro media poblacional o no.
mean(cubierto)
## [1] 0.972
Puede ejecutar esto repetidamente para ver qué sucede. Verá que en aproximadamente el 95% de los casos, se cubre \(\mu_X\).
Para \(N=30\), el teorema del límite central funciona muy bien. Sin embargo, si se toma \(N=5\), ¿funcionan también estos intervalos de confianza? Se usa el TLC para crear los intervalos, y con \(N=5\) puede que no sea una aproximación tan útil. De nuevo, se puede confirmar esto con una simulación:
mypar()
plot(mean(poblacionControl)+c(-7,7),c(1,1),type="n", xlab="peso",ylab="intervalo",ylim=c(1,B))
abline(v=mean(poblacionControl))
Q <- qnorm(1 - 0.05/2)
N <- 5
cubierto <- vector('numeric', B)
for (i in 1:B) {
muestra_control <- sample(poblacionControl,N)
errorestandar <- sd(muestra_control)/sqrt(N)
intervalo <- c(mean(muestra_control)-Q*errorestandar, mean(muestra_control)+Q*errorestandar)
cubierto[i] <- mean(poblacionControl) <= intervalo[2] & mean(poblacionControl) >= intervalo[1]
color <- ifelse(cubierto[i],"green","red")
lines(intervalo, c(i,i),col=color, lwd=1.5)
}
abline(v=mean(poblacionControl))
Se muestran 250 realizaciones aleatorias de intervalos de confianza del 95%, pero ahora para un tamaño de muestra más pequeño. El intervalo de confianza se basa en la aproximación TLC. El color indica si el intervalo incluye el parámetro media poblacional o no.
mean(cubierto)
## [1] 0.888
A pesar de que los intervalos son más grandes (se está dividiendo por \(\sqrt{5}\) en lugar de \(\sqrt{30}\)), se ven muchos más intervalos que no cubren \(\mu_X\). Esto se debe a que el TLC dice incorrectamente que la distribución de la mean(muestra_control) es aproximadamente normal con una desviación estándar 1 cuando, de hecho, tiene una desviación estándar más grande y una cola más larga (las partes de la distribución que van a \(\pm\infty\)). Este error afecta en el cálculo de Q, que asume una distribución normal y usaqnorm. La distribución t podría ser más apropiada. Todo lo que se tiene que hacer es volver a ejecutar lo anterior, pero cambiar la forma en que se calcula Q para usar qt en lugar de qnorm.
mypar()
plot(mean(poblacionControl) + c(-7,7), c(1,1), type="n", xlab="peso", ylab="intervalo", ylim=c(1,B))
abline(v=mean(poblacionControl))
##Q <- qnorm(1- 0.05/2) ## ya no es normal, así que se usa:
Q <- qt(1 - 0.05/2, df=4)
N <- 5
cubierto <- vector('numeric', B)
for (i in 1:B) {
muestra_control <- sample(poblacionControl, N)
errorestandar <- sd(muestra_control)/sqrt(N)
intervalo <- c(mean(muestra_control)-Q*errorestandar, mean(muestra_control)+Q*errorestandar )
cubierto[i] <- mean(poblacionControl) <= intervalo[2] & mean(poblacionControl) >= intervalo[1]
color <- ifelse(cubierto[i],"green","red")
lines(intervalo, c(i,i),col=color, lwd=1.5)
}
abline(v=mean(poblacionControl))
Se muestran 250 realizaciones aleatorias de intervalos de confianza del 95%, pero ahora para un tamaño de muestra más pequeño. La confianza ahora se basa en la aproximación de la distribución t. El color indica si el intervalo incluye el parámetro media poblacional o no.
mean(cubierto)
## [1] 0.96
Ahora los intervalos se hacen más grandes. Esto se debe a que la distribución t tiene colas más largas y, por lo tanto:
qt(1 - 0.05/2, df=4) # [1] 2.776445
es mayor que …
qnorm(1- 0.05/2) # [1] 1.959964
… lo que hace que los intervalos sean más grandes y, por lo tanto, cubren \(\mu_X\) con más frecuencia; de hecho, alrededor del 95% de las veces.
Se recomienda que en la práctica se informen los intervalos de confianza en lugar de los valores p. Si por alguna razón se le solicita que proporcione valores p, o se le pide que sus resultados sean significativos en los niveles de 0.05 de 0.01, los intervalos de confianza brindan esta información.
Si se está hablando de un valor p de la prueba t, se pregunta si es probable que existan diferencias tan extremas como la que se observa, \(\bar{Y}-\bar{X}\), cuando la diferencia entre los promedios de la población es realmente igual a cero. Entonces se puede formar un intervalo de confianza con la diferencia observada. En lugar de escribir \(\bar{Y}-\bar{X}\) de forma repetida, se define esta diferencia como una nueva variable \(d\equiv\bar{Y}-\bar{X}\).
Si se usa el teorema del límite central y se informa que \(d\pm\dfrac{{2}\cdot{s_d}}{\sqrt{N}}\), con una desviación estándar \(s_d=\sqrt{s_X^2+s_Y^2}\), como un intervalo de confianza del 95% para la diferencia y este intervalo no incluye 0 (un falso positivo). Debido a que el intervalo no incluye 0, esto implica que \(d-\dfrac{2\cdot{s_d}}{\sqrt{N}}>0\) o \(d+\dfrac{2\cdot{s_d}}{\sqrt{N}}<0\). Esto sugiere que \(\dfrac{\sqrt{N}\cdot{d}}{s_d}>2\) o \(\dfrac{\sqrt{N}\cdot{d}}{s_d}<2\). Esto implica entonces que el estadístico t es más extremo que 2, lo que a su vez sugiere que el valor p debe ser menor que 0.05 (aproximadamente, para un cálculo más exacto se debe usar qnorm(.05/2) en lugar de 2). Se puede hacer el mismo cálculo si se usa la distribución t en lugar de TLC (con qt(.05/2, gl=2*N-2)). En resumen, si un intervalo de confianza del 95% o 99% no incluye 0, entonces el valor p debe ser menor que 0.05 o 0.01 respectivamente.
Tenga en cuenta que el intervalo de confianza para la diferencia \(d\) lo proporciona la función t.test:
t.test(tratamiento,control)$conf.int
## [1] -0.04296563 6.08463229
## attr(,"conf.level")
## [1] 0.95
En este caso, el intervalo de confianza del 95% sí incluye 0 y se observa que el valor p es mayor que 0.05 como se predijo. Si se cambia esto a un intervalo de confianza del 90%, entonces:
t.test(tratamiento,control,conf.level=0.9)$conf.int
## [1] 0.4871597 5.5545070
## attr(,"conf.level")
## [1] 0.9
0 ya no está en el intervalo de confianza (lo que se espera porque el valor p es menor que 0,10).
| Test t en la práctica | Capítulo de inferencia | Intervalos de confianza |