Intervalos de confianza

Estadistica II

Author
Affiliation

Universidad del Tolima

Published

July 4, 2025

1 . Instalar y Activar paquetes

Code
if(!require(kableExtra)) {
  install.packages("kableExtra")}
library(kableExtra)

if(!require(tidyverse)) {
  install.packages("tidyverse")}
library(tidyverse)

if(!require(OneTwoSamples)) {
  install.packages("OneTwoSamples")}
library(OneTwoSamples)

if(!require(DescTools)) {
  install.packages("DescTools")}
library(DescTools)

2 . Media de la población(Varianza poblacional conocida)

Supongamos que tenemos una muestra de 50 estudiantes (\(n=50\)) con una altura media de \(\bar{x} = 170\) cm. Sabemos que la desviación estándar poblacional es \(\sigma = 8\) cm. Construiremos un intervalo de confianza del 95% para la altura media poblacional (\(\mu\)).

Solución

Fórmula

\[ \mu \in \left( \bar{x} - t_{\frac{\alpha}{2}, n-1} \frac{S}{\sqrt{n}},\ \bar{x} + t_{\frac{\alpha}{2}, n-1} \frac{S}{\sqrt{n}} \right) \]

Cálculos

\[\begin{align*} \text{Error estándar} &= \frac{S}{\sqrt{n}} = \frac{0.78}{\sqrt{15}} \approx 0.2014 \\ \text{Margen de error} &= t \cdot \frac{S}{\sqrt{n}} = 2.9768 \times 0.2014 \approx 0.599 \\ \\ \text{Límite inferior} &= 37.56 - 0.599 = 36.961 \\ \text{Límite superior} &= 37.56 + 0.599 = 38.159 \end{align*}\]

Interpretación

Con un 99% de confianza, el tiempo medio de carga poblacional \(\mu\) se encuentra entre 36.96 y 38.16 segundos.

GRAFICA

Code
# Parámetros de la distribución t
df <- 14  # Grados de libertad (ejemplo para n=15)
conf_level <- 0.95
alpha <- 1 - conf_level

# Calcular valor crítico t
t_critical <- qt(1 - alpha/2, df)

# Crear secuencia de datos
x <- seq(-4, 4, length.out = 500)
y <- dt(x, df)

# Configurar el área de gráfico
plot(x, y, type = "l", lwd = 2, col = "blue",
     main = paste("Distribución t de Student (df =", df, ")"),
     xlab = "Valor t", ylab = "Densidad de probabilidad",
     ylim = c(0, max(y)*1.1),
     xaxs = "i", yaxs = "i")

# Sombrear el área de confianza (central)
x_conf <- seq(-t_critical, t_critical, length.out = 100)
y_conf <- dt(x_conf, df)
polygon(c(x_conf, rev(x_conf)), c(y_conf, rep(0, length(y_conf))), 
        col = "#4DAF4A", border = NA, density = 20, angle = 45)

# Sombrear las colas
x_left_tail <- seq(min(x), -t_critical, length.out = 100)
y_left_tail <- dt(x_left_tail, df)
polygon(c(x_left_tail, rev(x_left_tail)), c(y_left_tail, rep(0, length(y_left_tail))), 
        col = "#E41A1C", border = NA, density = 20, angle = -45)

x_right_tail <- seq(t_critical, max(x), length.out = 100)
y_right_tail <- dt(x_right_tail, df)
polygon(c(x_right_tail, rev(x_right_tail)), c(y_right_tail, rep(0, length(y_right_tail))), 
        col = "#E41A1C", border = NA, density = 20, angle = -45)

# Añadir líneas verticales
abline(v = 0, col = "red", lwd = 2, lty = 2)
abline(v = c(-t_critical, t_critical), col = "darkgreen", lwd = 2)

# Añadir etiquetas y leyenda
text(0, max(y)*0.9, paste("Intervalo de confianza del", conf_level*100, "%"), 
     col = "darkgreen", cex = 1.1)
text(-t_critical - 0.8, max(y)*0.15, expression(alpha/2), 
     col = "darkred", cex = 1.5)
text(t_critical + 0.8, max(y)*0.15, expression(alpha/2), 
     col = "darkred", cex = 1.5)
text(-t_critical, 0, paste("t =", round(-t_critical, 3)), 
     pos = 1, col = "darkgreen", cex = 0.9)
text(t_critical, 0, paste("t =", round(t_critical, 3)), 
     pos = 1, col = "darkgreen", cex = 0.9)

legend("topright", 
       legend = c("Distribución t", "Media (t=0)", "Valores críticos", 
                  "Área de confianza", "Áreas de rechazo"),
       col = c("blue", "red", "darkgreen", "#4DAF4A", "#E41A1C"),
       lwd = c(2, 2, 2, 8, 8), lty = c(1, 2, 1, 1, 1),
       bty = "n", cex = 0.8)

3 . Media de Población (Varianza poblacional desconocida)

Enunciado

Se midió el tiempo de carga (en segundos) de 15 páginas web obteniendo los siguientes valores: \[38.7,\ 36.8,\ 37.2,\ 38.1,\ 35.9,\ 37.5,\ 38.3,\ 36.4,\ 38.0,\ 37.7,\ 38.2,\ 36.6,\ 38.4,\ 37.9,\ 36.3\] Construya un intervalo de confianza del 99% para el tiempo medio de carga poblacional (\(\mu\)).

