#Análisis Geoestadístico del Plomo en el Valle del Meuse
###El siguiente flujo de trabajo implementa un análisis exploratorio y geoestadístico de concentraciones de plomo (Pb) en el valle del río Meuse. Se emplean objetos espaciales tipo sf, análisis variográfico y técnicas básicas de estadística espacial descriptiva.
##1. Importación y Preparación de Datos Espaciales
setwd("C:/Users/vicen/Downloads/RMarkDown")
library(gstat)
library(tidyverse)
## ── 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 4.0.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── 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)
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(terra)
## terra 1.8.42
##
## Adjuntando el paquete: 'terra'
##
## The following object is masked from 'package:tidyr':
##
## extract
meuse <- st_read("meuse.shp")
## Reading layer `meuse' from data source
## `C:\Users\vicen\Downloads\RMarkDown\meuse.shp' using driver `ESRI Shapefile'
## Simple feature collection with 1 feature and 1 field
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 178440 ymin: 329600 xmax: 181560 ymax: 333760
## Projected CRS: Double_Stereographic
st_crs(meuse)
## Coordinate Reference System:
## User input: Double_Stereographic
## wkt:
## PROJCRS["Double_Stereographic",
## BASEGEOGCRS["GCS_Bessel 1841",
## DATUM["unknown",
## ELLIPSOID["bessel",6377397.155,299.1528128,
## LENGTHUNIT["metre",1,
## ID["EPSG",9001]]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["Degree",0.0174532925199433]]],
## CONVERSION["unnamed",
## METHOD["Oblique Stereographic",
## ID["EPSG",9809]],
## PARAMETER["Latitude of natural origin",52.1561605555556,
## ANGLEUNIT["Degree",0.0174532925199433],
## ID["EPSG",8801]],
## PARAMETER["Longitude of natural origin",5.38763888888889,
## ANGLEUNIT["Degree",0.0174532925199433],
## ID["EPSG",8802]],
## PARAMETER["Scale factor at natural origin",0.9999079,
## SCALEUNIT["unity",1],
## ID["EPSG",8805]],
## PARAMETER["False easting",155000,
## LENGTHUNIT["metre",1],
## ID["EPSG",8806]],
## PARAMETER["False northing",463000,
## LENGTHUNIT["metre",1],
## ID["EPSG",8807]]],
## CS[Cartesian,2],
## AXIS["(E)",east,
## ORDER[1],
## LENGTHUNIT["metre",1,
## ID["EPSG",9001]]],
## AXIS["(N)",north,
## ORDER[2],
## LENGTHUNIT["metre",1,
## ID["EPSG",9001]]]]
plomo <- read.csv("datos_plomo.csv") %>%
st_as_sf(coords = c("x","y"), crs = 9001)
st_crs(plomo) <- st_crs(plomo)
###Se carga la capa vectorial meuse.shp, que representa la geometría del valle.
###Se importan los puntos de muestreo de plomo desde un CSV y se convierten a un objeto sf utilizando sus coordenadas.
###Se establece el sistema de referencia espacial (CRS 9001, generalmente asociado a proyecciones planas métricas).
##2. Visualización Espacial del Dominio de Estudio
plot(meuse$geometry, main="plomo - valle del meuse")
plot(plomo$geometry, col="red", add = TRUE)

###Se genera un mapa base con los límites del valle y se superponen los puntos de muestreo de plomo, permitiendo visualizar la distribución espacial de la red de observaciones.
##3. Exploración Estadística Univariada
copia_plomo <- plomo %>% st_drop_geometry() %>% dplyr::select(-c(X))
hist(copia_plomo$plomo, xlab="Pl")

summary(copia_plomo)
## plomo
## Min. : 37.0
## 1st Qu.: 72.5
## Median :123.0
## Mean :153.4
## 3rd Qu.:207.0
## Max. :654.0
boxplot(copia_plomo$plomo, main="Boxplot - Plomo en el valle meuse")

##Las geometrías se separan para obtener una tabla puramente atributiva.
###Se realizan:
### Histograma → Distribución de frecuencias del plomo.
###Medidas descriptivas → Media, mediana, cuartiles y valores extremos.
###Diagrama de caja → Identificación de valores atípicos y dispersión general.
##4. Análisis de Continuidad Espacial mediante Cloud de Semivarianzas
hscat(formula = plomo ~ 1, data = plomo,
breaks = c(20,30,90,120,200,400,700,1000,1500,2500,5000))

###El gráfico h-scatterplot evalúa la relación espacial entre pares de puntos a intervalos crecientes de distancia, proporcionando evidencia preliminar de autocorrelación espacial.
##5. Tendencias Espaciales en los Ejes Cardinales
par(mfrow=c(2,1))
df_plomo <- read.csv("datos_plomo.csv", header = TRUE, sep=",")
plot(df_plomo$x, df_plomo$plomo, xlab="oeste-este", ylab="plomo")
abline(lm(df_plomo$plomo ~ df_plomo$x), col="red")
plot(df_plomo$y, df_plomo$plomo, xlab="sur-norte", ylab="plomo conc")
abline(lm(df_plomo$plomo ~ df_plomo$y), col="red")

##Se examina la existencia de tendencia direccional (gradient spatial) de la concentración de plomo:
### Eje Oeste–Este (X)
###Eje Sur–Norte (Y)
###La recta de regresión permite identificar si hay pendiente significativa que sugiera un componente estructural antes de ajustar el variograma.
##6. Construcción del Mapa Variográfico
gm_map <- variogram(plomo ~ 1, data = plomo,
cutoff = 1000, width = 100, map = TRUE)
plot(gm_map, col.regions = viridis::viridis(100),
main = "Mapa variografico de plomo en valle Meuse",
xlab = "Variacion eje X",
ylab = "Variacion eje Y")

###Se genera un variograma direccional en formato de mapa, representando la estructura de dependencias espaciales:
### Cutoff = 1000 m: distancia máxima considerada.
###Width = 100 m: ancho de los bins espaciales.
###El resultado es un mapa que muestra anisotropías o patrones direccionales en la semivarianza.
###Resumen Técnico
###Este flujo corresponde a un análisis clásico en geoestadística:
### Preparación y limpieza de datos espaciales
###Exploración estadística y visualización temática
###Evaluación preliminar de autocorrelación espacial
###Detección de tendencias regionales
###Cálculo de un variograma empírico en formato direccional
###Este pipeline es la base para la modelación variográfica y posterior interpolación mediante kriging.