可能有更好的方法,但是由于我是 R 新手并且已经设置了 IDW 代码,我一直在尝试通过调整 IDW 代码来获得 2000 米内所有点的中值,设置权重(idp ) 接近零,因此较近的点的权重与较远的点相同。
我猜当我用 maxdist=2000 运行下面的代码时它会说 NA 因为有些点在 2000 米内没有任何邻居。即使我将 nmin 设置为零,我可以让它使用的最小 maxdist 约为 40,000。
有没有办法告诉它忽略 2000 米内没有邻居的点,或者有人知道更好的方法吗?
这是我的代码:
library(gstat)
clean3145 = read.csv("clean3145.csv")
#Set up the k-fold validation
set.seed(88)
groups <- sample(1:5, nrow(clean3145), replace=TRUE)
#res=result=R=Pearson's correlation between predicted and actual arsenic concentration
MEDres<- rep(NA, 5)
r <- list()
for (k in 1:5) {
print(k)
flush.console()
train <- clean3145[groups!=k, ]
test <- clean3145[groups==k, ]
med <- gstat(formula = As1~1, locations = ~UTMNM+UTMEM, data=train, nmin=0, maxdist=40000, set=list(idp = .01))
medpred <- predict(med, test)$var1.pred
MEDres[k] <- cor(test$As1, medpred)
}
#Show the mean correlation for the 5 different training-test dataset pairs in K-fold validation
mean(MEDres)
谢谢你的帮助!