Solución

Datos muestrales

Parámetros estadísticos

Fórmula

\[\mu \in \left( \bar{x} - t_{\frac{\alpha}{2}, n-1} \frac{S}{\sqrt{n}},\ \bar{x} + t_{\frac{\alpha}{2}, n-1} \frac{S}{\sqrt{n}} \right)\]

Cálculos

\[\begin{align*} \text{Error estándar} &= \frac{S}{\sqrt{n}} = \frac{0.78}{\sqrt{15}} \approx 0.2014 \\ \text{Margen de error} &= t \cdot \frac{S}{\sqrt{n}} = 2.9768 \times 0.2014 \approx 0.599 \\ \\ \text{Límite inferior} &= 37.56 - 0.599 = 36.961 \\ \text{Límite superior} &= 37.56 + 0.599 = 38.159 \end{align*}\]

Interpretación

Con un 99% de confianza, el tiempo medio de carga poblacional \(\mu\) se encuentra entre 36.96 y 38.16 segundos.

GRÁFICA

Code
# Instalar paquetes si son necesarios
if (!requireNamespace("ggplot2", quietly = TRUE)) install.packages("ggplot2")
if (!requireNamespace("dplyr", quietly = TRUE)) install.packages("dplyr")

library(ggplot2)

# Parámetros estadísticos
confianza <- 0.99
alpha <- 1 - confianza
gl <- 14  # grados de libertad
t_critico <- qt(1 - alpha/2, df = gl)  # valor crítico t

# Crear datos para la curva t-Student
t_values <- seq(-4, 4, length.out = 300)
density_values <- dt(t_values, df = gl)

# Crear dataframe
df <- data.frame(t = t_values, density = density_values)

# Calcular límites del área sombreada
area_data <- df[df$t >= -t_critico & df$t <= t_critico, ]

# Crear la gráfica
ggplot(df, aes(x = t, y = density)) +
  # Curva completa
  geom_line(color = "green", linewidth = 1) +
  # Área de confianza sombreada
  geom_area(data = area_data, fill = "skyblue", alpha = 0.5) +
  # Líneas verticales para los valores críticos
  geom_vline(xintercept = c(-t_critico, t_critico), 
             color = "pink", linetype = "dashed", linewidth = 1) +
  # Etiquetas para valores críticos
  annotate("text", x = -t_critico, y = 0.05, 
           label = paste0("-t[", alpha/2, "] = ", round(-t_critico, 3)),
           parse = TRUE, color = "darkred", hjust = 1.1, size = 4) +
  annotate("text", x = t_critico, y = 0.05, 
           label = paste0("t[", alpha/2, "] = ", round(t_critico, 3)),
           parse = TRUE, color = "darkred", hjust = -0.1, size = 4) +
  # Etiqueta para el área de confianza
  annotate("text", x = 0, y = 0.15, 
           label = paste0(confianza*100, "% de confianza"),
           color = "darkblue", size = 5, fontface = "bold") +
  # Título y etiquetas
  labs(title = "Distribución t-Student para Intervalo de Confianza",
       subtitle = paste0("Grados de libertad = ", gl, 
                        " | Nivel de confianza = ", confianza*100, "%"),
       x = "Valor t", y = "Densidad de probabilidad",
       caption = "Intervalo de confianza: μ ∈ [x̄ ± t(α/2, n-1) * S/√n]") +
  # Línea central
  geom_vline(xintercept = 0, color = "gray30", linetype = "dotted") +
  # Escalas
  scale_x_continuous(breaks = seq(-4, 4, by = 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
  # Tema
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5, color = "darkblue"),
    plot.subtitle = element_text(hjust = 0.5, color = "darkblue"),
    panel.grid.major = element_line(color = "grey90"),
    panel.grid.minor = element_blank(),
    axis.line = element_line(color = "purple"),
    aspect.ratio = 0.8
  )

4 . Proporción de la población

Intervalo de Confianza para Proporción Poblacional

Fórmula general:

\[ p \in \left( \hat{p} - z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}},\ \hat{p} + z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \right) \]

Ejemplo: Prevalencia de fumadores

En una muestra de 200 estudiantes universitarios, 50 son fumadores habituales. Calcula un intervalo de confianza del 95% para la proporción real de fumadores.

Datos muestrales:

Cálculos preliminares: \[\begin{align*} \hat{p} &= \frac{x}{n} = \frac{50}{200} = 0.25 \\[8pt] z_{\alpha/2} &= z_{0.025} = 1.96 \quad (\text{para } 95\% \text{ confianza}) \\[8pt] \text{Error estándar} &= \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} = \sqrt{\frac{0.25(0.75)}{200}} = \sqrt{0.0009375} \approx 0.0306 \end{align*}\]

Intervalo de confianza: \[\begin{align*} \text{Límite inferior} &= 0.25 - 1.96 \times 0.0306 \approx 0.1900 \\ \text{Límite superior} &= 0.25 + 1.96 \times 0.0306 \approx 0.3100 \end{align*}\]

\[\boxed{IC_{95\%} = (0.1900;\ 0.3100)}\]

Interpretación: Con un 95% de confianza, la proporción real de estudiantes fumadores en la población está entre 19.00% y 31.00%.

GRÁFICA

