Conceptos básicos

Análisis espacial con R

Dr. Francisco Zambrano

Geoestadística

  • Se puede ver como un subconjunto de la estadística

  • Se preocupa del análisis e interpretación de datos geográficamente referenciados.

  • Es uno de los tres principales campos especializados en el análisis de datos espaciales.
    • Geostadistica
    • Poitn Pattern Analysis
    • Lattice Statistics

Geoestadística

Preguntas típicas de un análisis geoestadístico

  • ¿Cómo la variable varía en el espacio?

  • ¿Qué controla su variación?

  • ¿Dónde ubicar las muestras para describir la variación espacial?

  • ¿Cuántas muestras son necesarias para representar la variación espacial.

  • ¿Cuál es el valor de la variable en una nueva ubicación?

  • ¿Cuál es la incerteza de los valores estimados?

Geoestadística

La podemos definir como una producción analítica de mapas usando observaciones de campo, información explicativa en un software computacional que calcula los valores en las posiciones de interés.

Generalmente involucra:

  • diseño del plan de muestreo y el workflow computacional
  • toma de datos y análisis de laboratorio
  • estimación del modelo usando los datos de muestreo puntuales (calibración)
  • implementación del modelo (predicción)
  • evaluación de modelo usando datos de validación
  • producción final y distribución de los mapas con los valores estimados.

Variables ambientales

  • Son medidas cuantitativas o descriptivas de características ambientales.
  • Pueden pertenecer a diferentes dominios: biología, suelo, vegetación,climatológica, hidrológica, …
  • Son comunmente recolectadas por medio de mediciones de campo (con ayuda de remote sensing).
  • Las muestras luego son usadas para generar mapas que muestran su distribución en un área.
  • El muestreo es generalmente la parte más costosa.
    • Por lo que generalmente se toma un número limitado de muestras.
    • Con lo que se genera modelos que tienen una limitada calidad.

Variabilidad espacial: aspectos y fuentes

Modelo universal de variación

