Cuando se selecciona una muestra aleatoria de una población, las medidas numéricas descriptivas que se calculen de la muestra se denominan estadísticas. Las estadísticas varían o cambian para cada muestra aleatoria diferente que se escoja; esto es, son variables aleatorias. Las distribuciones de probabilidad para estadísticas se llaman distribuciones muestrales porque, en muestreos repetidos, dan esta información:
La distribución muestral de una estadística es la distribución de probabilidad para los posibles valores de la estadística, que resulta cuando muestras aleatorias de tamaño n se sacan repetidamente de la población.
Deduciremos la distribución de probabilidad del lanzamiento de un dado. Sea \(x\) la variable aleatoria: valor obtenido al lanzar un dado.
\(x\) | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
\(P(x)\) | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 |
El gráfico de la distribución de probabilidad será:
# Crear el data frame para el gráfico
datos_dado <- data.frame(
x = 1:6,
px = rep(1/6, 6)
)
# Crear el gráfico de barras con ggplot2
ggplot(datos_dado, aes(x = as.factor(x), y = px)) +
geom_bar(stat = "identity", fill = "red", alpha = 0.8) +
ylim(0, 0.5) +
labs(
title = "Gráfico de probabilidad de lanzamiento de un dado",
x = "Resultado (x)",
y = "Probabilidad P(x)"
) +
theme_minimal()
Realicemos el lanzamiento de 2 dados y encontremos su valor promedio.
# Definir los posibles resultados de un dado
posibles_resultados <- 1:6
# Simular el lanzamiento de 2 dados (con reemplazo)
lanzamiento_2_dados <- sample(posibles_resultados, size = 2, replace = TRUE)
print(lanzamiento_2_dados)
## [1] 4 6
# Calcular el promedio del lanzamiento
media <- mean(lanzamiento_2_dados)
print(media)
## [1] 5
¿Qué sucede si se realiza el lanzamiento de los dados en muchas ocasiones? Por ejemplo, 10 veces.
# Pre-asignar una matriz para los resultados y un vector para las medias
num_simulaciones <- 10
num_dados <- 2
resultados_matriz <- matrix(NA, nrow = num_simulaciones, ncol = num_dados)
medias <- numeric(num_simulaciones)
# Ciclo for para las simulaciones
for (i in 1:num_simulaciones) {
lanzamiento <- sample(posibles_resultados, size = num_dados, replace = TRUE)
resultados_matriz[i, ] <- lanzamiento
medias[i] <- mean(lanzamiento)
}
# Crear un data frame con los resultados
resultados_df <- as.data.frame(resultados_matriz)
resultados_df$Media <- medias
# Mostrar los resultados
print(resultados_df)
## V1 V2 Media
## 1 5 3 4.0
## 2 5 4 4.5
## 3 4 6 5.0
## 4 6 5 5.5
## 5 3 3 3.0
## 6 3 4 3.5
## 7 3 1 2.0
## 8 5 4 4.5
## 9 5 1 3.0
## 10 2 3 2.5
A continuación, se presenta el código modificado para realizar 100 simulaciones del lanzamiento de 3 dados y visualizar la distribución de sus medias.
# Parámetros del ejercicio
num_simulaciones_ej <- 100
num_dados_ej <- 3
medias_ej <- numeric(num_simulaciones_ej)
# Ciclo de simulación
for (i in 1:num_simulaciones_ej) {
lanzamiento <- sample(posibles_resultados, size = num_dados_ej, replace = TRUE)
medias_ej[i] <- mean(lanzamiento)
}
# Crear un data frame y graficar el histograma
df_medias_ej <- data.frame(Media = medias_ej)
ggplot(df_medias_ej, aes(x = Media)) +
geom_histogram(aes(y = ..density..), bins = 15, fill = "darkblue", color = "white", alpha = 0.8) +
geom_density(color = "red", size = 1) +
labs(
title = "Histograma de Medias (100 simulaciones, n=3)",
x = "Promedio",
y = "Densidad"
) +
theme_minimal()
Si muestras aleatorias de n observaciones se sacan de una población (incluso no normal) con media finita \(\mu\) y desviación estándar \(\sigma\), entonces, cuando n es grande, la distribución de muestreo de la media muestral \(\bar{x}\) está distribuida normalmente en forma aproximada, con media \(\mu\) y desviación estándar (error estándar) \(\frac{\sigma}{\sqrt{n}}\).
La aproximación se hace más precisa cuando n se hace grande.
Razones para muestrear:
Es el tipo de muestreo más común, donde cada elemento de la población tiene la misma posibilidad de ser incluido.
Pasos:
Parámetro | Tamaño de la población conocida | Tamaño de la población no conocida |
---|---|---|
\(\mu\) | \(n\geq \frac{N\times Z_{1-\frac{\alpha}{2}}^2\times \sigma^2}{e^2\times(N-1)+Z_{1-\frac{\alpha}{2}}^2\times\sigma^2}\) | \(n\geq \frac{Z_{1-\frac{\alpha}{2}}^2\times\sigma^2}{e^2}\) |
\(\pi\) | \(n\geq \frac{N\times Z_{1-\frac{\alpha}{2}}^2\times\pi(1-\pi)}{e^2\times(N-1)+Z_{1-\frac{\alpha}{2}}^2\times\pi(1-\pi)}\) | \(n\geq \frac{Z_{1-\frac{\alpha}{2}}^2\times\pi(1-\pi)}{e^2}\) |
Se tiene una lista de 24 pizzerías. Se calculará el tamaño de muestra y se seleccionará una.
# Crear el DataFrame de las tiendas
datos_pizza <- data.frame(
ID = c(2607, 309, 2652, 630, 3510, 5055, 3382, 2525, 303, 149, 835, 3501, 2040, 2116, 3678, 1419, 1234, 4624, 5155, 106, 6725, 4252, 2036, 1316),
Direccion = c('Starr Av', 'W Alexis Rd', 'W Central Av', 'Dixie Hwy', 'Dorr St', 'Glendale Av', 'Lagrange St', 'W Laskey Rd', 'Louisiana Av', 'Main', 'S McCord Rd', 'Monroe St', 'Ottawa River Rd', 'N Reynolds Rd', 'Rugby Dr', 'South Av', 'W Sylvania Av', 'Woodville Rd', 'S Main', 'E Airport Hwy', 'W Central', 'Monroe', 'Woodville Rd', 'Michigan Av')
)
# Parámetros para el cálculo
N <- nrow(datos_pizza) # Tamaño de la población
sigma2 <- 10 # Varianza poblacional supuesta
e <- 2.1 # Error máximo permitido
confianza <- 0.90 # Nivel de confianza
# Calcular alfa y el cuantil Z
alpha <- 1 - confianza
z_alpha_half <- qnorm(1 - alpha / 2)
# Calcular el tamaño de la muestra (fórmula para población finita)
numerador <- N * z_alpha_half^2 * sigma2
denominador <- e^2 * (N - 1) + z_alpha_half^2 * sigma2
n_float <- numerador / denominador
n <- ceiling(n_float) # Redondear hacia arriba
# Imprimir resultados
cat(paste("Tamaño de población (N):", N, "\n"))
## Tamaño de población (N): 24
cat(paste("Varianza poblacional (sigma^2):", sigma2, "\n"))
## Varianza poblacional (sigma^2): 10
cat(paste("Error máximo permitido (e):", e, "\n"))
## Error máximo permitido (e): 2.1
cat(paste("Nivel de confianza:", confianza * 100, "%\n"))
## Nivel de confianza: 90 %
cat(paste("Valor Z:", round(z_alpha_half, 4), "\n"))
## Valor Z: 1.6449
cat(paste("Tamaño de muestra calculado (n):", n, "\n\n"))
## Tamaño de muestra calculado (n): 6
# Seleccionar la muestra aleatoria
indices_muestra <- sample(1:N, size = n, replace = FALSE)
cat("Índices de la muestra seleccionada:\n")
## Índices de la muestra seleccionada:
print(indices_muestra)
## [1] 6 3 14 1 16 11
# Obtener los datos de la muestra
datos_muestra <- datos_pizza[indices_muestra, ]
cat("\nDatos de la muestra seleccionada:\n")
##
## Datos de la muestra seleccionada:
print(datos_muestra)
## ID Direccion
## 6 5055 Glendale Av
## 3 2652 W Central Av
## 14 2116 N Reynolds Rd
## 1 2607 Starr Av
## 16 1419 South Av
## 11 835 S McCord Rd
Se busca usar la información de una muestra para estimar un parámetro poblacional.
Un Intervalo de Confianza (IC) es un rango que, con una alta probabilidad (coeficiente de confianza \(1-\alpha\)), contiene el parámetro de interés.
\[\bar{X}\pm Z_{1-\alpha/2}\frac{S}{\sqrt{n}}\]
Una muestra de \(n = 50\) hombres mostró una ingesta diaria promedio de \(\bar{X}=756\) gramos, con una desviación estándar de \(S=35\) gramos. Construya un IC del \(95\%\) para la media poblacional.
# Datos del problema
media_muestral <- 756
s <- 35
n <- 50
confianza <- 0.95
alpha <- 1 - confianza
# Calcular el valor Z
z_val <- qnorm(1 - alpha / 2)
# Calcular límites del intervalo
error_estandar <- s / sqrt(n)
limite_inferior <- media_muestral - z_val * error_estandar
limite_superior <- media_muestral + z_val * error_estandar
cat(paste("Límite Inferior:", round(limite_inferior, 2), "\n"))
## Límite Inferior: 746.3
cat(paste("Límite Superior:", round(limite_superior, 2), "\n"))
## Límite Superior: 765.7
# Alternativa usando una función
# R base no tiene una función directa para Z-intervalo, pero podemos crearla
# o usar la fórmula de manera compacta
ic <- media_muestral + c(-1, 1) * qnorm(1 - alpha/2) * (s / sqrt(n))
print(ic)
## [1] 746.2987 765.7013
# Función para graficar la distribución y el IC
plot_dist_ic <- function(media, se, confianza, titulo) {
alpha <- 1 - confianza
li <- media - qnorm(1 - alpha/2) * se
ls <- media + qnorm(1 - alpha/2) * se
ggplot(data.frame(x = c(media - 4*se, media + 4*se)), aes(x)) +
stat_function(fun = dnorm, args = list(mean = media, sd = se), color = "black") +
stat_function(fun = dnorm, args = list(mean = media, sd = se),
xlim = c(li, ls), geom = "area", fill = "blue", alpha = 0.5) +
labs(title = titulo, x = "Valores", y = "Densidad") +
geom_vline(xintercept = c(li,ls), linetype = "dashed", color = "red") +
theme_minimal()
}
plot_dist_ic(media = 756, se = 35 / sqrt(50), confianza = 0.95,
titulo = "Distribución de la Media con IC del 95%")
Esta simulación muestra cómo, si repetimos el muestreo 100 veces, aproximadamente el 95% de los IC del 95% contendrán el verdadero parámetro poblacional (\(\mu\)).
set.seed(1012) # Para reproducibilidad
mu_real <- 1.5
sigma_real <- 1
alpha <- 0.05
num_replicaciones <- 100
tamano_muestra <- 50
# Generar una población "grande"
poblacion <- rnorm(10^6, mean = mu_real, sd = sigma_real)
# Matriz para guardar los intervalos
intervalos <- matrix(NA, nrow = num_replicaciones, ncol = 2)
# Función para calcular IC de una muestra
calcular_ic_z <- function(x, sigma, alpha) {
n <- length(x)
media_x <- mean(x)
z_valor <- qnorm(1 - alpha/2)
se <- sigma / sqrt(n)
return(c(media_x - z_valor * se, media_x + z_valor * se))
}
# Realizar las replicaciones
for (i in 1:num_replicaciones) {
muestra <- sample(poblacion, size = tamano_muestra, replace = TRUE)
intervalos[i, ] <- calcular_ic_z(muestra, sigma_real, alpha)
}
# Graficar los resultados
plot(c(1.2, 1.8), c(1, num_replicaciones), type = "n",
xlab = "Valores", ylab = "Replicaciones",
main = "Simulación de 100 Intervalos de Confianza (95%)")
abline(v = mu_real, col = "black", lwd = 2, lty = 2)
for (i in 1:num_replicaciones) {
color_intervalo <- "grey"
# Si el intervalo NO contiene la media real, pintarlo de rojo
if (mu_real < intervalos[i, 1] || mu_real > intervalos[i, 2]) {
color_intervalo <- "red"
}
segments(intervalos[i, 1], i, intervalos[i, 2], i, col = color_intervalo, lwd = 2)
}
De media, un \(\alpha \times 100\%\) de las veces, un intervalo de confianza del \((1-\alpha)\times 100\%\) no contendrá el valor real del parámetro.
Por ejemplo, de media, un \(5\%\) de las veces un intervalo de confianza del \(95\%\) no contendrá el valor real del parámetro.
\[p\pm Z_{1-\alpha/2}\sqrt{\frac{p(1-p)}{n}}\]
Se considera grande cuando \(np>5\) y \(n(1-p)>5\).
De 985 electores, 592 apoyan a una candidata. Construya un IC del \(90\%\).
# Datos
n <- 985
x <- 592
confianza <- 0.90
alpha <- 1 - confianza
# Proporción muestral
p_muestral <- x / n
# Comprobar condición de muestra grande
cat(paste("np =", round(n * p_muestral, 2), "(> 5, OK)\n"))
## np = 592 (> 5, OK)
cat(paste("n(1-p) =", round(n * (1 - p_muestral), 2), "(> 5, OK)\n\n"))
## n(1-p) = 393 (> 5, OK)
# Calcular el IC
z_val <- qnorm(1 - alpha/2)
se_p <- sqrt(p_muestral * (1 - p_muestral) / n)
ic_prop <- p_muestral + c(-1, 1) * z_val * se_p
cat(paste("El IC del 90% para la proporción es: [", round(ic_prop[1], 4), ", ", round(ic_prop[2], 4), "]\n"))
## El IC del 90% para la proporción es: [ 0.5754 , 0.6267 ]
Como todo el intervalo está por encima de 0.50, se puede concluir que es probable que la candidata gane.
1. Experimento de Electrólisis En un experimento, \(n= 30\) estudiantes calcularon una media muestral de cobre precipitado de 0.145 moles y una desviación estándar de 0.0051 moles. Encuentre un IC del \(90\%\).
2. Reproductores MP3 Un estudio indicó que \(54\%\) de los jóvenes entre 12 y 17 años (muestra de 400), y \(30\%\) de los de entre 18 y 34 años (muestra de 350), tienen reproductores MP3. > - Construya un IC del \(95\%\) para la proporción de personas entre 12 y 17 años. > - Construya un IC del \(95\%\) para la proporción de personas entre 18 y 34 años.
3. Paquetes de Carne Molida Una muestra de 35 paquetes de carne produjo un promedio de 1.01 libras y una desviación estándar de 0.18 libras. > - Construya un IC del \(99\%\) para el peso promedio. > - ¿Qué significa la frase “99% de confianza”? > - Si el objetivo del control de calidad es que el peso promedio sea 1 libra, ¿debería interesarles este IC? Explique.
4. Encuesta sobre Aborto Una encuesta a \(n=1002\) adultos mostró que \(39\%\) favorecía la postura del “derecho a la vida” y \(53\%\) estaba “a favor de la elección libre”. > - Construya un IC del \(90\%\) para la proporción de adultos a favor del “derecho a la vida”. > - Construya un IC del \(90\%\) para la proporción de adultos “a favor de la elección libre”.