Diseño de experimentos

#’ — #’ title: “Análisis Espacial y Estadístico de Datos Sintéticos” #’ author: “Nikol” #’ date: “2026-02-11” #’ output: html_document #’ —

1. Configuración inicial y generación de datos

set.seed(123) library(ggplot2)

Crear la rejilla de coordenadas

xy <- expand.grid(x = seq(0, 77, 7), y = seq(0, 99, 9))

Generar datos aleatorios basados en una distribución normal

datos_val <- rnorm(n = 144, mean = 80, sd = 5)

Crear el Data Frame

df <- data.frame( x = xy\(x, y = xy\)y, valor = datos_val )

2. Cálculo de Medidas de Tendencia Central

Nota: La moda en datos continuos suele requerir redondear o usar una función específica

get_moda <- function(v) { uniqv <- unique(v) uniqv[which.max(tabulate(match(v, uniqv)))] }

media <- mean(df\(valor) mediana <- median(df\)valor) moda <- get_moda(round(df$valor, 1)) # Redondeamos a 1 decimal para hallar una moda útil

Imprimir resultados en consola

cat(“Resumen Estadístico:”, “Media:”, media, “”, “Mediana:”, mediana, “”, “Moda (redondeada):”, moda)

3. Visualización de Datos

ggplot(df, aes(x = x, y = y, fill = valor)) + geom_tile(color = “white”) + scale_fill_gradient(low = “#e5f5e0”, high = “#006d2c”) + labs( title = “Mapa de Calor de Intensidad”, subtitle = paste(“Media:”, round(media, 2), “| Mediana:”, round(mediana, 2)), x = “Coordenada X”, y = “Coordenada Y”, fill = “Escala” ) + theme_minimal() # 1. Selección de la muestra (tomaremos 20 puntos al azar) n_muestra <- 20 df_muestra <- df[sample(nrow(df), n_muestra), ]

2. Cálculo de la media de la muestra

media_muestra <- mean(df_muestra$valor)

Imprimir resultado en consola

cat(“La media de los puntos muestreados es:”, media_muestra)

3. Visualización con la rejilla y los puntos de muestreo

ggplot(df, aes(x = x, y = y)) + # Capa de la rejilla (fondo) geom_tile(aes(fill = valor), color = “white”, alpha = 0.8) + scale_fill_gradient(low = “#e5f5e0”, high = “#006d2c”) +

# Capa de los puntos de muestreo (encima) geom_point(data = df_muestra, aes(x = x, y = y), color = “red”, size = 3, shape = 19) +

# Etiquetas y títulos labs( title = “Muestreo Aleatorio sobre Grilla”, subtitle = paste(“Puntos rojos (n =”, n_muestra, “) | Media muestra:”, round(media_muestra, 2)), x = “Coordenada X”, y = “Coordenada Y”, fill = “Valor Original” ) + theme_minimal() # 1. Preparación de los datos (Media Poblacional vs Muestral) media_poblacional <- mean(df\(valor) media_muestral <- mean(df_muestra\)valor) diferencia <- media_muestral - media_poblacional

2. Prueba Estadística (t-test)

Comparamos si la muestra es representativa del valor teórico (80)

prueba_t <- t.test(df_muestra$valor, mu = media_poblacional)

3. Creación de una tabla comparativa para el reporte

comparacion_df <- data.frame( Metrica = c(“Media Poblacional (N=144)”, “Media Muestral (n=20)”, “Diferencia”), Valor = c(media_poblacional, media_muestral, diferencia) )

print(comparacion_df)

4. Visualización de la comparación

ggplot(df, aes(x = valor)) + # Distribución de todos los datos geom_density(fill = “#006d2c”, alpha = 0.3) + # Línea de media poblacional geom_vline(aes(xintercept = media_poblacional, color = “Poblacional”), linetype = “dashed”, size = 1) + # Línea de media muestral geom_vline(aes(xintercept = media_muestral, color = “Muestra”), linetype = “solid”, size = 1) + scale_color_manual(name = “Referencias”, values = c(“Poblacional” = “black”, “Muestra” = “red”)) + labs( title = “Comparación de Distribución y Medias”, subtitle = paste(“P-valor de la prueba t:”, round(prueba_t$p.value, 4)), x = “Valor de los Datos”, y = “Densidad” ) + theme_minimal() # 1. Selección de una nueva muestra de 10 puntos n_muestra_10 <- 10 df_muestra_10 <- df[sample(nrow(df), n_muestra_10), ]

2. Cálculo de la media de esta nueva muestra

media_10 <- mean(df_muestra_10$valor)

3. Comparación rápida en consola

cat(“— Comparación de Medias —”, “Media Poblacional (144 pts):”, mean(df\(valor), "\n", "Media Muestra (10 pts): ", media_10, "\n", "Diferencia: ", media_10 - mean(df\)valor))

4. Visualización de la nueva muestra en la grilla

ggplot(df, aes(x = x, y = y)) + geom_tile(aes(fill = valor), color = “white”) + scale_fill_gradient(low = “#e5f5e0”, high = “#006d2c”) + # Resaltamos los 10 puntos seleccionados geom_point(data = df_muestra_10, aes(x = x, y = y), color = “red”, size = 4, shape = 18) + labs( title = “Muestreo Reducido (n = 10)”, subtitle = paste(“Media de la muestra de 10 puntos:”, round(media_10, 2)), x = “Coordenada X”, y = “Coordenada Y”, fill = “Valor” ) + theme_minimal()