Taller 4: Interpolación espacial con kriging en la Región de Coquimbo
Author
Victor Contreras, Cristian Aguirre y Christian Chacon
Published
October 16, 2023
Taller 4: Interpolación espacial con kriging en la Región de Coquimbo
1. Introducción
El siguiente laboratorio expone la comparación de dos métodos de interpolación espacial utilizando técnicas geostadísticas de kriging ordinario (OK) y regresión-kriging (RK), para determinar el comportamiento de temperaturas para los meses: enero, junio, octubre y diciembre en la Región de Coquimbo en el año 2023. Cabe señalar que las diferencias entre el OK y el RK, es que este ultimo es una técnica de interpolación espacial que combina una regresión lineal o múltiple de la variable dependiente en predictores y de los kriging de los residuos de predicción (Hengl et al, 2007).
2. Objetivos
Objetivos - Generar la interpolación espacial sobre los datos de temperatura para la Región de Coquimbo en los meses: enero, junio, octubre y diciembre, utilizando las técnicas geostadísticas de kriging ordinario y regresión-kriging.
Extraer las métricas de RMSE y R², utilizando la validación cruzada leave-one-out, con el propósito de establecer el mes donde se obtuvo la mejor predicción y performance de los valores de temperatura de la región.
3. Desarrollo
3.1. Preparación de datos
library(remotes) #paquete que trae función para instala un paquete desde githublibrary(tidyverse) #colección de paquetes para análisis de datos
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(sf) #manejo de datos vectoriales
Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
library(terra) #manejo de datos raster y vectoriales
terra 1.7.78
Adjuntando el paquete: 'terra'
The following object is masked from 'package:tidyr':
extract
library(tmap) # creación de mapas temáticos
Breaking News: tmap 3.x is retiring. Please test v4, e.g. with
remotes::install_github('r-tmap/tmap')
library(geodata) # acceso a descarga de diferentes datos raster y vectorialeslibrary(rstac) # acceder a spatial temporal assets catalogs (STAC)library(psych) # para estadistica
Adjuntando el paquete: 'psych'
The following objects are masked from 'package:terra':
describe, distance, rescale
The following objects are masked from 'package:ggplot2':
%+%, alpha
library(gt) #pquete para la creación de tablaslibrary(dplyr) #para manejo de dataframelibrary(stars) #para tratamiento de matrices espaciotemporales
Cargando paquete requerido: abind
library(abind) #aplica combinación de matrices multidimiensionaleslibrary(gstat) # Modelado, prediccion y simulación geoestadisticalibrary(spdep) #dependencia espacial: esquemas de ponderación, estadisticas
Cargando paquete requerido: spData
To access larger datasets in this package, install the spDataLarge
package with: `install.packages('spDataLarge',
repos='https://nowosad.github.io/drat/', type='source')`
library(sp) #clases y metodos para datos espacialeslibrary(units) # unidades de medida para vectores R
udunits database from C:/Users/criaguirre/AppData/Local/Programs/R/R-4.4.1/library/units/share/udunits/udunits2.xml
Adjuntando el paquete: 'patchwork'
The following object is masked from 'package:raster':
area
The following object is masked from 'package:terra':
area
A continuación, se presenta una comparación de las métricas por mes del Ordinary Kriging
metric_all_ok |>pivot_longer(-mes) |>ggplot(aes(mes, value, fill = mes)) +geom_col(alpha = .7) +geom_text(aes(label =round(value, 2)), # Etiquetas con los valores redondeados a 2 decimalesposition =position_stack(vjust =0.5), # Coloca el texto en el centro de la barracolor ="black", # Color del textosize =3.5) +# Tamaño del textocoord_flip() +facet_grid(. ~ name, scales ='free') +scale_fill_manual(name ="Meses de Predicción", labels =c("ene_ok"="Enero", "jun_ok"="Junio", "oct_ok"="Octubre", "dic_ok"="Diciembre"), values =c("ene_ok"="blue", "jun_ok"="green", "oct_ok"="red", "dic_ok"="purple") ) +labs(title ="Métricas de interpolación con Ordinary Kriging", x ="Meses de Modelamiento", y ="Valor de Métrica" ) +theme_bw() +theme(plot.title =element_text(hjust =0.5, size =14, face ="bold"), legend.position ="right" )
Según el gráfico, octubre presenta el valor de R² más alto, lo que significa que el modelo de kriging logra explicar el 51% de la variabilidad de la temperatura en ese mes. Esto indica un ajuste relativamente bueno en comparación con los demás meses. Le sigue diciembre, con un R² de 0.44, lo que sugiere que el modelo también tiene un buen desempeño explicando la variabilidad de la temperatura en este periodo. En cambio, junio y enero muestran valores más bajos, con el modelo explicando alrededor del 30% de la variabilidad de la temperatura en esos meses. Esto indica que el modelo tiene más dificultades para capturar la variabilidad de la temperatura en junio y enero, lo cual podría deberse a una mayor complejidad en los patrones espaciales o a una variabilidad alta a corta distancia, probablemente causada por cambios abruptos en la geografía.
En cuanto a los valores de RMSE, diciembre registra el valor más bajo, de 2.1, lo que sugiere que las predicciones del modelo son más cercanas a los valores observados, indicando una mayor precisión en la interpolación de las temperaturas para este mes. Octubre y junio tienen valores de RMSE similares (2.9 y 2.98 respectivamente), lo que refleja una precisión moderada en ambos meses. Por otro lado, enero presenta el mayor RMSE, de 3.25, lo que indica que las predicciones del modelo para este mes tienen un error promedio más alto. Esto sugiere que enero es un mes más difícil de modelar debido a la complejidad de la variabilidad espacial de las temperaturas.
3.3. Regresion Kriging
Interpolación con Regresion Kriging se consideran los variograma de los residuos obtenido con el modelamiento de regresión lineal del taller 2 y 3.
A continuación, se genera la preduccióon con Regresion Kriging:
Se genera un gráfico para las métricas del Regresion Kriging
metric_all_rk |>pivot_longer(-mes) |>ggplot(aes(mes, value, fill = mes)) +geom_col(alpha = .7) +geom_text(aes(label =round(value, 2)), # Etiquetas con los valores redondeados a 2 decimalesposition =position_stack(vjust =0.5), # Coloca el texto en el centro de la barracolor ="black", # Color del textosize =3.5) +# Tamaño del textocoord_flip() +facet_grid(. ~ name, scales ='free') +scale_fill_manual(name ="Meses de Predicción", labels =c("ene_rk"="Enero", "jun_rk"="Junio", "oct_rk"="Octubre", "dic_rk"="Diciembre"), values =c("ene_rk"="blue", "jun_rk"="green", "oct_rk"="red", "dic_rk"="purple") ) +labs(title ="Métricas de interpolación con Regresion Kriging", x ="Meses de Modelamiento", y ="Valor de Métrica" ) +theme_bw() +theme(plot.title =element_text(hjust =0.5, size =14, face ="bold"), legend.position ="right" )
Según el gráfico, junio destaca con el valor de R² más alto (0.8), lo que significa que el modelo de regresión kriging puede explicar el 80% de la variabilidad de la temperatura en este mes. Esto sugiere que el modelo ofrece un ajuste muy preciso para predecir la temperatura durante este periodo. Le sigue octubre, con un R² de 0.74, lo que también refleja un buen desempeño del modelo, explicando la mayor parte de la variabilidad de la temperatura en ese mes. Por otro lado, enero y diciembre tienen valores de R² más bajos, de 0.63 y 0.55 respectivamente, lo que indica que, aunque el ajuste es aceptable, el modelo tiene una menor capacidad para explicar la variabilidad de la temperatura en estos meses en comparación con junio y octubre.
En cuanto al error de las predicciones, junio también presenta el valor de RMSE más bajo, con 1.58, lo que significa que las predicciones del modelo para este mes son muy precisas, con un margen de error pequeño. Esto coincide con su alto valor de R². Diciembre le sigue con un RMSE de 1.91, lo que sugiere buenas predicciones, aunque no tan precisas como las de junio. Octubre, con un RMSE de 2.15, muestra un error un poco mayor, aunque sigue siendo razonable. Finalmente, enero tiene el valor de RMSE más alto de 2.36, lo que indica que las predicciones del modelo para este mes son menos precisas y tienen un mayor margen de error en comparación con los otros meses.
Para comparar las métricas de ambos Kriging, se confecciona un solo gráfico.
metric_all |>pivot_longer(-mes) |>ggplot(aes(mes, value, fill = mes)) +geom_col(alpha = .7) +geom_text(aes(label =round(value, 2)), # Etiquetas con los valores redondeados a 2 decimalesposition =position_stack(vjust =0.5), # Coloca el texto en el centro de la barracolor ="black", # Color del textosize =3.5) +# Tamaño del textocoord_flip() +facet_grid(. ~ name, scales ='free') +scale_fill_manual(name ="Meses de Predicción", labels =c("ene_rk"="Enero RK", "jun_rk"="Junio RK", "oct_rk"="Octubre RK", "dic_rk"="Diciembre RK", "ene_ok"="Enero OK", "jun_ok"="Junio OK", "oct_ok"="Octubre OK", "dic_ok"="Diciembre OK"), values =c("ene_rk"="blue", "jun_rk"="green", "oct_rk"="red", "dic_rk"="purple", "ene_ok"="blue", "jun_ok"="green", "oct_ok"="red", "dic_ok"="purple") ) +labs(title ="Métricas de interpolación con Kriging", x ="Meses de Modelamiento", y ="Valor de Métrica" ) +theme_bw() +theme(plot.title =element_text(hjust =0.5, size =14, face ="bold"), legend.position ="right" )
De acuerdo con este gráfico, se observan fenómenos interesantes. Los meses que inicialmente mostraron un rendimiento regular con el método de Ordinary Kriging (OK) obtuvieron un rendimiento notablemente mejor al utilizar Regresion Kriging (RK). De hecho, en algunos casos, el desempeño de RK superó incluso al de los meses que inicialmente tenían las mejores métricas con OK. A continuación, se presenta una descripción general de estos resultados.
Enero: En enero, el R² mejora de 0.3 con OK a 0.63 con RK, mostrando una mejora significativa, aunque no tan marcada como en otros meses. El RMSE también se reduce considerablemente, pasando de 3.25 con OK a 2.36 con RK. Esto sugiere que la variabilidad de la temperatura en enero podría estar influenciada por factores adicionales, como la altitud o condiciones climáticas específicas, que RK es capaz de captar de forma más efectiva.
Junio: El método RK muestra un R² de 0.80, mucho más alto que el 0.33 obtenido con OK (kriging ordinario). Esto significa que RK es capaz de explicar el 80% de la variabilidad de la temperatura, mientras que OK solo captura un 33%. Además, el RMSE disminuye considerablemente al usar RK (1.58 frente a 2.98 con OK), lo que indica una reducción significativa en el margen de error de las predicciones. Esto sugiere que las variables adicionales utilizadas por RK, como covariables, aportan información útil que mejora la precisión del modelo, permitiendo una mejor representación de la variabilidad espacial de la temperatura en junio.
Octubre: En octubre, el R² mejora de 0.51 con OK a 0.74 con RK, lo que muestra un ajuste mucho mejor cuando se usan covariables. El RMSE baja de 2.9 con OK a 2.15 con RK, lo que significa que las predicciones se vuelven más precisas. Este aumento en el rendimiento de RK sugiere que en octubre hay factores adicionales, como la topografía o la vegetación, que son mejor capturados cuando se incluyen como variables explicativas, algo que OK no puede hacer por sí solo.
Diciembre: En diciembre, el R² pasa de 0.44 con OK a 0.55 con RK, lo que indica una mejor capacidad del modelo para explicar la variabilidad de la temperatura. El RMSE disminuye de 2.1 con OK a 1.91 con RK, lo que refleja una mayor precisión en las predicciones. Aunque la mejora no es tan notable como en otros meses, RK sigue superando a OK, probablemente gracias a la inclusión de covariables que aportan información adicional sobre la distribución de la temperatura.
En general, RK tiene una mejoría notable tanto en el ajuste del modelo como en la precisión de éste, probablemente ligado a la inclusión de covariables que explican de manera más efectiva la variabilidad de la temperatura.
3.4. Mapas comparativos
A continuación, se generan mapas para comparar la superficie generada por ambos modelos y tambien la varianza de los valores por mes.
# Extraer las capas de predicción y varianza#Predicciones con Ordinary Krigingpred_ok_ene <-subset(temp_ok_ene, "var1.pred_var1.pred")pred_ok_jun <-subset(temp_ok_jun, "var1.pred_var1.pred")pred_ok_oct <-subset(temp_ok_oct, "var1.pred_var1.pred")pred_ok_dic <-subset(temp_ok_dic, "var1.pred_var1.pred")#Predicciones con Regresion Krigingpred_rk_ene <-subset(temp_rk_ene, "var1.pred_var1.pred")pred_rk_jun <-subset(temp_rk_jun, "var1.pred_var1.pred")pred_rk_oct <-subset(temp_rk_oct, "var1.pred_var1.pred")pred_rk_dic <-subset(temp_rk_dic, "var1.pred_var1.pred")#Varianza con Ordinary Krigingvar_ok_ene <-subset(temp_ok_ene, "var1.var_var1.var")var_ok_jun <-subset(temp_ok_jun, "var1.var_var1.var")var_ok_oct <-subset(temp_ok_oct, "var1.var_var1.var")var_ok_dic <-subset(temp_ok_dic, "var1.var_var1.var")#Varianza con Regresion Krigingvar_rk_ene <-subset(temp_rk_ene, "var1.var_var1.var")var_rk_jun <-subset(temp_rk_jun, "var1.var_var1.var")var_rk_oct <-subset(temp_rk_oct, "var1.var_var1.var")var_rk_dic <-subset(temp_rk_dic, "var1.var_var1.var")
Warning in CPL_crs_from_input(x): GDAL Message 1: +init=epsg:XXXX syntax is
deprecated. It might return a CRS with a non-EPSG compliant axis order.
En enero, el método OK produce una superficie de temperatura más suave y uniforme, capturando principalmente la variación de temperaturas de este a oeste y una mayor continuidad de norte a sur. Las zonas costeras registran temperaturas más templadas, cercanas a los 15 °C, mientras que los valles centrales tienen temperaturas por encima de los 20 °C, y la cordillera principal presenta temperaturas más frías, entre 0 y 5 °C. Sin embargo, este método presenta un alto RMSE y solo logra explicar el 30% de la variabilidad de la temperatura.
Por otro lado, el uso de regresión kriging (RK) muestra que la distribución de la temperatura está más vinculada a las condiciones geográficas. Al incorporar covariables topográficas, el modelo se ajusta mejor, aumentando la capacidad de explicar la variabilidad de la temperatura al 63% y reduciendo el RMSE. Además, el RK logra capturar temperaturas mínimas de hasta -5 °C, por lo que el modelo sugiere a medida que la altitud aumenta, la temperatura disminuye; sin embargo, es importante señalar que en esas zonas de mayor altitud no hay estaciones de medición disponibles, por lo que esto será discutido en la siguiente sección.
Como era de esperarse, las zonas de menor varianza coinciden con las áreas donde se dispone de datos. Sin embargo, se observan algunas situaciones particulares. En el caso de OK, la varianza aumenta significativamente en áreas donde no hay datos, alcanzando un máximo de 16, especialmente en la zona norte y en una parte del sureste. Por otro lado, el método RK no presenta este mismo patrón. La mayor varianza se concentra en las áreas de mayor altitud, como la cordillera principal. Sin embargo, en las zonas sin datos (norte y sureste), la varianza es baja. Esto podría deberse a que el modelo RK logra hacer predicciones más precisas en áreas con características similares a las de los puntos de observación. En cambio, en la alta montaña, donde hay pocas estaciones de medición, el modelo podría estar sobreestimando la temperatura debido a la falta de datos suficientes.
Tanto con OK como con RK, se observa una superficie con temperaturas más bajas, típica de una estación fría, con valles centrales más cálidos y sectores de alta montaña más fríos. Sin embargo, el método OK presenta un R² bajo y un RMSE relativamente alto, lo que indica un ajuste menos preciso. En contraste, el RK muestra un mejor rendimiento, con un RMSE más bajo y un R² que alcanza el 80%, lo que significa que el modelo explica de manera más precisa la variabilidad de la temperatura en esta estación. Al igual que en enero, el RK predice temperaturas muy bajas en las cumbres de las montañas, con valores entre -5 y 0 °C.
Aunque octubre es una estación más cálida debido a la llegada de la primavera, se observan mayores contrastes de temperatura. En la costa, las temperaturas son templadas, entre 5 y 10 °C; en los valles centrales, oscilan entre 10 y 15 °C; y en las zonas de alta montaña, descienden por debajo de 0 °C. Sin embargo, el modelo RK predice mínimas de hasta -10 °C en estas áreas. A pesar de estas diferencias, ambos modelos muestran un muy buen rendimiento en términos de las métricas.
A diferencia de los meses anteriores, el modelo RK presenta un mayor aumento en la varianza de los datos predichos, con una distribución similar a la observada en el modelo OK, concentrándose principalmente en el norte y sureste. Además, la alta montaña muestra una mayor variabilidad, lo que podría explicar la tendencia del modelo a sobreestimar las temperaturas bajas en esta zona. También se observa un leve aumento de la varianza en el área costera, entre las latitudes 30.5° y 31.5°, probablemente debido a la escasez de estaciones de medición en ese sector.
En este mes, ambos modelos mostraron métricas similares y una distribución de la temperatura bastante parecida, especialmente en cuanto al rango de temperaturas. Ambos ofrecen un RMSE relativamente bajo, lo que indica una buena precisión en las predicciones. Sin embargo, el R² se encuentra entre el 45% y el 55%, lo que sugiere que el modelo solo logra explicar parcialmente la variabilidad de la temperatura.
La distribución de la varianza es similar a lo de octubre, y al igual que los otros meses se relacionan ya sea por falta de puntos de observación como por sobre estimación por topografía.
En general, los análisis revelan que la distribución de la temperatura está fuertemente influenciada por la geografía de la región, con diferencias marcadas entre las temperaturas costeras, los valles centrales y las zonas montañosas, reflejando la importancia de las condiciones locales en la variabilidad térmica.
4. Discusión y conclusión.
La variabilidad en los valores de R² y RMSE entre los distintos meses sugiere que la precisión del modelo de Ordinary Kriging (OK) varía dependiendo de la estacionalidad. Por ejemplo, los meses de octubre y diciembre presentan un desempeño más sólido, con valores de R² más altos y un RMSE más bajo, lo cual indica una mejor capacidad de predicción de la temperatura. Esto podría ser una señal de que, durante estos meses, la distribución espacial de la temperatura sigue un patrón más estable y definido. En contraste, enero y junio muestran un desempeño menos favorable con valores deR² más bajos y un RMSE más alto, lo cual sugiere que la interpolación enfrenta mayores desafíos en estos meses. Esto podría estar relacionado con patrones de temperatura más complejos, la presencia de variaciones abruptas o valores atípicos, y la alta variabilidad espacial de la temperatura, lo que dificulta la capacidad del modelo para ajustarse a los datos. Estos resultados enfatizan la importancia de considerar la estacionalidad y la distribución espacial de las temperaturas en la evaluación de la precisión de los modelos de interpolación.
En cuanto al rendimiento de predicción, el Regresión Kriging (RK) mostró un mejor desempeño global en comparación con OK, con una mayor capacidad explicativa y menor error de predicción, especialmente durante los meses de junio y octubre. Durante estos meses, el modelo alcanzó un R² cercano al 80%, lo cual indica una alta capacidad para capturar la variabilidad espacial de la temperatura. Este buen desempeño puede estar relacionado con patrones de temperatura más estables o con una relación más fuerte entre las variables auxiliares utilizadas y la variabilidad espacial de la temperatura. Sin embargo, en meses como enero y diciembre, aunque el modelo de RK mejora respecto a OK, los valores de R²y RMSE son menores, lo que sugiere una mayor variabilidad en las condiciones de temperatura o la presencia de valores atípicos. Aun así, las predicciones obtenidas siguen siendo útiles para capturar las tendencias generales. Esto refuerza la importancia de considerar la estacionalidad y las características geográficas al aplicar técnicas de interpolación.
La comparación entre los modelos de OK y RK muestra claramente que RK supera a OK en todos los meses. La mejora se refleja en el aumento del R² y la reducción del RMSE, lo cual indica que el modelo de RK es más preciso y tiene una mayor capacidad para explicar la variabilidad de la temperatura. Esta mejora se debe a que RK incorpora variables adicionales (como la altitud, la distancia a la costa, y otros factores geográficos) que permiten capturar mejor la complejidad espacial de la temperatura, en lugar de depender solo de la estructura espacial observada en los datos, como es el caso de OK. En meses como junio y octubre, la mejora es especialmente notable, sugiriendo que las variables auxiliares utilizadas en RK están fuertemente correlacionadas con la variabilidad de la temperatura. Por otro lado, la baja performance de OK en estos meses podría indicar que la estructura espacial de la temperatura por sí sola no es suficiente para explicar su distribución. Esto evidencia la importancia de seleccionar un método de interpolación adecuado según la disponibilidad de datos adicionales y la complejidad de la variabilidad espacial del fenómeno.
Con respecto a la predicción de la temperatra, en general los mapas muestran patrones geográficos esperados: las áreas costeras tienden a tener temperaturas más templadas y una continuidad térmica mayor, mientras que las zonas de alta montaña presentan variaciones más pronunciadas y temperaturas más bajas. En los modelos RK, las temperaturas mínimas en zonas montañosas pueden alcanzar valores tan bajos como -10 °C, reflejando la capacidad del modelo para captar variaciones espaciales más sutiles gracias a las variables auxiliares. Sin embargo, la falta de estaciones de medición en ciertas áreas, como el norte y sureste de la región, introduce mayores incertidumbres en las predicciones de ambos modelos, especialmente en áreas de montaña. Esto puede llevar a una sobreestimación de las temperaturas bajas en zonas de alta altitud.
En términos de precisión, RK muestra un mejor rendimiento, especialmente en meses fríos como junio, donde el R² alcanzó hasta un 80%, indicando una capacidad superior para capturar la variabilidad espacial de la temperatura. Sin embargo, ambos métodos enfrentan desafíos en áreas con una baja densidad de estaciones de medición, lo que sugiere la necesidad de mejorar la cobertura de datos en estas regiones para obtener predicciones más fiables.
En conclusión, la comparación entre OK y RK muestra que la inclusión de variables auxiliares en RK mejora significativamente la precisión de las predicciones de temperatura. Mientras que OK es útil para captar patrones generales en contextos con pocos datos adicionales, RK se adapta mejor a la complejidad de la variabilidad espacial, especialmente en regiones con cambios topográficos significativos. La elección del método depende de la disponibilidad de datos y del nivel de precisión necesario.
Además, en este caso los métodos geoestadísticos (OK y RK) superan a los determinísticos en la precisión de las predicciones segun los resultados en los talleres anteriores, probablemente debido a la incorporación de covariables topográficas y variogramas, lo que permite captar la varianza en función de la distancia y mejorar el ajuste de los modelos.
5. Referencias
Hengl, T., Heuvelink, G y Rossiter, D. 2007. About regresssion-kriging: From equations to case studies. Computers & Geosciences.