Ć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.