2. Uso del método de la distancia inversa ponderada para la interpolación de los datos de precipitación
Primero, se crea una cuadricula vacia , con un total de 100000 celdas y se le asigna información de proyección
grd <- as.data.frame(spsample(ptos_train, "regular", n=100000))
names(grd) <- c("X", "Y")
coordinates(grd) <- c("X", "Y")
gridded(grd) <- TRUE
fullgrid(grd) <- TRUE
proj4string(grd) <- proj4string(ptos_train)
Posteriormente, se realiza la terea de interpolación con ayuda de la función idw de la libreria gstat .Para la interpolación de los datos , será empleada una potencia de 3 (idp=3.0) , luego el resultado de esta interpolación se convierte a un objeto ráster y se recorta a la extensión de la zona de estudio (En este caso a la extensión del objeto “Vichada 2”)
P.idw <- gstat::idw(precipitacion ~ 1, ptos_train, newdata=grd, idp=3.0)
[inverse distance weighted interpolation]
r <- raster(P.idw)
(r.m <- raster::mask(r, Vichada2))
class : RasterLayer
dimensions : 313, 320, 100160 (nrow, ncol, ncell)
resolution : 1249.511, 1249.511 (x, y)
extent : 1333284, 1733127, 799447.3, 1190544 (xmin, xmax, ymin, ymax)
crs : +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
source : memory
names : var1.pred
values : 0.5035295, 84.58405 (min, max)
Ahora, se plotea el resultado de la interpolación.Primero se realiza el gráfico con tmap y posteriormente se hace uso de la libreria leaflet para lograr una mejor visualización
tm_shape(r.m) + tm_raster(n=10,palette = "RdBu", midpoint = 43, title="Interpolación IDW \n para precipitación \n(mm)") +
tm_shape(ptrain) + tm_dots(size = 0.03, col = "#c4f0f5") +
tm_legend(legend.outside=TRUE, title.size=1.2, text.size= 0.8)

library(leaflet)
library(RColorBrewer)
pal <- colorNumeric(c("#B2182B", "#FFE4A9", "#afc9a9", "#86bbdb", "#2e0091"), values(r.m),
na.color = "transparent")
leaflet() %>% addTiles() %>%addRasterImage(r.m, colors = pal, opacity = 0.6) %>%addLegend(pal = pal, values = values(r.m), title = "Interpolación IDW para precipitación en Vichada del 26.04 al 30.04 en 2020 [mm]")
2.1 Validación Cruzada
Ahora, se realizará una tarea de validación (Leave-one-out cross-validation) para medir el error en los valores interpolados y usar esta información para perfeccionar la tarea de interopolación , pues , a través de esta tarea de validación se puede conocer cual potencia se debe usar para tener una mejor aproximación a los datos
Esta tarea de validación ,consiste en extraer un objeto de la muestra y usar los valores de los objetos restantes para tratar de estimar su valor .Este proceso se realiza n veces , es decir se realiza una vez por cada objeto de la muestra.
P <- ptrain
IDW.out <- vector(length = length(P))
for (i in 1:length(P)) {IDW.out[i] <- gstat::idw(precipitacion ~ 1, P[-i,], P[i,], idp=3.0)$var1.pred}
El siguiente gráfico , corresponde a un diagrama de dispersión entre los datos observados, es decir los valores reales del punto que fue omitido en cada caso y los datos de precipitación pronósticados o estimados
OP <- par(pty="s", mar=c(4,3,0,0))
plot(IDW.out ~ P$precipitacion, asp=1, xlab="Observado", ylab="Pronosticado", pch=20,col=rgb(0,0,0,0.5))
abline(lm(IDW.out ~ P$precipitacion), col="red", lw=2,lty=3)
abline(0,1)

