使用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文章中为预测变量定义的那样.