Code
# Cálculos previos
n <- 200
x <- 50
confianza <- 0.95
p_hat <- x/n
gl <- n - 1  # Grados de libertad
t_critico <- qt(1 - (1 - confianza)/2, df = gl)
error_std <- sqrt(p_hat*(1 - p_hat)/n)
li <- p_hat - t_critico*error_std
ls <- p_hat + t_critico*error_std

# Crear la gráfica
curve(dt(x, df = gl), 
      from = -4, to = 4, 
    
      main = "Intervalo de Confianza del 95% (t-Student)",
      xlab = "Valor t", ylab = "Densidad",
      lwd = 2, col = "blue", 
      ylim = c(0, 0.4), 
      xaxp = c(-4, 4, 8))

# Sombrear el área de confianza
x_sombreado <- seq(-t_critico, t_critico, length.out = 100)
y_sombreado <- dt(x_sombreado, df = gl)
polygon(c(-t_critico, x_sombreado, t_critico), 
        c(0, y_sombreado, 0), 
        col = rgb(0.2, 0.6, 0.9, 0.5), border = NA)

# Líneas críticas y eje
abline(v = c(-t_critico, t_critico), lty = 2, col = "red")
abline(h = 0, col = "gray")

# Leyenda y anotaciones
legend("topright", 
       legend = c(sprintf("t crítico = ±%.3f", t_critico),
                  sprintf("gl = %d", gl),
                  sprintf("IC: [%.4f, %.4f]", li, ls)),
       bty = "n", cex = 0.9)

text(0, 0.1, "95% de confianza", cex = 1.2, col = "darkblue")
arrows(-1.5, 0.09, -0.5, 0.05, length = 0.1, col = "darkblue")
arrows(1.5, 0.09, 0.5, 0.05, length = 0.1, col = "darkblue")

# Añadir valores importantes en el eje
axis(1, at = c(-t_critico, 0, t_critico), 
     labels = c(round(-t_critico,2), "0", round(t_critico,2)),
     col.axis = "red", font = 2)

5 . Varianza de la población

Un ingeniero de control de calidad mide el diámetro de 15 cojinetes producidos.

Datos del Estudio

Tamaño muestral: n = 15 cojinetes

Varianza muestral: \(S^{2}= 0.25 mm^{2}\)

Nivel de confianza: 95% (\(\alpha = 0.05\))

Fórmula General

\[ \sigma^2 \in \left( \frac{(n-1)S^2}{\chi^2_{\alpha/2, n-1}}, \frac{(n-1)S^2}{\chi^2_{1-\alpha/2, n-1}} \right) \]

Cálculos

Grados de libertad: \(\nu = 14\)

Valores críticos de \(\chi^2\):

\[\chi^2_{0.025, 14} = 26.119,\] \[\chi^2_{0.975, 14} = 5.629\]

Límites del intervalo:

Límite inferior &= \(\frac{14 \times 0.25}{26.119} = 0.134 \\\)

Límite superior &= \(\frac{14 \times 0.25}{5.629} = 0.622\)

Resultado

\[ \sigma^2 \in (0.134,\ 0.622) \quad \text{(con 95\% de confianza)} \]

La desviación estándar poblacional está en el intervalo:

\[ \sigma \in (\sqrt{0.134},\ \sqrt{0.622}) = (0.366,\ 0.789) \text{mm}. \]

Interpretación: Con un 95% de confianza, la verdadera varianza poblacional (σ²) se encuentra entre 20.824 y 76.784, y la desviación estándar poblacional (σ) entre 4.5638 y 8.7626.

GRÁFICA

Code
# Código para gráfico de distribución t-Student con área sombreada (CORREGIDO)

# Configuración de parámetros
grados_libertad <- 9      # Grados de libertad (n-1)
nivel_confianza <- 0.95   # Nivel de confianza
alpha <- 1 - nivel_confianza

# Calcular valores críticos
t_critico <- qt(1 - alpha/2, df = grados_libertad)

# Crear secuencia de valores para el eje x
x <- seq(-4, 4, length.out = 300)

# Calcular densidad de probabilidad
densidad <- dt(x, df = grados_libertad)

# Crear data frame para ggplot
datos <- data.frame(x = x, densidad = densidad)

# Crear el gráfico
library(ggplot2)

