df <- data.frame(peso = ChickWeight\(weight, dieta = ChickWeight\)Diet)

Punto 2: Extraer muestra aleatoria simple sin reemplazo de tamaño 110

set.seed(123)
muestra_simple <- df[sample(nrow(df), 110, replace = FALSE), ]

Estimar media poblacional

media_muestra_simple <- mean(muestra_simple\(peso) media_poblacional <- mean(df\)peso)

cat(“Muestra Aleatoria Simple - Tamaño: 110”) cat(“Media de la muestra:”, round(media_muestra_simple, 2), “”) cat(“Media poblacional real:”, round(media_poblacional, 2), “”) cat(“Error de estimación:”, round(abs(media_muestra_simple - media_poblacional), 2), “”)

Punto 3: Muestreo estratificado por dieta

estratos <- table(df$dieta) cat(“Distribución de la población por estratos (dieta):”) print(estratos) cat(“”)

n_total <- 110

n_proporcional <- round((estratos / nrow(df)) * n_total)

cat(“Asignación proporcional:”) for(i in 1:4) { cat(“Dieta”, i, “:”, n_proporcional[i], ” observaciones“) } cat(”“)

muestras_proporcional <- list() set.seed(123)

for(i in 1:4) { estrato_data <- df[df$dieta == i, ] muestras_proporcional[[i]] <- estrato_data[sample(nrow(estrato_data), n_proporcional[i], replace = FALSE), ] }

Asignación óptima (Neyman)

desv_estandar <- tapply(df\(peso, df\)dieta, sd) tamanos_estratos <- tapply(df\(peso, df\)dieta, length)

cat(“Desviaciones estándar por estrato:”) print(round(desv_estandar, 2)) cat(“”)

producto_Ns <- tamanos_estratos * desv_estandar suma_productos <- sum(producto_Ns) n_optimo <- round((producto_Ns / suma_productos) * n_total)

diferencia <- n_total - sum(n_optimo) if(diferencia != 0) { n_optimo[which.max(desv_estandar)] <- n_optimo[which.max(desv_estandar)] + diferencia }

cat(“Asignación óptima:”) for(i in 1:4) { cat(“Dieta”, i, “:”, n_optimo[i], ” observaciones“) } cat(”“)

muestras_optimo <- list() set.seed(123)

for(i in 1:4) { estrato_data <- df[df$dieta == i, ] muestras_optimo[[i]] <- estrato_data[sample(nrow(estrato_data), n_optimo[i], replace = FALSE), ] }

Punto 4: Estimar medias poblacionales de los estratos

cat(“ESTIMACIÓN DE MEDIAS POR ESTRATO”) cat(“=================================”) medias_reales <- tapply(df\(peso, df\)dieta, mean)

medias_proporcional <- sapply(muestras_proporcional, function(x) mean(x\(peso)) medias_optimo <- sapply(muestras_optimo, function(x) mean(x\)peso))

for(i in 1:4) { cat(“Dieta”, i, “:”) cat(” Media real:“, round(medias_reales[i], 2),”“) cat(” Media proporcional:“, round(medias_proporcional[i], 2),” (Error:“, round(abs(medias_proporcional[i] - medias_reales[i]), 2),”)“) cat(” Media óptima:“, round(medias_optimo[i], 2),” (Error:“, round(abs(medias_optimo[i] - medias_reales[i]), 2),”)“) }

Punto 5: Estimar media poblacional general

cat(“ESTIMACIÓN DE MEDIA POBLACIONAL GENERAL”) cat(“=======================================”)

media_real_general <- mean(df$peso) media_proporcional_general <- sum(medias_proporcional * (tamanos_estratos / nrow(df)))

Media con asignación óptima (ponderada por tamaño del estrato)

media_optimo_general <- sum(medias_optimo * (tamanos_estratos / nrow(df)))

cat(“Media poblacional real:”, round(media_real_general, 2), “”) cat(“Media estimada (proporcional):”, round(media_proporcional_general, 2), ” (Error:“, round(abs(media_proporcional_general - media_real_general), 2),”)“) cat(”Media estimada (óptima):“, round(media_optimo_general, 2),” (Error:“, round(abs(media_optimo_general - media_real_general), 2),”)“) cat(”Media muestra simple:“, round(media_muestra_simple, 2),” (Error:“, round(abs(media_muestra_simple - media_real_general), 2),”)“)

Resumen comparativo

cat(“RESUMEN COMPARATIVO”) cat(“===================”) cat(“Método más preciso para estimar media general:”)

errores <- c( “Proporcional” = abs(media_proporcional_general - media_real_general), “Óptima” = abs(media_optimo_general - media_real_general), “Simple” = abs(media_muestra_simple - media_real_general) )

metodo_mejor <- names(errores)[which.min(errores)] cat(“->”, metodo_mejor, “con error de”, round(min(errores), 2), “”)