Pregunta 9 V1

Ruben Cabrera 2025-11-06

Librerias

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'

## The following objects are masked from 'package:stats':
## 
##     filter, lag

## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
  1. Nombre: Ruben Cabrera
# Definir la población
df <- data.frame(peso = ChickWeight$weight, dieta = ChickWeight$Diet)

# Extraer una muestra aleatoria simple sin reemplazo de tamaño 100 y estimar la media poblacional.
N <- nrow(df) 
n <- 120     
  1. Muestra aleatoria y promedio muestral
# Definir la población
indices_mas <- sample(1:N, size = n, replace = FALSE)
muestra_mas <- df[indices_mas, ]
media_estimada_mas <- mean(muestra_mas$peso)

cat(paste("Media estimada:", media_estimada_mas))
## Media estimada: 117.216666666667
  1. Asignación proporcional y asignación óptima
info_estratos <- df %>%
  group_by(dieta) %>%
  summarise(
    N_h = n(),
    S_h = sd(peso)
  ) %>%
  mutate(
    W_h = N_h / N,
    N_h_S_h = N_h * S_h
  )

info_estratos$n_prop <- round(n * info_estratos$W_h)
sum_NhSh <- sum(info_estratos$N_h_S_h)
info_estratos$n_opt <- round(n * info_estratos$N_h_S_h / sum_NhSh)

print(info_estratos[, c("dieta", "n_prop", "n_opt")])
## # A tibble: 4 × 3
##   dieta n_prop n_opt
##   <fct>  <dbl> <dbl>
## 1 1         46    38
## 2 2         25    26
## 3 3         25    31
## 4 4         24    25
  1. Estimación de las media poblacionales
list_estratos <- split(df, df$dieta)
muestra_prop_lista <- mapply(
  function(estrato_df, n_h) estrato_df[sample(1:nrow(estrato_df), n_h), ],
  list_estratos, 
  info_estratos$n_prop, 
  SIMPLIFY = FALSE
)
muestra_prop <- bind_rows(muestra_prop_lista)
muestra_opt_lista <- mapply(
  function(estrato_df, n_h) estrato_df[sample(1:nrow(estrato_df), n_h), ],
  list_estratos, 
  info_estratos$n_opt, 
  SIMPLIFY = FALSE
)
muestra_opt <- bind_rows(muestra_opt_lista)

cat(paste("Tamaño muestra proporcional:", nrow(muestra_prop)))
## Tamaño muestra proporcional: 120
cat(paste("\nTamaño muestra óptima:", nrow(muestra_opt)))
## 
## Tamaño muestra óptima: 120
medias_estrato_prop <- muestra_prop %>%
  group_by(dieta) %>%
  summarise(media_h_estimada = mean(peso))
print(medias_estrato_prop)
## # A tibble: 4 × 2
##   dieta media_h_estimada
##   <fct>            <dbl>
## 1 1                 103.
## 2 2                 127.
## 3 3                 153.
## 4 4                 146.
# Medias estimadas por estrato (Óptima)
medias_estrato_opt <- muestra_opt %>%
  group_by(dieta) %>%
  summarise(media_h_estimada = mean(peso))
print(medias_estrato_opt)
## # A tibble: 4 × 2
##   dieta media_h_estimada
##   <fct>            <dbl>
## 1 1                 95.9
## 2 2                126. 
## 3 3                139. 
## 4 4                145.
  1. Estimacion de la media poblacional general
# Estimar la media poblacional general con los dos tipos de muestra (proporcional y optimo).
estim_prop <- left_join(medias_estrato_prop, info_estratos[, c("dieta", "W_h")], by = "dieta")
estim_opt <- left_join(medias_estrato_opt, info_estratos[, c("dieta", "W_h")], by = "dieta")

media_gen_prop <- sum(estim_prop$W_h * estim_prop$media_h_estimada)
media_gen_opt <- sum(estim_opt$W_h * estim_opt$media_h_estimada)

cat(paste("Media General Estimada (Proporcional):", round(media_gen_prop, 4)))
## Media General Estimada (Proporcional): 126.9688
cat(paste("\nMedia General Estimada (Óptima):", round(media_gen_opt, 4)))
## 
## Media General Estimada (Óptima): 121.0949