ggplot(datos, aes(x = x, y = densidad)) +
  # Línea de la distribución
  geom_line(color = "#41c2cd", linewidth = 1.2) +
  
  # Área central (intervalo de confianza)
  geom_area(data = subset(datos, x >= -t_critico & x <= t_critico),
            fill = "#41c2cd", alpha = 0.5) +
  
  # Líneas verticales para valores críticos
  geom_vline(xintercept = c(-t_critico, t_critico),
             linetype = "dashed", color = "#d62728", linewidth = 0.8) +
  
  # Etiquetas de valores críticos
  annotate("text", x = -t_critico - 0.2, y = 0.02,
           label = paste0("t[", alpha/2, "] == ", round(-t_critico, 3)),
           parse = TRUE, color = "#bc41cd", hjust = 1) +
  
  annotate("text", x = t_critico + 0.2, y = 0.02,
           label = paste0("t[", 1 - alpha/2, "] == ", round(t_critico, 3)),
           parse = TRUE, color = "#bc41cd", hjust = 0) +
  
  # Áreas de cola
  geom_area(data = subset(datos, x <= -t_critico),
            fill = "#c44e52", alpha = 0.3) +
  
  geom_area(data = subset(datos, x >= t_critico),
            fill = "#c44e52", alpha = 0.3) +
  
  # Etiquetas de área
  annotate("text", x = -t_critico - 1.2, y = 0.05,
           label = expression(alpha/2), size = 6, color = "#c44e52") +
  
  annotate("text", x = t_critico + 1.2, y = 0.05,
           label = expression(alpha/2), size = 6, color = "#c44e52") +
  
  # CORRECCIÓN: Cambié 'level' por 'nivel_confianza'
  annotate("text", x = 0, y = 0.15,
           label = paste0(nivel_confianza*100, "% de confianza"),
           size = 5, color = "#2ca02c") +
  
  # Configuración de ejes y tema
  labs(title = paste0("Distribución t-Student (", grados_libertad, " gl)"),
       subtitle = paste0("Intervalo de confianza del ", nivel_confianza*100, "%"),
       x = "Valor t", y = "Densidad de probabilidad") +
  
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
        plot.subtitle = element_text(size = 12, hjust = 0.5),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10))

6 . Diferencia de las medidas de dos poblaciones (Varianzas Conocidas)

Teoría

Para dos poblaciones independientes con varianzas conocidas \(\sigma_1^2\) y \(\sigma_2^2\), el intervalo de confianza del \((1-\alpha)\times 100\%\) para \(\mu_1 - \mu_2\) es: \[ \mu_1 - \mu_2 \in \left( \bar{x}_1 - \bar{x}_2 \pm z_{\alpha/2} \sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}} \right) \] donde \(z_{\alpha/2}\) es el valor crítico de la distribución normal estándar.

Ejemplo

Se comparan dos métodos de producción:

Calcular un IC del 95% para \(\mu_1 - \mu_2\).

Solución

Diferencia de medias: \(\bar{x}_1 - \bar{x}_2 = 120 - 115 = 5\)

Valor crítico: \(z_{0.025} = 1.96\)

Error estándar: \[ \sqrt{\frac{10^2}{40} + \frac{12^2}{50}} = \sqrt{\frac{100}{40} + \frac{144}{50}} = \sqrt{2.5 + 2.88} = \sqrt{5.38} \approx 2.319 \]

Margen de error: \(E = 1.96 \times 2.319 \approx 4.545\)

Intervalo de confianza:

\[ (0.455,\ 9.545) \]

Interpretación: Con 95% de confianza, \(\mu_1 - \mu_2 \in (0.455,\ 9.545)\). Existe evidencia de que el Método A es superior.

FRÁFICA

Code
# Código para generar el gráfico de la distribución normal con área sombreada
curve(dnorm(x), 
      from = -4, 
      to = 4, 
      main = "Distribución Normal Estándar\nIntervalo de Confianza (1-α)", 
      xlab = "Z", 
      ylab = "Densidad",
      lwd = 2,
      col = "blue",
      ylim = c(0, 0.4),
      xaxs = "i", 
      yaxs = "i")

# Nivel de confianza (95%)
conf_level <- 0.95
alpha <- 1 - conf_level
z_critical <- qnorm(1 - alpha/2)  # Valor crítico z

# Sombrear el área central (intervalo de confianza)
x_shaded <- seq(-z_critical, z_critical, length.out = 100)
y_shaded <- dnorm(x_shaded)
polygon(c(-z_critical, x_shaded, z_critical), 
        c(0, y_shaded, 0), 
        col = rgb(0, 0.5, 1, alpha = 0.3), 
        border = NA)

# Agregar líneas y etiquetas para los valores críticos
abline(v = c(-z_critical, z_critical), lty = 2, col = "magenta")
text(-z_critical, -0.01, expression(-z[alpha/2]), pos = 1, col = "magenta", cex = 1.2)
text(z_critical, -0.01, expression(z[alpha/2]), pos = 1, col = "magenta", cex = 1.2)

# Agregar línea en y=0
abline(h = 0, col = "purple")

# Agregar leyenda
legend("topright", 
       legend = c("Densidad normal", "95% Intervalo de Confianza", "Valores críticos"),
       col = c("gold", rgb(0, 0.5, 1, alpha = 0.5), "pink"),
       lty = c(1, 1, 2), 
       lwd = c(2, 10, 1),
       bty = "n")

# Agregar anotación del nivel de confianza
text(0, dnorm(0)/3, paste0(conf_level*100, "%"), cex = 1.5)

7 . Diferencia de las medidas de dos poblaciones (Varianzas desconocidas e iguales)

Se comparan dos métodos de enseñanza.

Datos

Muestra 1: \(n_1 = 15\), \(\bar{x}_1 = 82\), \(S_1^2 = 30\)

Muestra 2: \(n_2 = 12\), \(\bar{x}_2 = 78\), \(S_2^2 = 35\)

Nivel de confianza: \(95\%\) (\(\alpha = 0.05\))

Fórmulas

\[\begin{align*} S_p^2 &= \frac{(n_1 - 1)S_1^2 + (n_2 - 1)S_2^2}{n_1 + n_2 - 2} \\ \nu &= n_1 + n_2 - 2 \\ \text{IC} &= (\bar{x}_1 - \bar{x}_2) \pm t_{\alpha/2, \nu} \cdot S_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} \end{align*}\]

