2.5 Análisis exploratorio de datos espaciales
Como se comentó en la Sección 1.4, el primer paso para estimar las componentes del modelo, la tendencia \(\mu(\mathbf{s})\) y el semivariograma \(\gamma(\mathbf{h})\), es realizar un análisis exploratorio de los datos.
Normalmente comenzaremos por un análisis descriptivo de la respuesta. Sería deseable que su distribución fuese aproximadamente simétrica (de forma que los métodos basados en mínimos cuadrados sean adecuados). Si además la distribución es aproximadamente normal (después de eliminar la tendencia) tendría sentido emplear métodos basados en máxima verosimilitud (Sección 3.3.3) y los predictores kriging serían los más eficientes (Sección 4.5). Si su distribución es muy asimétrica se puede pensar en transformarla como punto de partida (aunque podría cambiarse posteriormente dependiendo del modelo final para la tendencia).
load("datos/aquifer.RData")
str(aquifer)
## 'data.frame': 85 obs. of 3 variables:
## $ lon : num 42.78 -27.4 -1.16 -18.62 96.47 ...
## $ lat : num 127.6 90.8 84.9 76.5 64.6 ...
## $ head: num 1464 2553 2158 2455 1756 ...
library(sf)
<- st_as_sf(aquifer, coords = c("lon", "lat"), agr = "constant")
aquifer_sf <- aquifer_sf$head/100
z summary(z)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.24 15.48 17.97 20.02 25.40 35.71
hist(z, xlab = "piezometric-head", main = "", freq = FALSE)
lines(density(z), col = 'blue')
En un segundo paso se podría tener en cuenta las coordenadas espaciales. Por ejemplo, podríamos generar un gráfico de dispersión para ver si se observa algún patrón claro (lo que nos haría sospechar que la tendencia no es constante).
plot(aquifer_sf, pch = 20, cex = 3, breaks = "quantile", nbreaks = 4)
Gráficos de dispersión de la respuesta frente a las coordenadas nos pueden ayudar a determinar si hay una tendencia (al estilo de las funciones geoR::plot.geodata()
o npsp::scattersplot()
):
<- st_coordinates(aquifer_sf)
coord <- par(mfrow = c(1, 2), omd = c(0.05, 0.95, 0.01, 0.95))
old.par plot(coord[, 1], z, xlab = "x", ylab = "z")
lines(lowess(coord[, 1], z), lty = 2, lwd = 2, col = 'blue')
plot(coord[, 2], z, xlab = "y", ylab = "z")
lines(lowess(coord[, 2], z), lty = 2, lwd = 2, col = 'blue')
par(old.par)
En este caso concreto parece que una tendencia lineal es adecuada.
Ejercicio 2.3 (Análisis exploratorio de la tendencia)
Realizar un análisis exploratorio del conjunto de datos s100
del paquete geoR
(que contiene una simulación de un proceso espacial estacionario, sin tendencia;
ver Sección 3.1).
Ejercicio 2.4 (Análisis exploratorio con variables explicativas)
Realizar un análisis exploratorio del conjunto de datos meuse_sf
(almacenado en
el archivo st_meuse.RData; ver Figura 2.1) considerando como
respuesta la concentración de zinc y como variables explicativas, además de las
coordenadas espaciales, las variables que comparte con la rejilla meuse_grid
(y que se podrían emplear en la predicción kriging; Capítulo 4).
Realizar también un análisis exploratorio multivariante, considerando la respuesta y el resto de variables explicativas (que podrían considerarse realizaciones de otros procesos espaciales y emplearlas para predicción multivariante, cokriging; Capítulo 5).
Para el análisis exploratorio de la dependencia se suelen emplear las semivarianzas muestrales o los estimadores experimentales del variograma, como se describe en la Sección 3.1.