ƍndice de Moran para datos de materia orgĆ”nica y conductividad elĆ©ctrica aparente del suelo a 75 cm y 150 cm de profundidad del suelo

Jorge IvÔn Rivera Bermúdez


ƍndice de Moran para datos de materia orgĆ”nica (MO)

set.seed(12345)
MO <- rnorm(150, 3, 0.5)
xy <- expand.grid(x = seq(1, 10), y = seq(1, 15))
plot(xy, col = MO, pch = 15, cex = 2, 
     main = 'Distribución espacial de la materia orgÔnica')

MO.dists <- as.matrix(dist(cbind(xy$x, xy$y))) 
# convertir los datos en una matriz
MO.dists.inv <- 1/MO.dists # inverso de la matriz de las distancias
diag(MO.dists.inv) <- 0 # convertir valores de Inf en la diagonal a ceros
MO.dists[1:5, 1:5] # primeras 5 filas y 5 columnas de la matriz de distancias
##   1 2 3 4 5
## 1 0 1 2 3 4
## 2 1 0 1 2 3
## 3 2 1 0 1 2
## 4 3 2 1 0 1
## 5 4 3 2 1 0
library(ape)
Moran.I(MO, MO.dists.inv) # p.value < 0.05 = indica autocorrelacion positiva
## $observed
## [1] -0.009650003
## 
## $expected
## [1] -0.006711409
## 
## $sd
## [1] 0.007694112
## 
## $p.value
## [1] 0.7025151

Como el p.value > 0.05, podemos decir que no existe una autocorrelación positiva entre los contenidos de materia organica (MO) del suelo.


ƍndice de Moran para datos de conductividad elĆ©ctrica aparente del suelo (CEa)

library(readxl)
BD_MORAN <- read_excel("C:/Users/Jorge/Downloads/BD_MORAN.xlsx")
head(BD_MORAN)
## # A tibble: 6 x 7
##       z X_WGS84 Y_WGS84 CEa_075 CEa_150   X_MCB   Y_MCE
##   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1  194.   -72.5    4.20    6.17    18.1 843499. 955943.
## 2  194.   -72.5    4.20    6.21    17.7 843499. 955943.
## 3  194.   -72.5    4.20    6.37    18.6 843499. 955944.
## 4  194.   -72.5    4.20    6.33    18.2 843498. 955944.
## 5  194.   -72.5    4.20    6.41    18.2 843498. 955944.
## 6  194.   -72.5    4.20    6.37    18.8 843498. 955944.

dim(BD_MORAN)
## [1] 18526     7

Dado el tamaƱo de la data, es necesario seleccionar una muestra n que permita hacer estimaciones en el cĆ”lculo del ƍndice de Moran para la conductividad electrica aparente del suelo a 75 cm y 150 cm de profundidad.

# creando data frames para ambos escenarios:
df_CEa075 <- data.frame(x = BD_MORAN$X_WGS84, 
                        y = BD_MORAN$Y_WGS84,
                        CEa075 = BD_MORAN$CEa_075)

df_CEa150 <- data.frame(x = BD_MORAN$X_WGS84, 
                        y = BD_MORAN$Y_WGS84,
                        CEa150 = BD_MORAN$CEa_150)

# seleccionando muestra:
muestra <- seq(1, 18526, 10)

df_CEa075 <- df_CEa075[muestra, ]
df_CEa150 <- df_CEa150[muestra, ]

# convertir los datos en una matriz
CEa075.dists <- as.matrix(dist(cbind(df_CEa075$x, 
                                     df_CEa075$y)))
dim(CEa075.dists)
## [1] 1853 1853
CEa075.dists.inv <- 1/CEa075.dists 
# inverso de la matriz de las distancias
diag(CEa075.dists.inv) <- 0
# convertir valores de Inf en la diagonal a ceros
 
CEa075.dists.inv[1:5, 1:5]
##          1        2        3        4        5
## 1     0.00 40729.17 20111.22 14114.15 11073.22
## 2 40729.17     0.00 39724.26 21520.37 15021.07
## 3 20111.22 39724.26     0.00 46040.96 23270.07
## 4 14114.15 21520.37 46040.96     0.00 45616.73
## 5 11073.22 15021.07 23270.07 45616.73     0.00
Moran.I(df_CEa075$CEa075, CEa075.dists)
## $observed
## [1] -0.1555876
## 
## $expected
## [1] -0.0005399568
## 
## $sd
## [1] 0.0003512033
## 
## $p.value
## [1] 0

# convertir los datos en una matriz
CEa150.dists <- as.matrix(dist(cbind(df_CEa150$x, 
                                     df_CEa150$y)))
dim(CEa150.dists)
## [1] 1853 1853
CEa150.dists.inv <- 1/CEa150.dists 
# inverso de la matriz de las distancias
diag(CEa150.dists.inv) <- 0
# convertir valores de Inf en la diagonal a ceros
 
CEa150.dists.inv[1:5, 1:5]
##          1        2        3        4        5
## 1     0.00 40729.17 20111.22 14114.15 11073.22
## 2 40729.17     0.00 39724.26 21520.37 15021.07
## 3 20111.22 39724.26     0.00 46040.96 23270.07
## 4 14114.15 21520.37 46040.96     0.00 45616.73
## 5 11073.22 15021.07 23270.07 45616.73     0.00
Moran.I(df_CEa150$CEa150, CEa150.dists)
## $observed
## [1] -0.0559091
## 
## $expected
## [1] -0.0005399568
## 
## $sd
## [1] 0.0003511154
## 
## $p.value
## [1] 0

En ambos escenarios encontramos un p.value = 0, y si el p.value < 0.05, indica una autocorrelación positiva, lo cual sucede con los valores de CEa del suelo a 75 cm y 150 cm de profundidad.