Solución

Calcular \(S_p^2\):

\[ S_p^2 = \frac{(15-1) \cdot 30 + (12-1) \cdot 35}{15 + 12 - 2} = \frac{420 + 385}{25} = 32.2 \]

\[ S_p = \sqrt{32.2} \approx 5.674 \]

Grados de libertad:

\[ \nu = 15 + 12 - 2 = 25 \]

Valor crítico \(t_{\alpha/2, \nu}\):

\[ t_{0.025, 25} = 2.060 \]

Error estándar:

\[ \text{SE} = 5.674 \cdot \sqrt{\frac{1}{15} + \frac{1}{12}} = 5.674 \cdot 0.387 \approx 2.197 \]

Diferencia de medias: \[ \bar{x}_1 - \bar{x}_2 = 82 - 78 = 4 \]

Intervalo de confianza: \[ \text{IC} = 4 \pm (2.060 \cdot 2.197) = 4 \pm 4.527 \]

\[ \boxed{(-0.527,\ 8.527)} \]

Interpretación

Con un 95% de confianza, la diferencia real \(\mu_1 - \mu_2\) está entre \(-0.527\) y \(8.527\). Como el intervalo incluye el cero, no hay evidencia de diferencia significativa entre los métodos.

FRÁFICA

Code
# Cargar bibliotecas necesarias
library(ggplot2)

# Parámetros
gl <- 25  # Grados de libertad
confianza <- 0.95
alpha <- 1 - confianza
t_critico <- qt(1 - alpha/2, gl)  # Valor crítico

# Crear secuencia de valores para t
x <- seq(-4, 4, length.out = 300)
y <- dt(x, df = gl)
datos <- data.frame(x, y)

# Crear regiones para sombrear
region_confianza <- subset(datos, x >= -t_critico & x <= t_critico)
region_cola_izq <- subset(datos, x <= -t_critico)
region_cola_der <- subset(datos, x >= t_critico)

# Crear la gráfica
ggplot(datos, aes(x, y)) +
  geom_line(color = "blue", linewidth = 1) +
  
  # Sombrear área de confianza (95%)
  geom_ribbon(data = region_confianza, aes(ymin = 0, ymax = y), 
              fill = "skyblue", alpha = 0.7) +
  
  # Sombrear áreas de rechazo
  geom_ribbon(data = region_cola_izq, aes(ymin = 0, ymax = y), 
              fill = "gray", alpha = 0.5) +
  geom_ribbon(data = region_cola_der, aes(ymin = 0, ymax = y), 
              fill = "gray", alpha = 0.5) +
  
  # Líneas críticas
  geom_vline(xintercept = c(-t_critico, t_critico), 
             linetype = "dashed", color = "violet") +
  geom_vline(xintercept = 0, linetype = "solid", color = "black") +
  
  # Anotaciones
  annotate("text", x = 0, y = 0.2, label = "95% de confianza", 
           color = "darkblue", size = 5) +
  annotate("text", x = -2.8, y = 0.05, label = "2.5%", 
           color = "white", size = 4) +
  annotate("text", x = 2.8, y = 0.05, label = "2.5%", 
           color = "white", size = 4) +
  geom_segment(aes(x = -t_critico, y = -0.005, xend = t_critico, yend = -0.005),
               arrow = arrow(ends = "both", length = unit(0.2, "cm"))) +
  
  # Etiquetas y tema
  labs(title = "Distribución t-Student para 25 grados de libertad",
       subtitle = paste0("Intervalo de confianza del 95% (t crítico = ±", round(t_critico, 3), ")"),
       x = "Valor t", y = "Densidad de probabilidad") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        legend.position = "none")

8 . Diferencia de las medidas de dos poblaciones (Varianzas desconocidas y distintas)

Teoría: Intervalo de Confianza para \(\mu_1 - \mu_2\) (Varianzas Desconocidas y Distintas)

Cuando tenemos dos poblaciones independientes con varianzas desconocidas y diferentes (\(\sigma_1^2 \neq \sigma_2^2\)), utilizamos la aproximación de Welch-Satterthwaite:

\(\mu_1 - \mu_2 \in \left( \bar{x}_1 - \bar{x}_2 \pm t_{\alpha/2, v} \sqrt{\frac{S_1^2}{n_1} + \frac{S_2^2}{n_2}} \right)\)

Donde:

\(\bar{x}_1\), \(\bar{x}_2\): Medias muestrales

\(S_1^2\), \(S_2^2\): Varianzas muestrales

\(n_1\), \(n_2\): Tamaños de muestra

\(v\): Grados de libertad aproximados (fórmula de Welch):

\[ v \approx \frac{\left( \frac{S_1^2}{n_1} + \frac{S_2^2}{n_2} \right)^2}{\dfrac{(S_1^2/n_1)^2}{n_1-1} + \dfrac{(S_2^2/n_2)^2}{n_2-1}} \]

\(t_{\alpha/2, v}\): Valor crítico de la distribución \(t\)-Student

Ejemplo Práctico

Enunciado

Se comparan dos métodos de enseñanza:

Método A: \(n_1 = 15\), \(\bar{x}_1 = 82\), \(S_1^2 = 30\)

