Introducción

El presente documento tiene como objetivo desarrollar y presentar un análisis detallado basado en datos espaciales, con especial énfasis en la predicción de variables ambientales mediante técnicas geoestadísticas. Se emplean métodos como el Kriging para generar predicciones espaciales, las cuales se visualizan en formato raster y se complementan con representaciones gráficas y estadísticas. Este ejercicio permite consolidar competencias en el manejo de datos geográficos y el uso de herramientas analíticas aplicadas al estudio del medio ambiente y sus dinámicas.

Importación de datos y librerías

## --------------------------------------------------------------
##  Analysis of Geostatistical Data
##  For an Introduction to geoR go to http://www.leg.ufpr.br/geoR
##  geoR version 1.9-5 (built on 2025-04-25) is now loaded
## --------------------------------------------------------------
## Cargando paquete requerido: raster
## Cargando paquete requerido: sp
## Cargando paquete requerido: RColorBrewer
## Cargando paquete requerido: rasterVis
## Cargando paquete requerido: lattice
df_aguacate <- read_excel("C:/Users/Fabio/OneDrive/Desktop/Analisis de informacion geografica y espacial/Actividad 3/Datos_Completos_Aguacate.xlsx", sheet = "Hoja1")
# Ver las primeras filas

head(df_aguacate)
## # A tibble: 6 × 21
##   id_arbol Latitude Longitude FORMATTED_DATE_TIME        Psychro_Wet_Bulb_Temp…¹
##      <dbl>    <dbl>     <dbl> <chr>                                        <dbl>
## 1        1     2.39     -76.7 01/10/2020  10:11:12 a, m,                    22  
## 2        2     2.39     -76.7 01/10/2020  10:11:12 a, m,                    21.4
## 3        3     2.39     -76.7 01/10/2020  10:11:12 a, m,                    21.8
## 4        4     2.39     -76.7 01/10/2020  10:11:12 a, m,                    22.8
## 5        5     2.39     -76.7 01/10/2020  10:11:12 a, m,                    22.6
## 6        6     2.39     -76.7 01/10/2020  10:11:12 a, m,                    21.5
## # ℹ abbreviated name: ¹​Psychro_Wet_Bulb_Temperature
## # ℹ 16 more variables: Station_Pressure <dbl>, Relative_Humidity <dbl>,
## #   Crosswind <dbl>, Temperature <dbl>, Barometric_Pressure <dbl>,
## #   Headwind <dbl>, Direction_True <dbl>, Direction_Mag <dbl>,
## #   Wind_Speed <dbl>, Heat_Stress_Index <dbl>, Altitude <dbl>, Dew_Point <dbl>,
## #   Density_Altitude <dbl>, Wind_Chill <dbl>,
## #   Estado_Fenologico_Predominante <dbl>, Frutos_Afectados <dbl>

Ubicación de los árboles

leaflet() %>% addTiles() %>% addCircleMarkers(lng = df_aguacate$Longitude,lat = df_aguacate$Latitude,radius = 0.2,color = "#00FF7F")

Geoestadística (Utilizando humedad relativa)

geo_humidity=as.geodata(df_aguacate,coords.col = 3:2,data.col = 7)
plot(geo_humidity)

El análisis geoestadístico de la humedad relativa muestra una distribución espacial organizada con evidencia de autocorrelación, donde valores similares se agrupan geográficamente. Los gráficos indican una variación moderada de la humedad respecto a las coordenadas y una distribución aproximadamente normal centrada entre 70 y 75%, lo que sugiere que la variable es adecuada para técnicas como kriging sin transformaciones adicionales. Estos resultados respaldan la viabilidad de aplicar un variograma para modelar la dependencia espacial y realizar estimaciones en puntos no muestreados.

summary(dist(df_aguacate[ ,3:2]))
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 1.712e-05 4.051e-04 6.408e-04 6.827e-04 9.178e-04 1.959e-03
variograma=variog(geo_humidity,option = "bin",uvec=seq(0,0.001,0.00002))
## variog: computing omnidirectional variogram
plot(variograma)


variograma_mc=variog.mc.env(geo_humidity,obj=variograma)
## variog.env: generating 99 simulations by permutating data values
## variog.env: computing the empirical variogram for the 99 simulations
## variog.env: computing the envelops
lines(variograma_mc)

Ajuste del modelo de semivarianza

Exponencial

ini.vals = expand.grid(seq(1.2,1.5,l=10), seq(0.0001,0.0008,l=10))
model_mco_exp=variofit(variograma, ini=ini.vals, cov.model="exponential", wei="npair", min="optim")
## variofit: covariance model used is exponential 
## variofit: weights used: npairs 
## variofit: minimisation function used: optim 
## variofit: searching for best initial value ... selected values:
##               sigmasq phi   tausq kappa
## initial.value "1.5"   "0"   "0"   "0.5"
## status        "est"   "est" "est" "fix"
## loss value: 79943605.5291828

Gaussiano

model_mco_gaus=variofit(variograma, ini=ini.vals, cov.model="gaussian", wei="npair", min="optim",nugget = 0)
## variofit: covariance model used is gaussian 
## variofit: weights used: npairs 
## variofit: minimisation function used: optim 
## variofit: searching for best initial value ... selected values:
##               sigmasq phi   tausq kappa
## initial.value "1.5"   "0"   "0"   "0.5"
## status        "est"   "est" "est" "fix"
## loss value: 79800648.8865934

