为什么在插入符号的trainControl函数中使用时间片方法时,RMSE随时间增加?

时间:2019-06-24 01:23:51

标签: r-caret forecasting

我在插入符号的timeslice函数中使用trainControl方法对时间序列模型执行交叉验证。我注意到,随着horizon参数的增加,RMSE也会增加。

我意识到,这可能由于多种原因而发生,例如,如果正在预测解释变量和/或数据中存在自相关,则该模型可以更好地预测较近或较远的观测值。但是,即使情况并非如此,我仍然看到相同的行为(请参见下面的可重现的小示例)。

有人能解释为什么RSME随着horizon的增长而增长吗?

# Make data
X = data.frame(matrix(rnorm(1000 * 3), ncol = 3))
X$y = rowSums(X) + rnorm(nrow(X))

# Iterate over different different forecast horizons and record RMSES
library(caret)
forecast_horizons = c(1, 3, 10, 50, 100)
rmses = numeric(length(forecast_horizons))
for (i in 1:length(forecast_horizons)) {
  ctrl = trainControl(method = 'timeslice', initialWindow = 500, horizon = forecast_horizons[i], fixedWindow = T) 
  rmses[i] = train(y ~ ., data = X, method = 'lm', trControl = ctrl)$results$RMSE
}
print(rmses) #0.7859786 0.9132649 0.9720110 0.9837384 0.9849005

0 个答案:

没有答案