Método B: \(n_2 = 12\), \(\bar{x}_2 = 78\), \(S_2^2 = 40\)

Calcular un intervalo de confianza del 95% para \(\mu_1 - \mu_2\).

Solución

Paso 1: Cálculo de grados de libertad (\(v\))

\[ v = \frac{\left( \frac{30}{15} + \frac{40}{12} \right)^2}{\dfrac{(30/15)^2}{15-1} + \dfrac{(40/12)^2}{12-1}} = \frac{(2 + 3.3333)^2}{\dfrac{2^2}{14} + \dfrac{3.3333^2}{11}} = \frac{(5.3333)^2}{\dfrac{4}{14} + \dfrac{11.1111}{11}} = \frac{28.444}{\frac{4}{14} + 1.0101} \]

\[ = \frac{28.444}{0.2857 + 1.0101} = \frac{28.444}{1.2958} \approx 21.95 \]

Paso 2: Valor crítico \(t\)

Para \(\alpha = 0.05\) (95% confianza) y \(v \approx 21.95\):

\[ t_{0.025, 21.95} \approx 2.080 \]

Paso 3: Error estándar

\[ \text{EE} = \sqrt{\frac{S_1^2}{n_1} + \frac{S_2^2}{n_2}} = \sqrt{\frac{30}{15} + \frac{40}{12}} = \sqrt{2 + 3.3333} = \sqrt{5.3333} \approx 2.309\]

Paso 4: Margen de error

\[ E = t_{\alpha/2, v} \times \text{EE} = 2.080 \times 2.309 \approx 4.803 \]

Paso 5: Diferencia de medias e intervalo

\[ \bar{x}_1 - \bar{x}_2 = 82 - 78 = 4 \]

\[ \text{Intervalo} = (4 - 4.803, 4 + 4.803) = (-0.803, 8.803) \]

Resultado

\[ \mu_1 - \mu_2 \in (-0.803, 8.803) \quad \text{(95\% confianza)} \]

Interpretación

El intervalo de confianza \((-0.803, 8.803)\) contiene el cero (\(0\)), lo que indica que:

No existe evidencia suficiente para afirmar que hay diferencia significativa entre los métodos Con 95% de confianza, la verdadera diferencia de medias podría estar entre -0.803 y 8.803 El método A podría ser entre 0.803 puntos peor y 8.803 puntos mejor que el método B.

Grados libertad (\(v\)) &= 21.95

Valor crítico (\(t\)) &= 2.080

Diferencia medias &= 4

Límite inferior &= -0.803

Límite superior &= 8.803

GRÁFICA

Code
# Código para generar gráfico de distribución t-Student con área sombreada
# Parámetros del ejemplo anterior
n1 <- 20
media1 <- 28.5
var1 <- 16.2
n2 <- 18
media2 <- 25.8
var2 <- 22.5
confianza <- 0.99
alpha <- 1 - confianza

# Cálculo de grados de libertad
numerador <- (var1/n1 + var2/n2)^2
denominador <- (var1/n1)^2/(n1-1) + (var2/n2)^2/(n2-1)
v <- numerador/denominador

# Valor crítico t
t_critico <- qt(1 - alpha/2, df = v)

# Crear secuencia de valores para el eje x
x <- seq(-4, 4, length.out = 400)

# Calcular densidad de la distribución t
y <- dt(x, df = v)

# Configurar área de gráfico
plot(x, y, type = "l", lwd = 2, col = "violet",
     xlab = "Valor t", ylab = "Densidad",
     main = paste("Distribución t-Student (v =", round(v, 2), ")"),
     cex.main = 1.2, cex.lab = 1.1)

# Añadir línea en y=0
abline(h = 0, col = "gray")

# Sombrear el área central (intervalo de confianza)
x_fill <- seq(-t_critico, t_critico, length.out = 100)
y_fill <- dt(x_fill, df = v)
polygon(c(-t_critico, x_fill, t_critico), 
        c(0, y_fill, 0), 
        col = rgb(0.7, 0.9, 1, 0.5), border = NA)

# Sombrear las colas
x_left <- seq(min(x), -t_critico, length.out = 50)
y_left <- dt(x_left, df = v)
polygon(c(min(x), x_left, -t_critico), 
        c(0, y_left, 0), 
        col = rgb(1, 0.7, 0.7, 0.5), border = NA)

x_right <- seq(t_critico, max(x), length.out = 50)
y_right <- dt(x_right, df = v)
polygon(c(t_critico, x_right, max(x)), 
        c(0, y_right, 0), 
        col = rgb(1, 0.7, 0.7, 0.5), border = NA)

# Añadir líneas críticas
abline(v = c(-t_critico, t_critico), col = "red", lty = 2, lwd = 2)

# Añadir etiquetas
text(0, dt(0, df = v)*0.7, paste0(confianza*100, "%"), cex = 1.2, col = "darkblue")
text(-t_critico - 0.5, dt(0, df = v)*0.3, 
     paste0("-t = ", round(-t_critico, 3)), col = "red", pos = 2)
text(t_critico + 0.5, dt(0, df = v)*0.3, 
     paste0("t = ", round(t_critico, 3)), col = "red", pos = 4)