También , se puede elegir la potencia en función del error cuadratico medio, pues aquella que tiene un valor menor en este parámetro se considera un mejor estimador ,por tanto , los valores estimados estarán mas cercanos a los valores observados
sqrt( sum((IDW.out - P$precipitacion)^2) / length(P))
[1] 2.234104
2.2 Intervalos de Confianza para la interpolación IDW
Otra medida que puede ser empleada para conocer la presición del metodo de interpolación aplicado es el cálculo de los intervalos de confianza con ayuda de la técnica de validación cruzada para cada pixel. Si, el rango de valores es muy alto no podemos estar seguros del valor que fue estimado, en cambio si el rango de valores para el intervalo de confianza es mas bajo se tendra mas seguridad del valor obtenido en la interpolación pues nos indica que este ultimo no es tan sensible a la presencia o ausencia de un punto de muestra
Este proceso se ilustrará para el 5% de los datos , pues el cálculo de intervalo de confianza para cada valor estimado puede tardarse mucho
index = sample(1:nrow(ptos_train), 0.05 * nrow(ptos_train))
(P <- ptos_train[index, ])
class : SpatialPointsDataFrame
features : 81
extent : 1339270, 1695656, 821295.6, 1183910 (xmin, xmax, ymin, ymax)
crs : +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
variables : 4
names : MUNIC, CODIGO, lluvia, precipitacion
min values : CUMARIBO, 99001, 0.674332559108734, 0.7
max values : SANTA ROSALÍA, 99773, 80.6951599121094, 80.7
Se crea la superficie interpolada
img <- gstat::idw(precipitacion~1, P, newdata=grd, idp=3.0)
n <- length(P)
Zi <- matrix(nrow = length(img$var1.pred), ncol = n)
Luego,se aplica el método de validación cruzada
st <- stack()
for (i in 1:n){
Z1 <- gstat::idw(precipitacion~1, P[-i,], newdata=grd, idp=3.0)
st <- addLayer(st,raster(Z1,layer=1))
Zi[,i] <- n * img$var1.pred - (n-1) * Z1$var1.pred}
Se calcula el intervalo de confianza
Se crea un raster a partir del intervalo de confianza y la predicción de la variable
img.sig <- img
img.sig$v <- CI /img$var1.pred
Posteriormente , se recorta este ráster a la extensión del departamento de Vichada
r1 <- raster(img.sig, layer="v")
r.m1 <- raster::mask(r1, Vichada2)
Se plotea el mapa correspondiente a los intervalos de confianza
tm_shape(r.m1) + tm_raster(palette = "Reds" , n=7,title="IDW\nIntervalo de confianza (95%) \n(mm)") +
tm_shape(P) + tm_dots(size=0.02) +
tm_legend(legend.outside=TRUE)
CRS object has comment, which is lost in output

