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=