df <- data.frame(peso = ChickWeight\(weight, dieta = ChickWeight\)Diet)
set.seed(123)
muestra_simple <- df[sample(nrow(df), 110, replace = FALSE), ]
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), “”)
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), ] }
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), ] }
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),”)“) }
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_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),”)“)
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), “”)