LS0tCnRpdGxlOiAiSW50ZXJwb2xhY2nDs24gSURXIHBhcmEgZGF0b3MgZGUgcHJlY2lwaXRhY2nDs24gZW4gVmljaGFkYSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMjIDEuIEludHJvZHVjY2nDs24KRXN0ZSBjdWFkZXJubyBjb3JyZXNwb25kZSBhbCB0ZWNlciBhbmV4byBkZWwgaW5mb3JtZSBmaW5hbCBjb3JyZXNwb25kaWVudGUgYSBsYSBhc2lnbmF0dXJhIEdlb23DoXRpY2EgQsOhc2ljYSwgZW4gZWwgc2UgaWx1c3RyYSBlbCBtZXRvZG8gZGUgbGEgZGlzdGFuY2lhIGludmVyc2EgcG9uZGVyYWRhIHBhcmEgbG9zIGRhdG9zIGRlIHByZWNpcGl0YWNpw7NuCgojIyMgMi4gVXNvIGRlbCBtw6l0b2RvIGRlIGxhIGRpc3RhbmNpYSBpbnZlcnNhIHBvbmRlcmFkYSBwYXJhIGxhIGludGVycG9sYWNpw7NuIGRlIGxvcyBkYXRvcyBkZSBwcmVjaXBpdGFjacOzbiAKClByaW1lcm8sIHNlIGNyZWEgdW5hIGN1YWRyaWN1bGEgdmFjaWEgLCBjb24gdW4gdG90YWwgZGUgMTAwMDAwIGNlbGRhcyB5IHNlIGxlIGFzaWduYSBpbmZvcm1hY2nDs24gZGUgcHJveWVjY2nDs24gCmBgYHtyIHdhcm5pbmc9RkFMU0V9CmdyZCAgICAgICAgICAgICAgPC0gYXMuZGF0YS5mcmFtZShzcHNhbXBsZShwdG9zX3RyYWluLCAicmVndWxhciIsIG49MTAwMDAwKSkKbmFtZXMoZ3JkKSAgICAgICA8LSBjKCJYIiwgIlkiKQpjb29yZGluYXRlcyhncmQpIDwtIGMoIlgiLCAiWSIpCmdyaWRkZWQoZ3JkKSAgICAgPC0gVFJVRSAgCmZ1bGxncmlkKGdyZCkgICAgPC0gVFJVRSAgCnByb2o0c3RyaW5nKGdyZCkgPC0gcHJvajRzdHJpbmcocHRvc190cmFpbikKYGBgClBvc3Rlcmlvcm1lbnRlLCBzZSByZWFsaXphIGxhIHRlcmVhIGRlIGludGVycG9sYWNpw7NuIGNvbiBheXVkYSBkZSBsYSBmdW5jacOzbiBpZHcgZGUgbGEgbGlicmVyaWEgZ3N0YXQgLlBhcmEgbGEgaW50ZXJwb2xhY2nDs24gZGUgbG9zIGRhdG9zICwgc2Vyw6EgZW1wbGVhZGEgdW5hIHBvdGVuY2lhIGRlIDMgKGlkcD0zLjApICwgbHVlZ28gZWwgcmVzdWx0YWRvIGRlIGVzdGEgaW50ZXJwb2xhY2nDs24gc2UgY29udmllcnRlIGEgdW4gb2JqZXRvIHLDoXN0ZXIgeSBzZSByZWNvcnRhIGEgbGEgZXh0ZW5zacOzbiBkZSBsYSB6b25hIGRlIGVzdHVkaW8gKEVuIGVzdGUgY2FzbyBhIGxhIGV4dGVuc2nDs24gZGVsIG9iamV0byAiVmljaGFkYSAyIikKYGBge3Igd2FybmluZz1GQUxTRX0KUC5pZHcgPC0gZ3N0YXQ6OmlkdyhwcmVjaXBpdGFjaW9uIH4gMSwgcHRvc190cmFpbiwgbmV3ZGF0YT1ncmQsIGlkcD0zLjApCnIgICAgICAgPC0gcmFzdGVyKFAuaWR3KQooci5tICAgPC0gcmFzdGVyOjptYXNrKHIsIFZpY2hhZGEyKSkKYGBgCkFob3JhLCBzZSBwbG90ZWEgZWwgcmVzdWx0YWRvIGRlIGxhIGludGVycG9sYWNpw7NuLlByaW1lcm8gc2UgcmVhbGl6YSBlbCBncsOhZmljbyBjb24gdG1hcCB5IHBvc3Rlcmlvcm1lbnRlIHNlIGhhY2UgdXNvIGRlIGxhIGxpYnJlcmlhIGxlYWZsZXQgcGFyYSBsb2dyYXIgdW5hIG1lam9yIHZpc3VhbGl6YWNpw7NuCmBgYHtyfQp0bV9zaGFwZShyLm0pICsgdG1fcmFzdGVyKG49MTAscGFsZXR0ZSA9ICJSZEJ1IiwgbWlkcG9pbnQgPSA0MywgdGl0bGU9IkludGVycG9sYWNpw7NuIElEVyBcbiBwYXJhIHByZWNpcGl0YWNpw7NuIFxuKG1tKSIpICsgCiAgdG1fc2hhcGUocHRyYWluKSArIHRtX2RvdHMoc2l6ZSA9IDAuMDMsIGNvbCA9ICIjYzRmMGY1IikgKwogIHRtX2xlZ2VuZChsZWdlbmQub3V0c2lkZT1UUlVFLCB0aXRsZS5zaXplPTEuMiwgdGV4dC5zaXplPSAwLjgpCmBgYApgYGB7cn0KbGlicmFyeShsZWFmbGV0KQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKcGFsIDwtIGNvbG9yTnVtZXJpYyhjKCIjQjIxODJCIiwgIiNGRkU0QTkiLCAiI2FmYzlhOSIsICIjODZiYmRiIiwgIiMyZTAwOTEiKSwgdmFsdWVzKHIubSksCiAgbmEuY29sb3IgPSAidHJhbnNwYXJlbnQiKQoKbGVhZmxldCgpICU+JSBhZGRUaWxlcygpICU+JWFkZFJhc3RlckltYWdlKHIubSwgY29sb3JzID0gcGFsLCBvcGFjaXR5ID0gMC42KSAlPiVhZGRMZWdlbmQocGFsID0gcGFsLCB2YWx1ZXMgPSB2YWx1ZXMoci5tKSwgdGl0bGUgPSAiSW50ZXJwb2xhY2nDs24gSURXIHBhcmEgcHJlY2lwaXRhY2nDs24gZW4gVmljaGFkYSBkZWwgMjYuMDQgYWwgMzAuMDQgZW4gMjAyMCBbbW1dIikKYGBgCiMjIyMgMi4xIFZhbGlkYWNpw7NuIENydXphZGEKCkFob3JhLCBzZSByZWFsaXphcsOhIHVuYSB0YXJlYSBkZSB2YWxpZGFjacOzbiAoTGVhdmUtb25lLW91dCBjcm9zcy12YWxpZGF0aW9uKSBwYXJhIG1lZGlyIGVsIGVycm9yIGVuIGxvcyB2YWxvcmVzIGludGVycG9sYWRvcyB5IHVzYXIgZXN0YSBpbmZvcm1hY2nDs24gcGFyYSBwZXJmZWNjaW9uYXIgbGEgdGFyZWEgZGUgaW50ZXJvcG9sYWNpw7NuICwgcHVlcyAsIGEgdHJhdsOpcyBkZSBlc3RhIHRhcmVhIGRlIHZhbGlkYWNpw7NuIHNlIHB1ZWRlIGNvbm9jZXIgY3VhbCBwb3RlbmNpYSBzZSBkZWJlIHVzYXIgcGFyYSB0ZW5lciB1bmEgbWVqb3IgYXByb3hpbWFjacOzbiBhIGxvcyBkYXRvcwoKRXN0YSB0YXJlYSBkZSB2YWxpZGFjacOzbiAsY29uc2lzdGUgZW4gZXh0cmFlciB1biBvYmpldG8gZGUgbGEgbXVlc3RyYSB5IHVzYXIgbG9zIHZhbG9yZXMgZGUgbG9zIG9iamV0b3MgcmVzdGFudGVzIHBhcmEgdHJhdGFyIGRlIGVzdGltYXIgc3UgdmFsb3IgLkVzdGUgcHJvY2VzbyBzZSByZWFsaXphIG4gdmVjZXMgLCBlcyBkZWNpciBzZSByZWFsaXphIHVuYSB2ZXogcG9yIGNhZGEgb2JqZXRvIGRlIGxhIG11ZXN0cmEuCmBgYHtyfQpQIDwtIHB0cmFpbgpJRFcub3V0IDwtIHZlY3RvcihsZW5ndGggPSBsZW5ndGgoUCkpCmZvciAoaSBpbiAxOmxlbmd0aChQKSkge0lEVy5vdXRbaV0gPC0gZ3N0YXQ6OmlkdyhwcmVjaXBpdGFjaW9uIH4gMSwgUFstaSxdLCBQW2ksXSwgaWRwPTMuMCkkdmFyMS5wcmVkfQpgYGAKRWwgc2lndWllbnRlIGdyw6FmaWNvICwgY29ycmVzcG9uZGUgYSB1biBkaWFncmFtYSBkZSBkaXNwZXJzacOzbiBlbnRyZSBsb3MgZGF0b3Mgb2JzZXJ2YWRvcywgZXMgZGVjaXIgbG9zIHZhbG9yZXMgcmVhbGVzIGRlbCBwdW50byBxdWUgZnVlIG9taXRpZG8gZW4gY2FkYSBjYXNvIHkgbG9zIGRhdG9zIGRlIHByZWNpcGl0YWNpw7NuIHByb27Ds3N0aWNhZG9zIG8gZXN0aW1hZG9zCmBgYHtyfQpPUCA8LSBwYXIocHR5PSJzIiwgbWFyPWMoNCwzLDAsMCkpCiAgcGxvdChJRFcub3V0IH4gUCRwcmVjaXBpdGFjaW9uLCBhc3A9MSwgeGxhYj0iT2JzZXJ2YWRvIiwgeWxhYj0iUHJvbm9zdGljYWRvIiwgcGNoPTIwLGNvbD1yZ2IoMCwwLDAsMC41KSkKYWJsaW5lKGxtKElEVy5vdXQgfiBQJHByZWNpcGl0YWNpb24pLCBjb2w9InJlZCIsIGx3PTIsbHR5PTMpCmFibGluZSgwLDEpCmBgYApUYW1iacOpbiAsIHNlIHB1ZWRlIGVsZWdpciBsYSBwb3RlbmNpYSBlbiBmdW5jacOzbiBkZWwgZXJyb3IgY3VhZHJhdGljbyBtZWRpbywgcHVlcyBhcXVlbGxhIHF1ZSB0aWVuZSB1biB2YWxvciBtZW5vciBlbiBlc3RlIHBhcsOhbWV0cm8gc2UgY29uc2lkZXJhIHVuIG1lam9yIGVzdGltYWRvciAscG9yIHRhbnRvICwgbG9zIHZhbG9yZXMgZXN0aW1hZG9zIGVzdGFyw6FuIG1hcyBjZXJjYW5vcyBhIGxvcyB2YWxvcmVzIG9ic2VydmFkb3MKYGBge3J9CnNxcnQoIHN1bSgoSURXLm91dCAtIFAkcHJlY2lwaXRhY2lvbileMikgLyBsZW5ndGgoUCkpCmBgYAojIyMjIDIuMiBJbnRlcnZhbG9zIGRlIENvbmZpYW56YSBwYXJhIGxhIGludGVycG9sYWNpw7NuIElEVwoKT3RyYSBtZWRpZGEgcXVlIHB1ZWRlIHNlciBlbXBsZWFkYSBwYXJhIGNvbm9jZXIgbGEgcHJlc2ljacOzbiBkZWwgbWV0b2RvIGRlIGludGVycG9sYWNpw7NuIGFwbGljYWRvIGVzIGVsIGPDoWxjdWxvIGRlIGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBjb24gYXl1ZGEgZGUgbGEgdMOpY25pY2EgZGUgdmFsaWRhY2nDs24gY3J1emFkYSBwYXJhIGNhZGEgcGl4ZWwuIFNpLCBlbCByYW5nbyBkZSB2YWxvcmVzIGVzIG11eSBhbHRvIG5vIHBvZGVtb3MgZXN0YXIgc2VndXJvcyBkZWwgdmFsb3IgcXVlIGZ1ZSBlc3RpbWFkbywgZW4gY2FtYmlvIHNpIGVsIHJhbmdvIGRlIHZhbG9yZXMgcGFyYSBlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIGVzIG1hcyBiYWpvIHNlIHRlbmRyYSBtYXMgc2VndXJpZGFkICBkZWwgdmFsb3Igb2J0ZW5pZG8gZW4gbGEgaW50ZXJwb2xhY2nDs24gcHVlcyBub3MgaW5kaWNhIHF1ZSBlc3RlIHVsdGltbyBubyBlcyB0YW4gc2Vuc2libGUgYSBsYSBwcmVzZW5jaWEgbyBhdXNlbmNpYSBkZSB1biBwdW50byBkZSBtdWVzdHJhIAoKRXN0ZSBwcm9jZXNvIHNlIGlsdXN0cmFyw6EgcGFyYSBlbCA1JSBkZSBsb3MgZGF0b3MgLCBwdWVzIGVsIGPDoWxjdWxvIGRlIGludGVydmFsbyBkZSBjb25maWFuemEgcGFyYSBjYWRhIHZhbG9yIGVzdGltYWRvIHB1ZWRlIHRhcmRhcnNlIG11Y2hvCmBgYHtyIHdhcm5pbmc9RkFMU0V9CmluZGV4ID0gc2FtcGxlKDE6bnJvdyhwdG9zX3RyYWluKSwgMC4wNSAqIG5yb3cocHRvc190cmFpbikpCihQIDwtIHB0b3NfdHJhaW5baW5kZXgsIF0pCmBgYApTZSBjcmVhIGxhIHN1cGVyZmljaWUgaW50ZXJwb2xhZGEKYGBge3J9CmltZyA8LSBnc3RhdDo6aWR3KHByZWNpcGl0YWNpb25+MSwgUCwgbmV3ZGF0YT1ncmQsIGlkcD0zLjApCm4gICA8LSBsZW5ndGgoUCkKWmkgIDwtIG1hdHJpeChucm93ID0gbGVuZ3RoKGltZyR2YXIxLnByZWQpLCBuY29sID0gbikKYGBgCkx1ZWdvLHNlIGFwbGljYSBlbCBtw6l0b2RvIGRlIHZhbGlkYWNpw7NuIGNydXphZGEKYGBge3Igd2FybmluZz1GQUxTRX0Kc3QgPC0gc3RhY2soKQpmb3IgKGkgaW4gMTpuKXsKICBaMSA8LSBnc3RhdDo6aWR3KHByZWNpcGl0YWNpb25+MSwgUFstaSxdLCBuZXdkYXRhPWdyZCwgaWRwPTMuMCkKICBzdCA8LSBhZGRMYXllcihzdCxyYXN0ZXIoWjEsbGF5ZXI9MSkpICAgCiAgWmlbLGldIDwtIG4gKiBpbWckdmFyMS5wcmVkIC0gKG4tMSkgKiBaMSR2YXIxLnByZWR9CmBgYApTZSBjYWxjdWxhIGVsIGludGVydmFsbyBkZSBjb25maWFuemEKYGBge3Igd2FybmluZz1GQUxTRSAsIGVjaG89RkFMU0V9CiMgWmogPC0gYXMubWF0cml4KGFwcGx5KFppLCAxLCBzdW0sIG5hLnJtPVQpIC8gbiApCiMgYzEgPC0gYXBwbHkoWmksMiwnLScsWmopICAgICAgICAgICAgCiMgYzEgPC0gYXBwbHkoYzFeMiwgMSwgc3VtLCBuYS5ybT1UICkgCiNDSSA8LSBzcXJ0KCAxLyhuKihuLTEpKSAqIGMxKQpgYGAKU2UgY3JlYSB1biByYXN0ZXIgYSBwYXJ0aXIgZGVsIGludGVydmFsbyBkZSBjb25maWFuemEgeSBsYSBwcmVkaWNjacOzbiBkZSBsYSB2YXJpYWJsZQpgYGB7cn0KaW1nLnNpZyAgIDwtIGltZwppbWcuc2lnJHYgPC0gQ0kgL2ltZyR2YXIxLnByZWQgCmBgYApQb3N0ZXJpb3JtZW50ZSAsIHNlIHJlY29ydGEgZXN0ZSByw6FzdGVyIGEgbGEgZXh0ZW5zacOzbiBkZWwgZGVwYXJ0YW1lbnRvIGRlIFZpY2hhZGEKYGBge3J9CnIxIDwtIHJhc3RlcihpbWcuc2lnLCBsYXllcj0idiIpCnIubTEgPC0gcmFzdGVyOjptYXNrKHIxLCBWaWNoYWRhMikKYGBgClNlIHBsb3RlYSBlbCBtYXBhIGNvcnJlc3BvbmRpZW50ZSBhIGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YQpgYGB7cn0KdG1fc2hhcGUoci5tMSkgKyB0bV9yYXN0ZXIocGFsZXR0ZSA9ICJSZWRzIiAsIG49Nyx0aXRsZT0iSURXXG5JbnRlcnZhbG8gZGUgY29uZmlhbnphICg5NSUpIFxuKG1tKSIpICsKICB0bV9zaGFwZShQKSArIHRtX2RvdHMoc2l6ZT0wLjAyKSArCiAgCiAgdG1fbGVnZW5kKGxlZ2VuZC5vdXRzaWRlPVRSVUUpCmBgYAoKCgo=