Pasos para el mapa de Ajuste polinomial de segundo orden
f.2 <- as.formula(rainfall ~ X + y + I(X*X)+I(y*y) + I(X*y))
# Add X and Y to P
P$X <- coordinates(P)[,1]
P$y <- coordinates(P)[,2]
# Run the regression model
lm.2 <- lm( f.2, data=P)
# Use the regression model output to interpolate the surface
dat.2nd <- SpatialGridDataFrame(grd, data.frame(var1.pred = predict(lm.2, newdata=grd)))
r <- raster(dat.2nd)
r.m <- raster::mask(r, Magdal)
# Plot the map
tm_shape(r.m) +
tm_raster(n=10, palette="RdBu", auto.palette.mapping=FALSE,midpoint = NA,
title="2nd order polinomial fit\nPredicted precipitation \n(in mm)") +
tm_shape(P) + tm_dots(size=0.09) +
tm_legend(legend.outside=TRUE)

sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=Spanish_Colombia.1252
[2] LC_CTYPE=Spanish_Colombia.1252
[3] LC_MONETARY=Spanish_Colombia.1252
[4] LC_NUMERIC=C
[5] LC_TIME=Spanish_Colombia.1252
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
other attached packages:
[1] forcats_0.5.0 stringr_1.4.0 dplyr_1.0.0
[4] purrr_0.3.4 readr_1.3.1 tidyr_1.1.0
[7] tibble_3.0.1 ggplot2_3.3.1 tidyverse_1.3.0
[10] sf_0.9-3 rgdal_1.5-8 RColorBrewer_1.1-2
[13] leaflet_2.0.3 tmap_3.0 raster_3.1-5
[16] sp_1.4-2 gstat_2.0-6
loaded via a namespace (and not attached):
[1] nlme_3.1-144 fs_1.4.1 xts_0.12-0
[4] lubridate_1.7.8 httr_1.4.1 tools_3.6.3
[7] backports_1.1.7 R6_2.4.1 KernSmooth_2.23-16
[10] DBI_1.1.0 colorspace_1.4-1 withr_2.2.0
[13] tidyselect_1.1.0 compiler_3.6.3 leafem_0.1.1
[16] cli_2.0.2 rvest_0.3.5 xml2_1.2.5
[19] scales_1.1.1 classInt_0.4-3 digest_0.6.25
[22] rmarkdown_2.1 base64enc_0.1-3 dichromat_2.0-0
[25] pkgconfig_2.0.3 htmltools_0.4.0 dbplyr_1.4.4
[28] htmlwidgets_1.5.1 rlang_0.4.6 readxl_1.3.1
[31] rstudioapi_0.11 FNN_1.1.3 generics_0.0.2
[34] farver_2.0.3 zoo_1.8-8 jsonlite_1.6.1
[37] crosstalk_1.1.0.1 magrittr_1.5 Rcpp_1.0.4.6
[40] munsell_0.5.0 fansi_0.4.1 abind_1.4-5
[43] lifecycle_0.2.0 stringi_1.4.6 leafsync_0.1.0
[46] yaml_2.2.1 tmaptools_3.0 grid_3.6.3
[49] blob_1.2.1 parallel_3.6.3 crayon_1.3.4
[52] lattice_0.20-38 stars_0.4-1 haven_2.3.0
[55] hms_0.5.3 knitr_1.28 pillar_1.4.4
[58] spacetime_1.2-3 codetools_0.2-16 reprex_0.3.0
[61] XML_3.99-0.3 glue_1.4.1 evaluate_0.14
[64] modelr_0.1.8 png_0.1-7 vctrs_0.3.0
[67] cellranger_1.1.0 gtable_0.3.0 assertthat_0.2.1
[70] xfun_0.14 lwgeom_0.2-4 broom_0.5.6
[73] e1071_1.7-3 rsconnect_0.8.16 class_7.3-15
[76] viridisLite_0.3.0 intervals_0.15.2 units_0.6-6
[79] ellipsis_0.3.1
LS0tDQp0aXRsZTogIkFuZXhvXzQiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMgUGFzb3MgcGFyYSBlbCBtYXBhIGRlIEFqdXN0ZSBwb2xpbm9taWFsIGRlIHNlZ3VuZG8gb3JkZW4NCg0KYGBge3Igd2FybmluZz1GQUxTRX0NCmYuMiA8LSBhcy5mb3JtdWxhKHJhaW5mYWxsIH4gWCArIHkgKyBJKFgqWCkrSSh5KnkpICsgSShYKnkpKQ0KDQpQJFggPC0gY29vcmRpbmF0ZXMoUClbLDFdDQpQJHkgPC0gY29vcmRpbmF0ZXMoUClbLDJdDQogDQpsbS4yIDwtIGxtKCBmLjIsIGRhdGE9UCkNCg0KZGF0LjJuZCA8LSBTcGF0aWFsR3JpZERhdGFGcmFtZShncmQsIGRhdGEuZnJhbWUodmFyMS5wcmVkID0gcHJlZGljdChsbS4yLCBuZXdkYXRhPWdyZCkpKSANCmBgYA0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFfQ0KciAgIDwtIHJhc3RlcihkYXQuMm5kKQ0Kci5tIDwtIHJhc3Rlcjo6bWFzayhyLCBNYWdkYWwpDQoNCnRtX3NoYXBlKHIubSkgKyANCiAgdG1fcmFzdGVyKG49MTAsIHBhbGV0dGU9IlJkQnUiLCBhdXRvLnBhbGV0dGUubWFwcGluZz1GQUxTRSxtaWRwb2ludCA9IE5BLA0KICAgICAgICAgICAgdGl0bGU9IjJuZCBvcmRlciBwb2xpbm9taWFsIGZpdFxuUHJlZGljdGVkIHByZWNpcGl0YXRpb24gXG4oaW4gbW0pIikgKw0KICB0bV9zaGFwZShQKSArIHRtX2RvdHMoc2l6ZT0wLjA5KSArDQogIHRtX2xlZ2VuZChsZWdlbmQub3V0c2lkZT1UUlVFKQ0KYGBgDQoNCg0KYGBge3J9DQpzZXNzaW9uSW5mbygpDQpgYGA=