Un intervalo de confianza (IC) es un rango de valores dentro del cual podemos decir, - con cierto nivel de confianza (e.g., 95%), que se encuentra el valor verdadero - de un parámetro poblacional (como la media). Es importante recordar que un IC - NO mide la variabilidad de los datos, sino la precisión de la estimación de un parametro, por ejemplo de la media.
Ejercicio:
Explicación paso a paso
Creación de datos simulados:
Cálculo de la media y el error estándar:
La media es la estimación puntual de los datos.
El error estándar mide la precisión de la media en base al tamaño de la muestra.
Cálculo del intervalo de confianza:
Usamos la distribución t de Student debido al tamaño de muestra (n<30).
Calculamos el margen de error multiplicando el error estándar por el valor crítico de t.
Resultados:
Visualización:
Simularemos un conjunto de datos que represente los niveles de glucosa (mg/dL) de 50 personas.
set.seed(123) # Aseguramos reproducibilidad
niveles_glucosa <- rnorm(50, mean = 100, sd = 15) # Media = 100, Desviación estándar = 15
niveles_glucosa
[1] 91.59287 96.54734 123.38062 101.05763 101.93932 125.72597 106.91374 81.02408
[9] 89.69721 93.31507 118.36123 105.39721 106.01157 101.66024 91.66238 126.80370
[17] 107.46776 70.50074 110.52034 92.90813 83.98264 96.73038 84.60993 89.06663
[25] 90.62441 74.69960 112.56681 102.30060 82.92795 118.80722 106.39696 95.57393
[33] 113.42688 113.17200 112.32372 110.32960 108.30876 99.07132 95.41056 94.29293
[41] 89.57940 96.88124 81.01905 132.53434 118.11943 83.15337 93.95673 93.00017
[49] 111.69948 98.74946
str(niveles_glucosa)
num [1:50] 91.6 96.5 123.4 101.1 101.9 ...
media <- mean(niveles_glucosa) # Media de los datos
sd <- sd(niveles_glucosa) # Desviación estándar
n <- length(niveles_glucosa) # Tamaño de la muestra
se <- sd / sqrt(n) # Error estándar de la media
media
[1] 100.5161
sd
[1] 13.88805
n
[1] 50
se
[1] 1.964067
El cálculo de un Intervalo de Confianza (IC) del 95% implica varios pasos clave. Vamos a desglosar y entender cada uno de ellos detalladamente.
Para calcular un IC de la media poblacional (𝜇) basado en una muestra, usamos la siguiente formula:
El nivel de confianza (1 −𝛼) indica qué tan seguro estamos de que el intervalo contiene el valor verdadero de la media poblacional:
α=1−Nivel de Confianza
El valor crítico (𝑡𝛼/2) determina cuántos errores estándar necesitamos sumar y restar para abarcar el 95% de los datos. Se calcula utilizando la distribución 𝑡 t de Student y depende de:
Nivel de confianza (1−α): Para un IC del 95%, usamos 𝛼/2= 0.025 para calcular el límite superior e inferior.
Grados de libertad ( 𝑑 𝑓 ): Calculado como 𝑛 − 1
(donde 𝑛 n es el tamaño de la muestra).
Fórmula:
df <- n - 1
alpha <- 0.05 # Nivel de significancia (1 - 95%)
t_critico <- qt(1 - alpha / 2, df = n - 1) # Valor crítico t para el 95%
margen_error <- t_critico * se # Margen de error
margen_error
[1] 3.94694
La función qt en R calcula el valor crítico basado
en:
1−α/2: Área acumulada de la cola inferior.
Grados de libertad (df).
El margen de error define qué tan lejos de la media muestral (x̄) se extiende el intervalo de confianza. Se calcula multiplicando el valor crítico (𝑡𝛼/2) por el error estándar (𝑆𝐸):
S=desviación estándar de la muestra).
n= tamaño de la muestra.
margen_error
[1] 3.94694
Finalmente, el Intervalo de Confianza se construye sumando y restando el
margen de error a la media muestral:
ic_inf <- media - margen_error
ic_inf
[1] 96.56911
ic_sup <- media + margen_error
ic_sup
[1] 104.463
# Resultado
cat("Media:", round(media, 2), "\n")
Media: 100.52
cat("Intervalo de Confianza del 95%: [", round(ic_inf, 2), ",", round(ic_sup, 2), "]\n")
Intervalo de Confianza del 95%: [ 96.57 , 104.46 ]
Podemos interpretar que con un 95% de confianza, la verdadera media de glucosa en la población se encuentra entre 96.5 mg/dL y 104.53 mg/dL
Este análisis es esencial para reportar resultados en investigaciones científicas, ya que muestra no solo la estimación puntual sino también la precisión de la misma.
Supongamos:
Media muestral (x̄) = 100
Desviación estándar (S) = 15
Tamaño de muestra (n) = 30
# Establecemos Parámetros
alpha <- 0.05
n <- 15
S <- 30
media <- 100
# Error estándar
se <- S / sqrt(n)
# Valor crítico t
t_critico <- qt(1 - alpha / 2, df = n - 1)
# Margen de error
margen_error <- t_critico * se
# Intervalo de confianza
ic_inf <- media - margen_error
ic_sup <- media + margen_error
cat("Intervalo de Confianza del 95%:", round(ic_inf, 2), "-", round(ic_sup, 2), "\n")
Intervalo de Confianza del 95%: 83.39 - 116.61
Puedes visualizar el cálculo del IC en un gráfico para mayor claridad:
library(ggplot2)
# Crear un data frame
df <- data.frame(
media = media,
ic_inf = ic_inf,
ic_sup = ic_sup
)
# Graficar el IC
ggplot(df, aes(x = 1, y = media)) +
geom_point(size = 3, color = "red") +
ylim(0,200) +
geom_errorbar(aes(ymin = ic_inf, ymax = ic_sup), width = 0.2, color = "blue") +
labs(title = "Intervalo de Confianza del 95% para la Media",
x = "Muestra",
y = "Media") +
theme_minimal()
t_critico <- qt(1 - alpha / 2, df = n - 1)
Calculo en R
# Datos simulados
set.seed(123)
datos <- rnorm(30, mean = 100, sd = 15)
# Calcular estadísticas
media <- mean(datos) # Media muestral ( <- = aparece con alt + - (gión))
sd <- sd(datos) # Desviación estándar muestral
n <- length(datos) # Tamaño de la muestra
se <- sd / sqrt(n) # Error estándar
# Nivel de significancia
alpha <- 0.05
# Valor crítico t
t_critico <- qt(1 - alpha / 2, df = n - 1)
# Margen de error
margen_error <- t_critico * se
# Intervalo de confianza
ic_inf <- media - margen_error
ic_sup <- media + margen_error
cat("Media:", round(media, 2), "\n")
Media: 99.29
cat("Intervalo de Confianza del 95%: [", round(ic_inf, 2), ",", round(ic_sup, 2), "]\n")
Intervalo de Confianza del 95%: [ 93.8 , 104.79 ]
El Intervalo de Confianza del 95% indica que estamos 95% seguros de que el verdadero valor poblacional de μ está entre \[IC inf - IC sup\]
Este rango refleja tanto la variabilidad en los datos como el tamaño de la muestra.
El valor tα/2 ajusta el margen de error según el tamaño de la muestra y su variabilidad.
A continuación, se presenta un cuadro que resume los métodos de cálculo de intervalos de confianza (IC) para los parámetros más comunes en estadística:
Intervalos de Confianza (IC):
Los IC nos dan un rango plausible para el valor verdadero de un parámetro (como la media o una diferencia entre medias).
Interpretación: Un IC del 95% indica que, si repitiéramos el estudio múltiples veces, el 95% de esos intervalos incluiría el valor verdadero del parámetro.
Valor p:
El valor p indica la probabilidad de observar un efecto tan extremo (o más) que el encontrado, bajo la hipótesis nula (H0).
Es una herramienta para tomar decisiones sobre rechazar o no H0.
Diferencia práctica:
El IC proporciona información sobre la magnitud y precisión del efecto estimado.
El valor p solo indica si un efecto es estadísticamente significativo, sin proporcionar información directa sobre su magnitud.
Simulamos datos de niveles de glucosa:
set.seed(123)
niveles_glucosa <- rnorm(200, mean = 100, sd = 15) # Media = 100, SD = 15
Paso 2: Cálculo del IC 95%
# Calcular estadísticos
media <- mean(niveles_glucosa) # Media muestral
sd <- sd(niveles_glucosa) # Desviación estándar muestral
n <- length(niveles_glucosa) # Tamaño de la muestra
se <- sd / sqrt(n) # Error estándar
# IC 95%
alpha <- 0.05
t_critico <- qt(1 - alpha / 2, df = n - 1) # Valor crítico de t
margen_error <- t_critico * se # Margen de error
ic_inf <- media - margen_error
ic_sup <- media + margen_error
cat("Intervalo de Confianza del 95%: [", round(ic_inf, 2), ",", round(ic_sup, 2), "]\n")
Intervalo de Confianza del 95%: [ 97.9 , 101.84 ]
Supongamos que queremos probar si la media poblacional es igual a 95 ( H0:μ=95):
# Prueba t para media poblacional de 95
t_test <- t.test(niveles_glucosa, mu = 95) # Hipótesis nula: media = 95
# Resultado del valor p
cat("Valor p:", t_test$p.value, "\n")
Valor p: 2.2747e-06
IC 95%: Muestra el rango en el que creemos que está la verdadera media de los niveles de glucosa.
Valor p: Mide si los datos respaldan o rechazan la H0.
Podemos usar un gráfico para explicar cómo el IC y el valor p se relacionan visualmente.
library(ggplot2)
# Crear un data frame para el gráfico
df <- data.frame(
media = media,
ic_inf = ic_inf,
ic_sup = ic_sup
)
# Graficar
ggplot(df, aes(x = 1)) +
geom_errorbar(aes(ymin = ic_inf, ymax = ic_sup), width = 0.2, color = "blue") + ylim(0,200)+
geom_point(aes(y = media), size = 4, color = "red") +
geom_hline(yintercept = 95, linetype = "dashed", color = "black", size = 1.2) +
labs(
title = "Comparación entre Intervalos de Confianza e Hipótesis Nula",
x = "Muestra (niveles de glucosa)",
y = "Niveles de Glucosa (mg/dL)"
) +
theme_minimal()
Intervalo de Confianza:
La línea punteada muestra el rango plausible para la verdadera media de la población.
Si H0=95 cae fuera del intervalo (línea negra discontinua), podemos concluir que es improbable que μ=95
Valor p:
IC: Proporciona una visión más integrativa, mostrando la magnitud del efecto y su precisión.
Valor p: Permite tomar decisiones rápidas sobre la hipótesis nula, pero no indica la magnitud del efecto.
En investigaciones epidemiológicas, clínicas o biologicas. Los IC son preferibles porque no solo indican si un efecto es significativo, sino también qué tan grande o preciso es el efecto estimado.
El valor p complementa este análisis, ayudándonos a determinar si debemos rechazar una hipótesis nula específica.
Cuando comparamos dos grupos, los Intervalos de Confianza (IC) y el valor p son herramientas complementarias para interpretar las diferencias. A continuación, te presento un ejemplo detallado en R para comparar dos grupos con un enfoque en la estimación de IC y el valor p.
Supongamos que queremos comparar los niveles de glucosa entre dos grupos: grupo control y grupo experimental.
set.seed(123) # Reproducibilidad
# Simular datos
grupo_control <- rnorm(30, mean = 100, sd = 15) # Media = 100, SD = 15
grupo_experimental <- rnorm(30, mean = 110, sd = 15) # Media = 110, SD = 15
Código para IC
# Estadísticas descriptivas
media_control <- mean(grupo_control)
media_experimental <- mean(grupo_experimental)
sd_control <- sd(grupo_control)
sd_experimental <- sd(grupo_experimental)
n_control <- length(grupo_control)
n_experimental <- length(grupo_experimental)
# Diferencia de medias
diferencia <- media_experimental - media_control
# Error estándar combinado
se <- sqrt((sd_control^2 / n_control) + (sd_experimental^2 / n_experimental))
# Valor crítico t para IC del 95%
alpha <- 0.05
t_critico <- qt(1 - alpha / 2, df = n_control + n_experimental - 2)
# Margen de error
margen_error <- t_critico * se
# Límites del IC
ic_inf <- diferencia - margen_error
ic_sup <- diferencia + margen_error
cat("Diferencia de medias:", round(diferencia, 2), "\n")
Diferencia de medias: 13.38
cat("Intervalo de Confianza del 95%: [", round(ic_inf, 2), ",", round(ic_sup, 2), "]\n")
Intervalo de Confianza del 95%: [ 6.32 , 20.44 ]
Usamos una prueba t para dos muestras independientes para determinar si la diferencia es estadísticamente significativa.
# Prueba t para dos muestras independientes
t_test <- t.test(grupo_control, grupo_experimental, var.equal = TRUE)
# Resultados
cat("Valor p:", t_test$p.value, "\n")
Valor p: 0.0003576581
cat("Diferencia estimada (t-test):", t_test$estimate, "\n")
Diferencia estimada (t-test): 99.29344 112.6751
Podemos graficar las distribuciones de ambos grupos y superponer los IC para la diferencia de medias.
library(ggplot2)
# Crear un data frame con los datos
df <- data.frame(
grupo = rep(c("Control", "Experimental"), each = 30),
niveles_glucosa = c(grupo_control, grupo_experimental)
)
# Graficar los datos
ggplot(df, aes(x = grupo, y = niveles_glucosa, fill = grupo)) +
geom_boxplot(alpha = 0.7, outlier.colour = "red") +
geom_point(position = position_jitter(width = 0.1), alpha = 0.5) +
labs(
title = "Comparación de Niveles de Glucosa entre Grupos",
x = "Grupo",
y = "Niveles de Glucosa (mg/dL)"
) +
theme_minimal() +
scale_fill_manual(values = c("#00BFC4", "#F8766D"))
¿Te gustaría agregar la significancia al gráfico?
Para agregar la significancia a un gráfico de comparación entre dos
grupos con ggpubr, puedes usar la función
stat_compare_means() que simplifica la adición de etiquetas
de significancia estadística al gráfico.
# Instalar ggpubr si no lo tienes
# install.packages("ggpubr")
library(ggplot2)
library(ggpubr)
# Crear un data frame con los datos
df <- data.frame(
grupo = rep(c("Control", "Experimental"), each = 30),
niveles_glucosa = c(grupo_control, grupo_experimental)
)
# Graficar los datos con significancia
ggplot(df, aes(x = grupo, y = niveles_glucosa, fill = grupo)) +
geom_boxplot(alpha = 0.7, outlier.colour = "red") +
geom_point(position = position_jitter(width = 0.1), alpha = 0.5) +
labs(
title = "Comparación de Niveles de Glucosa entre Grupos",
x = "Grupo",
y = "Niveles de Glucosa (mg/dL)"
) +
theme_minimal() +
scale_fill_manual(values = c("#00BFC4", "#F8766D")) +
stat_compare_means(
method = "t.test", # Realizar prueba t
label = "p.format", # Mostrar el valor p en formato estándar o lo puedes cambiar por "p.signif" para asteriscos
label.y = max(df$niveles_glucosa) + 5 # Ajustar la posición de la etiqueta
,label.x=1.5)
stat_compare_means():
Agrega la significancia estadística al gráfico.
El argumento method especifica el tipo de prueba
estadística (en este caso, t.test para comparar dos
medias).
label = "p.format":
label.y:
Ahora, el gráfico incluye un indicador visual del valor p, mostrando si la diferencia entre los grupos es estadísticamente significativa.
Si el valor p es menor a 0.05, los resultados son considerados estadísticamente significativos.
Entonces:
Intervalo de Confianza (IC):
Proporciona un rango para la diferencia entre medias.
Ejemplo: Si el IC es \[8.5,13.2\], podemos decir con un 95% de confianza que la verdadera diferencia de medias está en este rango.
Valor p:
Determina si la diferencia entre las medias es estadísticamente significativa.
Ejemplo: Si p<0.05, rechazamos la hipótesis nula de que las medias son iguales.
El IC:
El Valor p:
En este ejemplo:
El IC muestra la magnitud y precisión de la diferencia de medias.
El valor p complementa este análisis al indicar si la diferencia es estadísticamente significativa.
Este enfoque integrado es esencial para reportar resultados significativos en nuestras investigaciones.