\[Z(s) = z^*(s)+\epsilon'(s)+\epsilon''\]

\(z^*(s)\) : parte determinística
\(\epsilon'(s)\) : componente espacial correlacionado
\(\epsilon''\) : error gausiano (incerteza)

Modelos de predicción espacial

  • En una situación ideal la variabilidad de una variable ambiental es determinada por una limitada cantidad de inputs/predictores que siguen una conocida ley física.

  • Si la ecuación física es conocida podemos predecir exactamente la variable objetivo/salida.

  • En la realidad la relación entre la variable y las condiciones ambientales es demasiado compleja que no la podemos modelar excatamente.

Modelos de predicción espacial

Notación

Variable objetivo

\(Z\) denotada como \(z(s_1),z(s_2),...,(zs_n)\)

Donde \(s_i = (x_i,y_i)\)

Dominio \(\mathbb{A}\)

\[Z = {Z(s),\forall s \in \mathbb{A}} \]

Modelos de predicción espacial

  • El dominio geográfico de interés es una matriz rectangular

  • Un arreglo de filas x columnas sobre el dominio de interés

\[z = {z(s_j),j=1,...,m}\]

\[s_j \in \mathbb{A}\]

Modelos de predicción espacial

  • Hay muchos métodos de predicción espacial.

  • En un principio es díficil saber cual utilizar y por qué.

Los podemos agrupar en:

  • Métodos determinísticos: parámetros determinados de forma empírica. No se hace estimación del error.
    • Polígonos de Thiessen, Inverso de la distancia, regresión en coordenadas, vecino más próximo, splines,…
  • Modelos estadísticos lineales: los parámetros se estiman de forma objetiva siguiendo la teoría de probabilidades.
    • Kriging, correlación ambiental (regresión),modelos bayesianos, modelos híbridos,
  • Sistemas expertos
    • Machine learning

Escala y distancia

  • El término escala es un poco confuso

    • gran escala -> mayor resolución
    • escala pequeña -> menor resolución
    • Pero es común que se entienda al revés.
  • ¿Por qué la escala/resolución importa?

    • Diferentes procesos tienen diferentes escalas a las que funcionan.
    • Procesos que operan en un gran extensión (ej, bosques) se pueden estudiar a resoluciones más gruesas.
    • Procesos que operana en una menor extensión (ej, árboles) se pueden estudiar a mayores resoluciones (ej, hoja).
    • Afecta nuestra estimación de longitud y tamaño.

Escala y distancia

Zonificación

  • Datos geográficos usualmente son agregados por zona.
  • Siempre queremos tener datos de alto nivel de detalle.
  • La realidad es que usalmente solo podemos obtener datos agregados.
  • Ejemplo: censo agropecuarios

Ilustremos con un ejemplo: simulación de 1000 hogares de los cuales sabemos su ingreso anual.

set.seed(0)
xy <- cbind(x=runif(1000, 0, 100), y=runif(1000, 0, 100))
income <- (runif(1000) * abs((xy[,1] - 50) * (xy[,2] - 50))) / 500

Escala y distancia

Zonificación

par(mfrow=c(1,3), las=1)
plot(sort(income), col=rev(terrain.colors(1000)), pch=20, cex=.75, ylab='income')
hist(income, main='', col=rev(terrain.colors(10)),  xlim=c(0,5), breaks=seq(0,5,0.5))
plot(xy, xlim=c(0,100), ylim=c(0,100), cex=income, col=rev(terrain.colors(50))[10*(income+1)])

Escala y distancia

Zonificación

Usando el índice de GINI

n <- length(income)
(G <- (2 * sum(sort(income) * 1:n)/sum(income) - (n + 1)) / n)
[1] 0.5814548

Escala y distancia

Zonificación

Ahora realicemos diferentes agregaciones

Escala y distancia

Zonificación

  • No es sorprendente ver que regiones de menor tamaño se acercan más al patrón real.
  • Pero si comparamos los histogramas nos damos cuenta que ninguno captura la distribución de ingresos de los datos originales.

Escala y distancia

Distancia

  • Es el concepto más fundamental en geografía.

  • Primera ley de la geografía

everything is related to everything else, but near things are more related than distant things - Waldo Tobler

  • La distancia generalmente se describen como una matriz de distancias

  • En la matriz de distancias tenemos la distancia entre todos los objetos de interés.

Escala y distancia

Distancia

Creemos una matriz de distancia

A <- c(-70.3, -33.1)
B <- c(-71.2, -32.9)
C <- c(-71.3, -33.4)
D <- c(-70.1, -33.5)
E <- c(-70.7, -33.2)
F <- c(-70.4, -32.5)
(pts <- rbind(A, B, C, D, E, F))
   [,1]  [,2]
A -70.3 -33.1
B -71.2 -32.9
C -71.3 -33.4
D -70.1 -33.5
E -70.7 -33.2
F -70.4 -32.5

Escala y distancia

Distancia

Grafiquemos

Escala y distancia

Distancia

(dis <- dist(pts))
          A         B         C         D         E
B 0.9219544                                        
C 1.0440307 0.5099020                              
D 0.4472136 1.2529964 1.2041595                    
E 0.4123106 0.5830952 0.6324555 0.6708204          
F 0.6082763 0.8944272 1.2727922 1.0440307 0.7615773

Podemos convertirla a una matriz

(D <- as.matrix(dis))
          A         B         C         D         E         F
A 0.0000000 0.9219544 1.0440307 0.4472136 0.4123106 0.6082763
B 0.9219544 0.0000000 0.5099020 1.2529964 0.5830952 0.8944272
C 1.0440307 0.5099020 0.0000000 1.2041595 0.6324555 1.2727922
D 0.4472136 1.2529964 1.2041595 0.0000000 0.6708204 1.0440307
E 0.4123106 0.5830952 0.6324555 0.6708204 0.0000000 0.7615773
F 0.6082763 0.8944272 1.2727922 1.0440307 0.7615773 0.0000000

Escala y distancia

Distancia con coordenas lat/lon

  • Si la distancia estuviera en coordenads geográfica el calculo de distancia sería incorrecto con dist.

  • Pero podemos usar {sf}

library(sf)
pts <- data.frame(x=pts[,1],y=pts[,2])
ptsSF <- st_as_sf(pts,coords = c('x','y'),crs=4326)
st_distance(ptsSF)
Units: [m]
         [,1]      [,2]      [,3]      [,4]     [,5]      [,6]
[1,]     0.00  86826.47  98792.67  48205.70 38863.54  67368.58
[2,] 86826.47      0.00  56371.60 122172.28 57310.42  87073.90
[3,] 98792.67  56371.60      0.00 111886.31 60033.55 130640.94
[4,] 48205.70 122172.28 111886.31      0.00 64951.28 114660.40
[5,] 38863.54  57310.42  60033.55  64951.28     0.00  82727.69
[6,] 67368.58  87073.90 130640.94 114660.40 82727.69      0.00

Influencia espacial

  • Un paso importante en estadistica espacial y modelado es obtener una métrica de la influencia espacial entre objetos geográficos.

  • Se puede expresar como función de adyacencia (póligonos)

  • En general es expresada como una matriz espacial de pesos

  • Esta influencia en realidad es muy compleja y no la podemos calcular.

  • Pero la podemos estimar de varias formas.

Influencia espacial

Matriz de pesos

  • Es comun utilizar el inverso de la distancia
W <- 1 / D
(round(W,4))
       A      B      C      D      E      F
A    Inf 1.0847 0.9578 2.2361 2.4254 1.6440
B 1.0847    Inf 1.9612 0.7981 1.7150 1.1180
C 0.9578 1.9612    Inf 0.8305 1.5811 0.7857
D 2.2361 0.7981 0.8305    Inf 1.4907 0.9578
E 2.4254 1.7150 1.5811 1.4907    Inf 1.3131
F 1.6440 1.1180 0.7857 0.9578 1.3131    Inf

Influencia espacial

Matriz de pesos

  • La matriz de “pesos espaciales” comunmente se normalizada por fila.
W[!is.finite(W)] <- NA
rowSums(W, na.rm=TRUE)
       A        B        C        D        E        F 
8.347893 6.676920 6.116255 6.313148 8.525257 5.818589 

Podemos hacerlo dividiendo por la suma total.

rtot <- rowSums(W, na.rm=TRUE)
W <- W / rtot
rowSums(W, na.rm=TRUE)
A B C D E F 
1 1 1 1 1 1 

Influencia espacial

ptsSF_utm <- st_transform(ptsSF,32719)
bb <- st_buffer(ptsSF_utm,5000) |> st_bbox()
r <- rast(xmin=bb[1],xmax=bb[3],ymin=bb[2],ymax=bb[4],res=10000)
xy <- xyFromCell(r,1:ncell(r)) |> 
  vect()

values(r) <- 1:ncell(r)
grid <- as.polygons(r)
plot(grid)
plot(vect(ptsSF_utm),col='red',add=TRUE)
plot(xy,col='blue',add = TRUE)