1 Introducción

Este documento presenta un análisis geoestadístico de la precipitación anual (mm) registrada en estaciones meteorológicas. El flujo de trabajo es:

  1. Carga y limpieza de los datos.
  2. Estadística descriptiva de la precipitación.
  3. Conversión a objeto espacial y proyección a coordenadas planas (UTM).
  4. Exploración visual (mapa estático e interactivo).
  5. Variograma experimental y ajuste automático del modelo.
  6. Interpolación mediante kriging ordinario automático.

2 Datos

2.1 Carga del archivo

El archivo Excel se indica en el parámetro archivo.

rmarkdown::render("Geoestadistica.Rmd", params = list(archivo = "ruta/a/mis_datos.xlsx"))
df <- read_excel(params$archivo)

2.2 Limpieza y renombrado de variables

df_clean <- df %>%
  rename(
    estacion      = 'ID Estación',
    nombre        = 'Nombre Estación',
    long          = 'Longitud (°)',
    lati          = 'Latitud (°)',
    eleva         = 'Elevación (m)',
    precipitacion = 'Precipitación Anual (mm)'
  )

df_clean

3 Estadística descriptiva

Se calculan el número de datos válidos, la media, la desviación estándar, el error estándar, el coeficiente de variación (CV) y el intervalo de confianza del 95 % para la media de precipitación.

datos_estaciones <- df_clean %>%
  summarise(
    n            = sum(!is.na(precipitacion)),            # Datos válidos
    media        = mean(precipitacion, na.rm = TRUE),     # Precipitación media
    desv_est     = sd(precipitacion, na.rm = TRUE),       # Desviación estándar
    error_est    = desv_est / sqrt(n),                    # Error estándar
    cv           = (desv_est / media) * 100,              # Coeficiente de variación
    t_critico    = qt(0.975, df = n - 1),                 # 95 % de confianza
    lim_inferior = media - (t_critico * error_est),
    lim_superior = media + (t_critico * error_est)
  ) %>%
  select(-t_critico)

datos_estaciones %>%
  kable(
    digits    = 2,
    col.names = c("N", "Media (mm)", "Desv. Est.", "Error Est.",
                  "CV (%)", "Lím. Inf.", "Lím. Sup."),
    align     = c("l", "c", "r", "r", "r", "r", "r"),
    caption   = "Tabla 1. Resumen estadístico de precipitación por estación meteorológica."
  )
Tabla 1. Resumen estadístico de precipitación por estación meteorológica.
N Media (mm) Desv. Est. Error Est. CV (%) Lím. Inf. Lím. Sup.
100 905.32 204.88 20.49 22.63 864.66 945.97

4 Datos espaciales

4.1 Objeto sf en coordenadas geográficas

Los datos se convierten a un objeto espacial con EPSG:4326 (WGS84 geográfico).

datos_sf <- st_as_sf(df_clean, coords = c("long", "lati"), crs = 4326)
datos_sf

4.2 Transformación a coordenadas planas (UTM)

La geoestadística requiere distancias euclidianas en metros, por lo que se proyecta a EPSG:32718 (WGS84 / UTM zona 18S, apropiada para Chile centro-sur).

datos_utm <- st_transform(datos_sf, crs = 32718)
datos_utm

5 Exploración visual

5.1 Mapa estático

Los puntos se colorean según la precipitación y su tamaño representa la elevación.

ggplot(data = datos_utm) +
  geom_sf(aes(color = precipitacion, size = eleva)) +
  geom_sf_text(aes(label = estacion), nudge_y = 1500, size = 2.5) +
  scale_color_viridis_c(option = "magma", name = "Precipitación (mm)") +
  coord_sf(crs = 32718, datum = sf::st_crs(32718)) +
  labs(
    title    = "Ubicación de Estaciones Meteorológicas",
    subtitle = "Representación Espacial para Geoestadística",
    x = "Este (m)",
    y = "Norte (m)"
  ) +
  theme_bw()

5.2 Mapa interactivo

mapview(datos_sf,
        zcol        = "precipitacion",
        cex         = "eleva",
        col.regions = RColorBrewer::brewer.pal(9, "YlOrRd"),
        map.types   = "OpenStreetMap")

Las estaciones corresponden a las regiones de Valparaíso y Metropolitana de Santiago, con algunas cercanas a la zona cordillerana de Chile.

6 Análisis variográfico

6.1 Conversión a formato Spatial

El paquete automap requiere objetos de clase Spatial (paquete sp).

