# 加载依赖包
if(!require(sp)) install.packages("sp")
if(!require(raster)) install.packages("raster")
if(!require(randomForest)) install.packages("randomForest")
if(!require(caret)) install.packages("caret")
if(!require(Metrics)) install.packages("Metrics")
# 加载测试数据样点和环境变量
data <- read.csv("Data.csv")
cov <- stack(list.files(pattern = ".tif$", all.files = T, full.names = F))
# 样点属性类型转换
data $YdProp<- as.numeric(as.character(data $YdProp))
# 转换为空间数据
data0 <- data
coordinates(data0 ) <- ~ lon +lat
# 给推测数据赋值环境变量,根据坐标点信息赋值
for(i in 1:length(cov@layers)) {
data0[, (4 + i)] <- extract(cov[[i]], data0 , method = 'simple')
colnames(data )[4 + i] <- names(cov)[i]
}
colnames(data )[4:(4+length(cov@layers))]
# 推测模型
set.seed(123)
smp<-sample(nrow(data ),nrow(data )*0.7)
train=data0[smp,-c(1:3)]
test=data0[-smp,-c(1:3)]
rfmodel=randomForest(YdProp~.,data=train,ntree=1500,mtry=3)
#用测试集R²计算
predictions=predict(rfmodel,newdata=test)
rc = cor(predictions,test$YdProp)^2
# 计算RMSE
rmse <- rmse(test$YdProp, predictions)