Ajuste polinomial de primer grado
train_index <- sample(1:nrow(precip2), 0.7 * nrow(precip2))
test_index <- setdiff(1:nrow(precip2), train_index)
ptos_train <- precip2[train_index, ]
ptos_test <- precip2[test_index,]
P <- ptos_train
f.1 <- as.formula(rain ~ X + Y)
P$X <- coordinates(P)[,1]
P$Y <- coordinates(P)[,2]
lm.1 <- lm( f.1, data=P)
dat.1st <- SpatialGridDataFrame(grd, data.frame(var1.pred = predict(lm.1, newdata=grd)))
r <- raster(dat.1st)
r.m1 <- raster::mask(r, valle2)
tm_shape(r.m1) +
tm_raster(n=10, palette="RdBu", midpoint = 43,
title="Interpolación con polinomio de 1er orden \n para precipitacion \n(mm)") +
tm_shape(P) + tm_dots(size=0.02) +
tm_legend(legend.outside=TRUE)

Ajuste polinomial de segundo grado
f.2 <- as.formula(rain ~ X + Y + I(X*X)+I(Y*Y) + I(X*Y))
P$X <- coordinates(P)[,1]
P$Y <- coordinates(P)[,2]
lm.2 <- lm( f.2, data=P)
dat.2nd <- SpatialGridDataFrame(grd, data.frame(var1.pred = predict(lm.2, newdata=grd)))
r <- raster(dat.2nd)
r.m <- raster::mask(r, valle2)
tm_shape(r.m) +
tm_raster(n=10, palette="RdBu", auto.palette.mapping=FALSE,midpoint = NA,
title="Interpolación con polinomio de 2do orden \n para precipitacion \n(mm)") +
tm_shape(P) + tm_dots(size=0.02, col="white") +
tm_legend(legend.outside=TRUE)
Warning: The argument auto.palette.mapping is deprecated. Please use midpoint for numeric data and stretch.palette for categorical data to control the palette mapping.

LS0tDQp0aXRsZTogIkFuZXhvIDU6IEFqdXN0ZXMgcG9saW5vbWlhbGVzIg0KYXV0aG9yOiBMdWlzYSBGZXJuYW5kYSBDYXJyacOzbiBSYW3DrXJleiB5IE1pZ3VlbCBTYW50aWFnbyBNb3JhbGVzIFJ1w616DQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMgQWp1c3RlIHBvbGlub21pYWwgZGUgcHJpbWVyIGdyYWRvDQoNCmBgYHtyfQ0KdHJhaW5faW5kZXggPC0gc2FtcGxlKDE6bnJvdyhwcmVjaXAyKSwgMC43ICogbnJvdyhwcmVjaXAyKSkNCnRlc3RfaW5kZXggPC0gc2V0ZGlmZigxOm5yb3cocHJlY2lwMiksIHRyYWluX2luZGV4KQ0KcHRvc190cmFpbiA8LSBwcmVjaXAyW3RyYWluX2luZGV4LCBdDQpwdG9zX3Rlc3QgIDwtIHByZWNpcDJbdGVzdF9pbmRleCxdDQpQIDwtIHB0b3NfdHJhaW4NCmBgYA0KDQpgYGB7cn0NCmYuMSA8LSBhcy5mb3JtdWxhKHJhaW4gfiBYICsgWSkgDQpgYGANCg0KYGBge3J9DQpQJFggPC0gY29vcmRpbmF0ZXMoUClbLDFdDQpQJFkgPC0gY29vcmRpbmF0ZXMoUClbLDJdDQpgYGANCg0KYGBge3J9DQpsbS4xIDwtIGxtKCBmLjEsIGRhdGE9UCkNCmBgYA0KDQpgYGB7cn0NCmRhdC4xc3QgPC0gU3BhdGlhbEdyaWREYXRhRnJhbWUoZ3JkLCBkYXRhLmZyYW1lKHZhcjEucHJlZCA9IHByZWRpY3QobG0uMSwgbmV3ZGF0YT1ncmQpKSkNCmBgYA0KDQpgYGB7cn0NCnIgICA8LSByYXN0ZXIoZGF0LjFzdCkNCnIubTEgPC0gcmFzdGVyOjptYXNrKHIsIHZhbGxlMikNCmBgYA0KDQoNCmBgYHtyfQ0KdG1fc2hhcGUoci5tMSkgKyANCiAgdG1fcmFzdGVyKG49MTAsIHBhbGV0dGU9IlJkQnUiLCBtaWRwb2ludCA9IDQzLCANCiAgICAgICAgICAgIHRpdGxlPSJJbnRlcnBvbGFjacOzbiBjb24gcG9saW5vbWlvIGRlIDFlciBvcmRlbiBcbiBwYXJhIHByZWNpcGl0YWNpb24gXG4obW0pIikgKw0KICB0bV9zaGFwZShQKSArIHRtX2RvdHMoc2l6ZT0wLjAyKSArDQogIHRtX2xlZ2VuZChsZWdlbmQub3V0c2lkZT1UUlVFKQ0KYGBgDQoNCiMjIyBBanVzdGUgcG9saW5vbWlhbCBkZSBzZWd1bmRvIGdyYWRvDQoNCmBgYHtyfQ0KZi4yIDwtIGFzLmZvcm11bGEocmFpbiB+IFggKyBZICsgSShYKlgpK0koWSpZKSArIEkoWCpZKSkNCg0KUCRYIDwtIGNvb3JkaW5hdGVzKFApWywxXQ0KUCRZIDwtIGNvb3JkaW5hdGVzKFApWywyXQ0KIA0KbG0uMiA8LSBsbSggZi4yLCBkYXRhPVApDQoNCmRhdC4ybmQgPC0gU3BhdGlhbEdyaWREYXRhRnJhbWUoZ3JkLCBkYXRhLmZyYW1lKHZhcjEucHJlZCA9IHByZWRpY3QobG0uMiwgbmV3ZGF0YT1ncmQpKSkgDQpgYGANCg0KDQpgYGB7cn0NCg0KciAgIDwtIHJhc3RlcihkYXQuMm5kKQ0Kci5tIDwtIHJhc3Rlcjo6bWFzayhyLCB2YWxsZTIpDQoNCg0KdG1fc2hhcGUoci5tKSArIA0KICB0bV9yYXN0ZXIobj0xMCwgcGFsZXR0ZT0iUmRCdSIsIGF1dG8ucGFsZXR0ZS5tYXBwaW5nPUZBTFNFLG1pZHBvaW50ID0gTkEsDQogICAgICAgICAgICB0aXRsZT0iSW50ZXJwb2xhY2nDs24gY29uIHBvbGlub21pbyBkZSAyZG8gb3JkZW4gXG4gcGFyYSBwcmVjaXBpdGFjaW9uIFxuKG1tKSIpICsNCiAgdG1fc2hhcGUoUCkgKyB0bV9kb3RzKHNpemU9MC4wMiwgY29sPSJ3aGl0ZSIpICsNCiAgdG1fbGVnZW5kKGxlZ2VuZC5vdXRzaWRlPVRSVUUpDQpgYGANCg0K