Esférico

model_mco_spe=variofit(variograma, ini=ini.vals, cov.model="spheric", fix.nug=TRUE, wei="npair", min="optim")
## variofit: covariance model used is spherical 
## variofit: weights used: npairs 
## variofit: minimisation function used: optim 
## variofit: searching for best initial value ... selected values:
##               sigmasq phi   tausq kappa
## initial.value "1.5"   "0"   "0"   "0.5"
## status        "est"   "est" "fix" "fix"
## loss value: 79709674.5251993
plot(variograma)

lines(model_mco_exp,col="blue")
lines(model_mco_gaus,col="red")
lines(model_mco_spe,col="purple")

model_mco_exp
## variofit: model parameters estimated by WLS (weighted least squares):
## covariance model is: exponential
## parameter estimates:
##   tausq sigmasq     phi 
## 13.0815 14.2206  0.0000 
## Practical Range with cor=0.05 for asymptotic range: 0.0001159668
## 
## variofit: minimised weighted sum of squares = 2896520
model_mco_gaus
## variofit: model parameters estimated by WLS (weighted least squares):
## covariance model is: gaussian
## parameter estimates:
##   tausq sigmasq     phi 
## 12.9765 14.3256  0.0000 
## Practical Range with cor=0.05 for asymptotic range: 0.0001159668
## 
## variofit: minimised weighted sum of squares = 2896520
model_mco_spe
## variofit: model parameters estimated by WLS (weighted least squares):
## covariance model is: spherical
## fixed value for tausq =  0 
## parameter estimates:
## sigmasq     phi 
## 27.3021  0.0000 
## Practical Range with cor=0.05 for asymptotic range: 0
## 
## variofit: minimised weighted sum of squares = 2896520

El modelo Esférico es el que mejor explica la estructura espacial de la humedad relativa, ya que tiene el menor valor de pérdida (loss value = 79,709,674.53). Esto indica que su forma teórica se ajusta mejor al variograma empírico de los datos observados. El modelo esférico es comúnmente utilizado cuando se espera una variabilidad limitada a cierta distancia (efecto de alcance definido), lo cual parece concordar con la distribución de la humedad en este caso.

Predicción espacial (Interpolación)

#Creamos una grilla de predicción

x.range <- seq(min(df_aguacate$Longitude), max(df_aguacate$Longitude), length.out = 100)
y.range <- seq(min(df_aguacate$Latitude), max(df_aguacate$Latitude), length.out = 100)
grid_pred <- expand.grid(Longitud = x.range, Latitud = y.range)

plot(grid_pred)
points(df_aguacate[,3:2],col="red")

geodatos_ko=krige.conv(geo_humidity, loc=grid_pred,
      krige= krige.control(nugget=0,trend.d="cte", 
      trend.l="cte",cov.pars=c(sigmasq=27.3021, phi=0.0001 )))
## krige.conv: model with constant mean
## krige.conv: Kriging performed using global neighbourhood
par(mfrow=c(1,2))
image(geodatos_ko, main="kriging Predict", xlab="East", ylab="North")

contour(geodatos_ko,main="kriging Predict", drawlabels=TRUE)

image(geodatos_ko, main="kriging StDv Predicted",val=sqrt(geodatos_ko$krige.var), xlab="East", ylab="North")

contour(geodatos_ko,main="kriging StDv Predicted", val=sqrt(geodatos_ko$krige.var), drawlabels=TRUE)

El análisis de kriging ordinario con el modelo esferico permitió generar una predicción espacial continua de la humedad relativa a partir de mediciones puntuales, revelando patrones bien definidos de variación en la parcela de estudio. Las representaciones gráficas, tanto en forma de mapa de calor como de curvas de nivel, evidencian zonas con mayores concentraciones de humedad, lo que sugiere la presencia de condiciones microclimáticas o edáficas particulares. Este tipo de interpolación espacial resulta valioso para la toma de decisiones en agricultura de precisión, facilitando la identificación de áreas que requieren intervenciones específicas para un manejo más eficiente del recurso hídrico.

Transformamos imagen a Raster

temp_predict <- rasterFromXYZ(cbind(grid_pred, geodatos_ko$predict))
plot(temp_predict,
     main = "Imagen raster",
     xlab = "Longitud",
     ylab = "Latitud")

levelplot(temp_predict,
          main = "Levelplot de imagen raster",
          xlab = "Longitud",
          ylab = "Latitud",
          par.settings = BuRdTheme)

Conclusión

La actividad permitió aplicar técnicas de geoestadística, como el Kriging, para estimar espacialmente una variable ambiental como la humedad, generando representaciones continuas a partir de datos puntuales. A través del procesamiento y visualización en formato raster, se evidenció la utilidad de estos métodos para identificar patrones espaciales y zonas críticas. Los resultados obtenidos no solo facilitaron una mejor comprensión del comportamiento de la variable analizada, sino que también demostraron el valor del análisis espacial en procesos de toma de decisiones informadas en contextos ambientales y territoriales.