Objetivo del material En cada ejercicio recordamos qué se estima, cómo se calcula, y cómo se interpreta el intervalo de confianza (IC), con gráficos que sombrean el rango del IC.
Idea pedagógica. Cuando asumimos varianzas poblacionales iguales y muestras independientes, usamos la varianza combinada (pooled) para estimar el error estándar. El IC para \(\mu_1 - \mu_2\) se basa en la distribución t con \(n_1 + n_2 - 2\) g.l.
Datos y cálculo paso a paso
# Datos
x1_barra <- 135
x2_barra <- 122
s1 <- 15
s2 <- 10
n1 <- n2 <- 20
# Varianza combinada (pooled)
sp2 <- ((n1 - 1)*s1^2 + (n2 - 1)*s2^2) / (n1 + n2 - 2)
sp <- sqrt(sp2)
# Error estándar
se <- sp * sqrt(1/n1 + 1/n2)
# Grados de libertad y t crítico
df <- n1 + n2 - 2
t_crit <- qt(0.975, df) # 95% bilateral
# Intervalo de confianza
diff_means <- x1_barra - x2_barra
lim_inf <- diff_means - t_crit * se
lim_sup <- diff_means + t_crit * se
resultado1 <- data.frame(
diferencia_muestral = diff_means,
se = se,
gl = df,
t_critico = t_crit,
IC95_low = lim_inf,
IC95_high = lim_sup
)
resultado1
## diferencia_muestral se gl t_critico IC95_low IC95_high
## 1 13 4.031129 38 2.024394 4.839406 21.16059
Interpretación. “Con 95% de confianza, la diferencia real de medias \((\mu_1-\mu_2)\) está entre los límites del IC. Si 0 no cae dentro del intervalo, hay evidencia de diferencia.”
Gráfico del IC (normal aproximada sobre la diferencia muestral)
library(ggplot2)
x_vals <- seq(diff_means - 4*se, diff_means + 4*se, length.out = 1000)
dens_vals <- dnorm(x_vals, mean = diff_means, sd = se)
data_plot <- data.frame(x = x_vals, y = dens_vals)
ggplot(data_plot, aes(x = x, y = y)) +
geom_line() +
geom_area(data = subset(data_plot, x >= lim_inf & x <= lim_sup),
aes(x = x, y = y), alpha = 0.5) +
geom_vline(xintercept = c(lim_inf, lim_sup), linetype = "dashed") +
geom_vline(xintercept = diff_means, linetype = "dotted") +
labs(title = "IC 95% para la diferencia de medias (var. iguales)",
x = "Diferencia de medias", y = "Densidad")
Idea pedagógica. Cuando no asumimos varianzas iguales, usamos el IC de Welch: el error estándar combina \(s_x^2/n_x + s_y^2/n_y\) y los grados de libertad se aproximan con la fórmula de Welch–Satterthwaite. Para 98% usamos \(t_{0.99,\,gl}\) en prueba bilateral.
Datos y cálculo paso a paso
# Datos
nx <- 200
ny <- 150
sum_x <- 11460
sum_y <- 8565
var_x <- 9
var_y <- 16
x_bar <- sum_x / nx
y_bar <- sum_y / ny
diff <- x_bar - y_bar
se2 <- var_x/nx + var_y/ny
se <- sqrt(se2)
# gl (Welch-Satterthwaite)
df <- se2^2 / ((var_x^2)/(nx^2*(nx-1)) + (var_y^2)/(ny^2*(ny-1)))
# t_crit para 98% bilateral
t_crit <- qt(0.99, df)
# IC 98%
lim_inf <- diff - t_crit * se
lim_sup <- diff + t_crit * se
resultado2 <- data.frame(
x_bar = x_bar, y_bar = y_bar,
diferencia_muestral = diff,
se = se, gl_aprox = df,
t_critico_98 = t_crit,
IC98_low = lim_inf, IC98_high = lim_sup
)
resultado2
## x_bar y_bar diferencia_muestral se gl_aprox t_critico_98 IC98_low
## 1 57.3 57.1 0.2 0.389444 265.815 2.340458 -0.7114774
## IC98_high
## 1 1.111477
Interpretación. “El 98% de confianza nos da un intervalo más ancho que el 95% (somos más conservadores). Fijate si 0 queda adentro o afuera para juzgar evidencia de diferencia.”
Gráfico del IC (normal aproximada sobre la diferencia muestral)
x_vals2 <- seq(diff - 4*se, diff + 4*se, length.out = 1000)
dens_vals2 <- dnorm(x_vals2, mean = diff, sd = se)
data_plot2 <- data.frame(x = x_vals2, y = dens_vals2)
ggplot(data_plot2, aes(x = x, y = y)) +
geom_line() +
geom_area(data = subset(data_plot2, x >= lim_inf & x <= lim_sup),
aes(x = x, y = y), alpha = 0.5) +
geom_vline(xintercept = c(lim_inf, lim_sup), linetype = "dashed") +
geom_vline(xintercept = diff, linetype = "dotted") +
labs(title = "IC 98% para la diferencia de medias (Welch)",
x = "Diferencia de medias", y = "Densidad")
Idea pedagógica. Para la media con \(\sigma\) desconocida usamos t con \(n-1\) g.l. Para la varianza usamos chi-cuadrado (\(\chi^2\)) bajo normalidad. Los gráficos sombrean el rango de confianza.
Cálculo paso a paso
cotizaciones <- c(142.07, 142.42, 128.32, 129.36, 139.23, 130.76, 135.95, 119.17,
128.90, 133.71, 139.40, 139.04, 148.73, 138.19, 126.68, 139.02,
117.56, 125.27, 127.35, 143.96, 121.43, 142.20, 143.64, 143.64)
media <- mean(cotizaciones)
desvio <- sd(cotizaciones)
n <- length(cotizaciones)
se <- desvio / sqrt(n)
t_crit <- qt(0.975, df = n - 1) # 95%
lim_inf <- media - t_crit * se
lim_sup <- media + t_crit * se
res_media <- data.frame(media=media, sd=desvio, se=se, gl=n-1,
t_crit_95=t_crit, IC95_low=lim_inf, IC95_high=lim_sup)
# Varianza (IC 95%) con chi-cuadrado
alpha <- 0.05
var_muestral <- var(cotizaciones)
chi_inf <- qchisq(1 - alpha/2, df = n - 1)
chi_sup <- qchisq(alpha/2, df = n - 1)
lim_var_inf <- (n - 1) * var_muestral / chi_inf
lim_var_sup <- (n - 1) * var_muestral / chi_sup
res_var <- data.frame(var_muestral=var_muestral,
IC95_var_low=lim_var_inf, IC95_var_high=lim_var_sup)
list(res_media=res_media, res_var=res_var)
## $res_media
## media sd se gl t_crit_95 IC95_low IC95_high
## 1 134.4167 8.70335 1.776564 23 2.068658 130.7416 138.0918
##
## $res_var
## var_muestral IC95_var_low IC95_var_high
## 1 75.74829 45.75659 149.0527
Interpretación. “Para la media, si repetimos el muestreo muchas veces, el 95% de los intervalos construidos así contendrían a \(\mu\). Para la varianza, el IC depende de la \(\chi^2\) bajo normalidad: por eso los límites no son simétricos.”
Gráfico IC de la media (normal aproximada)
x_vals_media <- seq(media - 4*se, media + 4*se, length.out = 1000)
dens_vals_media <- dnorm(x_vals_media, mean = media, sd = se)
data_media <- data.frame(x = x_vals_media, y = dens_vals_media)
ggplot(data_media, aes(x = x, y = y)) +
geom_line() +
geom_area(data = subset(data_media, x >= lim_inf & x <= lim_sup),
aes(x = x, y = y), alpha = 0.5) +
geom_vline(xintercept = c(lim_inf, lim_sup), linetype = "dashed") +
geom_vline(xintercept = media, linetype = "dotted") +
labs(title = "IC 95% para la media de cotizaciones",
x = "Media", y = "Densidad")
Gráfico IC de la varianza (curva \(\chi^2\) transformada a escala de varianzas)
var_vals <- seq(lim_var_inf * 0.5, lim_var_sup * 1.5, length.out = 1000)
dens_var <- dchisq((n - 1) * var_muestral / var_vals, df = n - 1) * (n - 1) * var_muestral / var_vals^2
data_var <- data.frame(x = var_vals, y = dens_var)
ggplot(data_var, aes(x = x, y = y)) +
geom_line() +
geom_area(data = subset(data_var, x >= lim_var_inf & x <= lim_var_sup),
aes(x = x, y = y), alpha = 0.5) +
geom_vline(xintercept = c(lim_var_inf, lim_var_sup), linetype = "dashed") +
geom_vline(xintercept = var_muestral, linetype = "dotted") +
labs(title = "IC 95% para la varianza de cotizaciones (vía χ²)",
x = "Varianza", y = "Densidad")
Idea pedagógica. Para comparar dispersión entre dos grupos, el IC del cociente de varianzas \(\sigma_12/\sigma_22\) usa la F con g.l. \((n_1-1, n_2-1)\). Cuidado: el IC no es simétrico y depende del orden del cociente.
Cálculo paso a paso
estu1 <- c(10, 10, 12, 13, 9, 8, 12, 12, 10, 14, 8)
estu2 <- c(11, 8, 9, 7, 10, 8, 8, 10)
var1 <- var(estu1)
var2 <- var(estu2)
F_calc <- var1 / var2
gl1 <- length(estu1) - 1
gl2 <- length(estu2) - 1
alpha <- 0.10 # 90% bilateral => 0.95 y 0.05
lim_inf <- F_calc / qf(1 - alpha/2, gl1, gl2)
lim_sup <- F_calc / qf(alpha/2, gl1, gl2)
resultado15 <- data.frame(
var1=var1, var2=var2, F_calc=F_calc, gl1=gl1, gl2=gl2,
IC90_ratio_low=lim_inf, IC90_ratio_high=lim_sup
)
resultado15
## var1 var2 F_calc gl1 gl2 IC90_ratio_low IC90_ratio_high
## 1 4.018182 1.839286 2.184643 10 7 0.6007504 6.84987
Interpretación. “Si el IC incluye 1, no hay evidencia de diferencia en varianzas. Si está todo por encima de 1, sugiere que la varianza del numerador es mayor; si está por debajo, es menor.”
Gráfico (densidad F sobre el rango del IC)
f_vals <- seq(lim_inf * 0.5, lim_sup * 1.5, length.out = 1000)
dens_f <- df(f_vals, df1 = gl1, df2 = gl2)
data_f <- data.frame(x = f_vals, y = dens_f)
ggplot(data_f, aes(x = x, y = y)) +
geom_line() +
geom_area(data = subset(data_f, x >= lim_inf & x <= lim_sup),
aes(x = x, y = y), alpha = 0.5) +
geom_vline(xintercept = c(lim_inf, lim_sup), linetype = "dashed") +
geom_vline(xintercept = F_calc, linetype = "dotted") +
labs(title = "IC 90% para σ1²/σ2² (vía F)",
x = "Cociente de varianzas (σ1²/σ2²)", y = "Densidad")
Nota final. Los IC dependen del modelo probabilístico (normalidad) y del tamaño muestral. .