# Leyenda
legend("topright", 
       legend = c(paste("Distribución t(v =", round(v, 2), ")"),
                  paste("Valores críticos ±", round(t_critico, 3)),
                  paste("Nivel de confianza:", confianza*100, "%")),
       col = c("pink", "yellow", NA), 
       lty = c(1, 2, NA), 
       lwd = c(2, 2, NA),
       fill = c(NA, NA, rgb(0.7, 0.9, 1, 0.5)), 
       border = NA,
       cex = 0.9,
       box.lty = 0)

# Añadir fórmula
text(2.5, 0.25, 
     expression(paste(mu[1]-mu[2], " ∈ (", bar(x)[1]-bar(x)[2], " ± ", 
                     t[alpha/2], sqrt(frac(s[1]^2, n[1]) + frac(s[2]^2, n[2])), ")")), 
     cex = 0.9, pos = 2)

9 . Cociente de las variaciones de dos poblaciones

Un laboratorio evalúa la precisión de dos cronómetros. Se realizan 15 mediciones con el cronómetro A y 12 con el cronómetro B. Los datos muestrales son:

Cronómetro A: \(S^{2}_{A}=0.81 milisegundos^{2}\)

Cronometro B: \(S^{2}_{B}=0.49 milisegundos^{2}\)

Nivel de confianza: 99%

Intervalo de Confianza para el Cociente de Varianzas

Fundamentos Teóricos

El intervalo se construye usando la distribución F de Snedecor:

\[ P\left( F_{1-\alpha/2, df_2, df_1} \leq \frac{S_1^2 / \sigma_1^2}{S_2^2 / \sigma_2^2} \leq F_{\alpha/2, df_2, df_1} \right) = 1 - \alpha \]

Despejando el cociente de varianzas poblacionales:

\[ \frac{\sigma_1^2}{\sigma_2^2} \in \left( \frac{S_1^2}{S_2^2} \cdot F_{1-\alpha/2, df_2, df_1},\ \frac{S_1^2}{S_2^2} \cdot F_{\alpha/2, df_2, df_1} \right) \] donde:

\(df_1 = n_1 - 1\), \(df_2 = n_2 - 1\) \(F_{\gamma, df_a, df_b}\) = cuantil \(\gamma\) de la distribución F

Ejemplo: Validación de Cronómetros

Parámetros del estudio:

\(n_{1}=15,S^{2}_{1}=0.81\)

\(n_{2}=12,S^{2}_{2}=0.49\)

\(\alpha = 0.01(\alpha/2=0.005)\)

Grados de libertad: \(df_{1}=n_{1}-1=14, df_{2}=n_{2}-1=11\)

Cálculo de valores críticos:

\(F_{0.995, 11, 14}\) &= \(\dfrac{1}{F_{0.005, 14, 11}} \approx \dfrac{1}{3.76} \approx 0.266\)

\(F_{0.005, 11, 14}\) &= \(approx 3.87\)

Cociente muestral:

\[ \frac{S_A^2}{S_B^2} = \frac{0.81}{0.49} \approx 1.653 \]

Límites del intervalo:

Límite inferior &= \(1.653 \times 0.266 \approx 0.440\)

Límite superior &= \(1.653 \times 3.87 \approx 6.397\)

Intervalo de confianza al \(99\%\):

\[ \boxed{(0.440,\ 6.397)} \]

GRÁFICA

Code
# Versión optimizada para evitar errores de paréntesis
create_f_plot <- function(df1, df2, alpha, x_max = 6) {
  # Cálculos previos
  F_lower <- qf(alpha/2, df1, df2)
  F_upper <- qf(1 - alpha/2, df1, df2)
  x <- seq(0, x_max, length.out = 1000)
  y <- df(x, df1, df2)
  df_plot <- data.frame(x = x, y = y)
  
  # Construir gráfico por partes
  p <- ggplot(df_plot, aes(x = x, y = y)) +
    geom_line(color = "blue", linewidth = 1)
  
  # Áreas sombreadas
  p <- p + geom_ribbon(
    data = subset(df_plot, x <= F_lower),
    aes(ymax = y, ymin = 0), fill = "red", alpha = 0.5
  )
  
  p <- p + geom_ribbon(
    data = subset(df_plot, x >= F_upper),
    aes(ymax = y, ymin = 0), fill = "red", alpha = 0.5
  )
  
  p <- p + geom_ribbon(
    data = subset(df_plot, x >= F_lower & x <= F_upper),
    aes(ymax = y, ymin = 0), fill = "green", alpha = 0.3
  )
  
  # Líneas y anotaciones
  p <- p + geom_vline(xintercept = F_lower, linetype = "dashed", color = "darkred")
  p <- p + geom_vline(xintercept = F_upper, linetype = "dashed", color = "darkred")
  
  p <- p + annotate("text", x = F_lower - 0.3, y = 0.02, 
                    label = sprintf("F[0.005]==%.3f", F_lower), 
                    color = "darkred", parse = TRUE, size = 3.5)
  
  p <- p + annotate("text", x = F_upper + 0.5, y = 0.02, 
                    label = sprintf("F[0.995]==%.3f", F_upper), 
                    color = "darkred", parse = TRUE, size = 3.5)
  
  p <- p + annotate("text", x = mean(c(F_lower, F_upper)), y = 0.1, 
                    label = sprintf("%.0f%% de confianza", (1-alpha)*100), 
                    color = "darkgreen", size = 5)
  
  # Títulos y tema
  p + labs(
    title = sprintf("Distribución F (df1 = %d, df2 = %d)", df1, df2),
    subtitle = sprintf("Intervalo de confianza del %.0f%%", (1-alpha)*100),
    x = "Valor F", y = "Densidad de probabilidad"
  ) + xlim(0, x_max) + theme_minimal() +
    theme(plot.title = element_text(hjust = 0.5, face = "bold"),
          plot.subtitle = element_text(hjust = 0.5))
}

