Lista de librerías con link a la documentación.
Lista de librerías con link a la documentación.
n_x <- 4
n_y <- 6
x <- seq(0, 1, len = n_x)
y <- seq(0, 1, len = n_y)
coordenadas <- as.data.frame(expand.grid(x, y))
names(coordenadas) <- c("X", "Y")Encabezado coordenadas
| X | Y |
|---|---|
| 0.0000000 | 0.0 |
| 0.3333333 | 0.0 |
| 0.6666667 | 0.0 |
| 1.0000000 | 0.0 |
| 0.0000000 | 0.2 |
| 0.3333333 | 0.2 |
Esto define un objeto vgm que es el tipo de objeto que usa el paquete gstat para los modelos teóricos de variograma. Con este objeto se pueden definir modelos anidados.
## model psill range
## 1 Exp 10 0.5
## [1] "SpatialPoints"
## attr(,"package")
## [1] "sp"
cov_mat <- vgmArea(coordenadas, # Matriz de ubiaciones SP
vgm = vario) # VGM object
print(dim(cov_mat))## [1] 24 24
Simulación dada la media y la matriz de varianza
mu <- rep(0, n_x * n_y) # Media del proceso
simu <- rmvnorm(1,
mean = mu,
sigma = cov_mat)
print(simu[1:5])## [1] 0.3202784 1.8696771 -0.3138076 1.3413568 1.6079527
Unir las coordenadas con la columna de simulación
data <- as.data.frame(cbind(coordenadas@coords,
Simula = t(simu)))
names(data) <- c("X", "Y", "Var")
print(head(data))| X | Y | Var |
|---|---|---|
| 0.0000000 | 0.0 | 0.3202784 |
| 0.3333333 | 0.0 | 1.8696771 |
| 0.6666667 | 0.0 | -0.3138076 |
| 1.0000000 | 0.0 | 1.3413568 |
| 0.0000000 | 0.2 | 1.6079527 |
| 0.3333333 | 0.2 | 0.7935526 |
Reshape para matriz, esto transforma la tabla de datos en matriz
tabla <- reshape2::dcast(data,
X ~ Y,
value.var = "Var")
rownames(tabla) <- tabla[, 1]
tabla <- tabla[, c(-1)]
print(tabla)| 0 | 0.2 | 0.4 | 0.6 | 0.8 | 1 | |
|---|---|---|---|---|---|---|
| 0 | 0.3202784 | 1.6079527 | 0.9830152 | 7.519702 | 1.7294144 | -1.1107318 |
| 0.333333333333333 | 1.8696771 | 0.7935526 | 4.8470537 | 3.284085 | -0.6781032 | 3.4614707 |
| 0.666666666666667 | -0.3138076 | 0.4327380 | 5.2294823 | 4.273177 | 3.0492405 | -0.1208445 |
| 1 | 1.3413568 | 3.9792647 | 3.9830081 | 7.672783 | 4.4182895 | 2.1628881 |
Pulimiento de medianas de la tabla
## 1: 27.06093
## Final: 26.97376
##
## Median Polish Results (Dataset: "tabla")
##
## Overall: 1.880851
##
## Row Effects:
## 0 0.333333333333333 0.666666666666667 1
## -0.4260350 0.4260350 -0.5304161 2.0022273
##
## Column Effects:
## 0 0.2 0.4 0.6 0.8 1
## -1.3993903 -0.4107555 1.3200484 3.3562228 0.4049045 -1.5957351
##
## Residuals:
## 0 0.2 0.4 0.6 0.8 1
## 0 0.26485 0.56389 -1.7918 2.70866 -0.13031 -0.96981
## 0.333333333333333 0.96218 -1.10258 1.2201 -2.37902 -3.38989 2.75032
## 0.666666666666667 -0.26485 -0.50694 2.5590 -0.43348 1.29390 0.12446
## 1 -1.14233 0.50694 -1.2201 0.43348 0.13031 -0.12446
Reshape de los datos, con efecto de la fila y la columna
tabla_residuales <- as.data.frame(med$residuals)
names(tabla_residuales) <- med$col
rownames(tabla_residuales) <- med$row
geo_data <- reshape2::melt(as.matrix(tabla_residuales))
geo_data <- cbind(data,
geo_data,
med$overall)
names(geo_data) <- c("X",
"Y",
"Var",
"Efecto fila",
"Efecto columa",
"Residual",
"Efecto Global")
print(geo_data)| X | Y | Var | Efecto fila | Efecto columa | Residual | Efecto Global |
|---|---|---|---|---|---|---|
| 0.0000000 | 0.0 | 0.3202784 | -0.4260350 | -1.3993903 | 0.2648525 | 1.880851 |
| 0.3333333 | 0.0 | 1.8696771 | 0.4260350 | -1.3993903 | 0.9621811 | 1.880851 |
| 0.6666667 | 0.0 | -0.3138076 | -0.5304161 | -1.3993903 | -0.2648525 | 1.880851 |
| 1.0000000 | 0.0 | 1.3413568 | 2.0022273 | -1.3993903 | -1.1423315 | 1.880851 |
| 0.0000000 | 0.2 | 1.6079527 | -0.4260350 | -0.4107555 | 0.5638920 | 1.880851 |
| 0.3333333 | 0.2 | 0.7935526 | 0.4260350 | -0.4107555 | -1.1025782 | 1.880851 |
| 0.6666667 | 0.2 | 0.4327380 | -0.5304161 | -0.4107555 | -0.5069416 | 1.880851 |
| 1.0000000 | 0.2 | 3.9792647 | 2.0022273 | -0.4107555 | 0.5069416 | 1.880851 |
| 0.0000000 | 0.4 | 0.9830152 | -0.4260350 | 1.3200484 | -1.7918495 | 1.880851 |
| 0.3333333 | 0.4 | 4.8470537 | 0.4260350 | 1.3200484 | 1.2201189 | 1.880851 |
| 0.6666667 | 0.4 | 5.2294823 | -0.5304161 | 1.3200484 | 2.5589987 | 1.880851 |
| 1.0000000 | 0.4 | 3.9830081 | 2.0022273 | 1.3200484 | -1.2201189 | 1.880851 |
| 0.0000000 | 0.6 | 7.5197021 | -0.4260350 | 3.3562228 | 2.7086630 | 1.880851 |
| 0.3333333 | 0.6 | 3.2840853 | 0.4260350 | 3.3562228 | -2.3790238 | 1.880851 |
| 0.6666667 | 0.6 | 4.2731768 | -0.5304161 | 3.3562228 | -0.4334812 | 1.880851 |
| 1.0000000 | 0.6 | 7.6727825 | 2.0022273 | 3.3562228 | 0.4334812 | 1.880851 |
| 0.0000000 | 0.8 | 1.7294144 | -0.4260350 | 0.4049045 | -0.1303064 | 1.880851 |
| 0.3333333 | 0.8 | -0.6781032 | 0.4260350 | 0.4049045 | -3.3898941 | 1.880851 |
| 0.6666667 | 0.8 | 3.0492405 | -0.5304161 | 0.4049045 | 1.2939008 | 1.880851 |
| 1.0000000 | 0.8 | 4.4182895 | 2.0022273 | 0.4049045 | 0.1303064 | 1.880851 |
| 0.0000000 | 1.0 | -1.1107318 | -0.4260350 | -1.5957351 | -0.9698130 | 1.880851 |
| 0.3333333 | 1.0 | 3.4614707 | 0.4260350 | -1.5957351 | 2.7503195 | 1.880851 |
| 0.6666667 | 1.0 | -0.1208445 | -0.5304161 | -1.5957351 | 0.1244554 | 1.880851 |
| 1.0000000 | 1.0 | 2.1628881 | 2.0022273 | -1.5957351 | -0.1244554 | 1.880851 |
Validación de la descomposición
valida <- cbind(geo_data$Var,
geo_data[["Efecto fila"]] +
geo_data[["Efecto columa"]] +
geo_data[["Residual"]] +
geo_data[["Efecto Global"]])
valida <- as.data.frame(valida)
names(valida) <- c("datos", "suma")
print(valida)| datos | suma |
|---|---|
| 0.3202784 | 0.3202784 |
| 1.8696771 | 1.8696771 |
| -0.3138076 | -0.3138076 |
| 1.3413568 | 1.3413568 |
| 1.6079527 | 1.6079527 |
| 0.7935526 | 0.7935526 |
| 0.4327380 | 0.4327380 |
| 3.9792647 | 3.9792647 |
| 0.9830152 | 0.9830152 |
| 4.8470537 | 4.8470537 |
| 5.2294823 | 5.2294823 |
| 3.9830081 | 3.9830081 |
| 7.5197021 | 7.5197021 |
| 3.2840853 | 3.2840853 |
| 4.2731768 | 4.2731768 |
| 7.6727825 | 7.6727825 |
| 1.7294144 | 1.7294144 |
| -0.6781032 | -0.6781032 |
| 3.0492405 | 3.0492405 |
| 4.4182895 | 4.4182895 |
| -1.1107318 | -1.1107318 |
| 3.4614707 | 3.4614707 |
| -0.1208445 | -0.1208445 |
| 2.1628881 | 2.1628881 |