datos_sp_utm <- as(datos_utm, "Spatial")

6.2 Variograma experimental

var_exp <- variogram(precipitacion ~ 1, data = datos_utm)
plot(var_exp, main = "Variograma Experimental de Precipitación (UTM)")

6.3 Ajuste automático del modelo de variograma

auto_var <- autofitVariogram(precipitacion ~ 1, datos_sp_utm)
auto_var$var_model
plot(auto_var)

7 Kriging automático

Se ejecuta el kriging ordinario con el modelo de variograma seleccionado automáticamente, usando los datos proyectados.

kriging_automatico <- autoKrige(precipitacion ~ 1, input_data = datos_sp_utm)
## [using ordinary kriging]
# Panel: predicción, varianza/error estándar y variograma ajustado
plot(kriging_automatico)

7.1 Predicciones como objeto sf

Las predicciones se extraen como un objeto espacial para poder exportarlas o volver a graficarlas.

kriging_sf <- st_as_sf(kriging_automatico$krige_output)
head(kriging_sf)

7.2 Comentario

A partir de la distribución espacial de las estaciones meteorológicas en las regiones de Valparaíso y Metropolitana, se evidencia un claro gradiente de precipitación condicionado por la topografía y el relieve de la superficie, manteniéndose los registros estrictamente dentro del territorio nacional. Esta representación cartográfica permite identificar patrones espaciales clave que varían desde los valles hasta los sectores precordilleranos, aportando información fundamental para el análisis geoestadístico de los datos pluviométricos.

8 Información de la sesión

sessionInfo()
## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 10 x64 (build 19045)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Spanish_Chile.utf8  LC_CTYPE=Spanish_Chile.utf8   
## [3] LC_MONETARY=Spanish_Chile.utf8 LC_NUMERIC=C                  
## [5] LC_TIME=Spanish_Chile.utf8    
## 
## time zone: America/Santiago
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] sp_2.2-4           mapview_2.11.4     knitr_1.51         RColorBrewer_1.1-3
##  [5] automap_1.1-20     terra_1.9-50       gstat_2.1-6        ggplot2_4.0.3     
##  [9] dplyr_1.2.1        sf_1.1-3           readxl_1.5.0      
## 
## loaded via a namespace (and not attached):
##  [1] gtable_0.3.6            raster_3.6-32           xfun_0.60              
##  [4] bslib_0.12.0            htmlwidgets_1.6.4       lattice_0.22-9         
##  [7] leaflet.providers_3.0.0 vctrs_0.7.3             tools_4.6.1            
## [10] crosstalk_1.2.2         generics_0.1.4          stats4_4.6.1           
## [13] parallel_4.6.1          tibble_3.3.1            proxy_0.4-29           
## [16] spacetime_1.3-4         xts_0.14.3              pkgconfig_2.0.3        
## [19] KernSmooth_2.23-26      satellite_1.0.6         S7_0.2.2               
## [22] uuid_1.2-2              leaflet_2.2.3           lifecycle_1.0.5        
## [25] compiler_4.6.1          farver_2.1.2            FNN_1.1.4.1            
## [28] textshaping_1.0.5       codetools_0.2-20        stars_0.7-3            
## [31] htmltools_0.5.9         class_7.3-23            sass_0.4.10            
## [34] yaml_2.3.12             pillar_1.11.1           jquerylib_0.1.4        
## [37] classInt_0.4-11         cachem_1.1.0            abind_1.4-8            
## [40] brew_1.0-10             tidyselect_1.2.1        digest_0.6.39          
## [43] labeling_0.4.3          fastmap_1.2.0           grid_4.6.1             
## [46] cli_3.6.6               magrittr_2.0.5          base64enc_0.1-6        
## [49] leafem_0.2.5            e1071_1.7-17            withr_3.0.3            
## [52] scales_1.4.0            rmarkdown_2.31          otel_0.2.0             
## [55] cellranger_1.1.0        png_0.1-9               zoo_1.9-1              
## [58] evaluate_1.0.5          viridisLite_0.4.3       rlang_1.3.0            
## [61] leafpop_0.1.0           Rcpp_1.1.2              glue_1.8.1             
## [64] DBI_1.3.0               svglite_2.2.2           rstudioapi_0.19.0      
## [67] reshape_0.8.10          jsonlite_2.0.0          R6_2.6.1               
## [70] plyr_1.8.9              systemfonts_1.3.2       intervals_0.15.5       
## [73] units_1.0-1