# Usar la función
create_f_plot(df1 = 11, df2 = 14, alpha = 0.01)

10 . Diferencia de las proporciones de dos poblaciones

Ejemplo: Diferencia de Proporciones

Problema: Muestra 1: \(n_1 = 200\), \(x_1 = 40\) (\(\hat{p}_1 = 0.20\))

Muestra 2: \(n_2 = 300\), \(x_2 = 60\) (\(\hat{p}_2 = 0.20\))

Nivel de confianza: \(95\%\) (\(\alpha = 0.05\))

  1. Intervalo de Confianza

\[ \begin{aligned} \text{Diferencia} &= \hat{p}_1 - \hat{p}_2 = 0.20 - 0.20 = 0 \\ \text{Error estándar} &= \sqrt{\frac{0.20(0.80)}{200} + \frac{0.20(0.80)}{300}} = \sqrt{0.0008 + 0.000533} = 0.0365 \\ z_{0.025} &= 1.96 \quad \text{(valor crítico)} \\ \text{Margen de error} &= 1.96 \times 0.0365 = 0.0715 \\ \text{IC}_{95\%} &= 0 \pm 0.0715 = \boxed{(-0.0715,\ 0.0715)} \end{aligned} \]

  1. Prueba de Hipótesis \[H_0: p_1 = p_2\]

\[ \begin{aligned} \hat{p}_{\text{pooled}} &= \frac{40 + 60}{200 + 300} = \frac{100}{500} = 0.20 \\ \text{Error estándar} &= \sqrt{0.20 \times 0.80 \times \left(\frac{1}{200} + \frac{1}{300}\right)} = 0.0365 \\ z &= \frac{0.20 - 0.20}{0.0365} = 0 \\ \text{Valor-p} &= 2 \times P(Z > |0|) = 1.0 \quad \text{(no se rechaza \(H_0\))} \end{aligned} \]

Interpretación

El intervalo de confianza incluye el 0 \(\rightarrow\) No hay diferencia significativa.

El valor-p > \(\alpha\) \(\rightarrow\) No se rechaza \(H_0\).

En conclusión las proporciones son estadísticamente iguales.

GRÁFICA

Code
# Instalar paquetes si son necesarios
# install.packages("ggplot2")
# install.packages("dplyr")
# install.packages("ggthemes")

library(ggplot2)
library(dplyr)

# Parámetros de la distribución
df <- 498  # Grados de libertad (n1 + n2 - 2 = 200 + 300 - 2)
conf_level <- 0.95
alpha <- 1 - conf_level

# Calcular valores críticos
t_critical <- qt(1 - alpha/2, df)

# Crear datos para la curva t
curve_data <- data.frame(x = seq(-4, 4, length.out = 1000)) %>%
  mutate(y = dt(x, df))

# Crear datos para el área sombreada
shaded_area <- curve_data %>%
  filter(x >= -t_critical & x <= t_critical)

# Crear el gráfico
ggplot(curve_data, aes(x = x, y = y)) +
  # Línea de la curva t
  geom_line(color = "#1f77b4", linewidth = 1.2) +
  
  # Área sombreada para el intervalo de confianza
  geom_ribbon(data = shaded_area, 
              aes(ymin = 0, ymax = y), 
              fill = "#1f77b4", alpha = 0.4) +
  
  # Líneas de los valores críticos
  geom_vline(xintercept = c(-t_critical, t_critical), 
             color = "red", linetype = "dashed", linewidth = 1) +
  
  # Etiquetas de los valores críticos
  annotate("text", x = -t_critical - 0.3, y = 0.02, 
           label = paste0("-t* = ", round(-t_critical, 3)), 
           color = "red", size = 4) +
  annotate("text", x = t_critical + 0.3, y = 0.02, 
           label = paste0("t* = ", round(t_critical, 3)), 
           color = "red", size = 4) +
  
  # Etiqueta del intervalo de confianza
  annotate("text", x = 0, y = 0.1, 
           label = paste0(conf_level*100, "% de confianza"), 
           size = 5, fontface = "bold") +
  
  # Títulos y etiquetas
  labs(title = "Distribución t-Student para Diferencia de Proporciones",
       subtitle = paste("Grados de libertad =", df),
       x = "Valor t", 
       y = "Densidad de Probabilidad",
       caption = "Área sombreada: Intervalo de confianza") +
  
  # Tema y estilo
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5),
    panel.grid.major = element_line(color = "gray90"),
    panel.grid.minor = element_blank(),
    axis.line = element_line(color = "black")
  )

11 . Conlusión trabajo

Los intervalos de confianza son herramientas fundamentales en inferencia estadística que permiten estimar parámetros poblacionales con un nivel de certeza predefinido. Su interpretación clave es: “Si repitiéramos el muestreo infinitas veces, el (1-α)% de los intervalos contendrían el verdadero parámetro poblacional”.