R多元化提前一步预测和准确性

使用R我想比较两个预测模型的RMSE(均方根误差).第一个模型使用1966年至2000年的估计来预测2001年,然后使用1966年至2001年的估计数来预测2002年等等到2015年.第二个模型使用1991年至2000年的估计数来预测2001年,然后使用1992年至2001年的估计数预测到2002年等等到2015年.这个问题让我真的很难过,我真的很感激任何帮助.

DF <- data.frame(YEAR=1966:2015, TEMP=rnorm(50), PRESSURE=rnorm(50), RAINFALL=rnorm(50))

lmod <- lm(TEMP ~ PRESSURE + RAINFALL, data = DF)

rmse <- function(error) sqrt(mean(error^2))

rmse(lmod$residuals)

最佳答案 你可以循环它:

方法1:

pred1<-numeric(0)
rmse1<-numeric(0)

for(i in 1:15){

DF.train1<-DF[DF$YEAR < 2000+i,]
DF.test1<-DF[DF$YEAR == 2000+i,]
lmod1 <- lm(TEMP ~ PRESSURE + RAINFALL, data = DF.train1)
pred1[i]<- predict(lmod1, newdata = DF.test1)
rmse1[i]<-sqrt(mean((DF.test1$TEMP-pred1[i])^2))
}

pred1
rmse1  
mean(rmse1)  

方法2:

pred2<-numeric(0)
rmse2<-numeric(0)

for(i in 1:15){

DF.train2<-DF[DF$YEAR < 2000+i & DF$YEAR > 1989+i,]
DF.test2<-DF[DF$YEAR == 2000+i,]
lmod2 <- lm(TEMP ~ PRESSURE + RAINFALL, data = DF.train2)
pred2[i]<- predict(lmod2, newdata = DF.test2)
rmse2[i]<-sqrt(mean((DF.test2$TEMP-pred2[i])^2))
} 

pred2
rmse2  
mean(rmse2) 

比较rmse1和rmse2的各个组成部分以及它们各自的方法应该是有用的.向量pred1和pred2包含各自方法的每年(2001-2015)的单独TEMP预测.

编辑:现在应该工作,方法2训练10年的差距.此外,我将RMSE作为MSE的平方根,如this文章中为预测变量定义的那样.

点赞