Я использую метод timeslice
в функции trainControl
каретки для выполнения перекрестной проверки на модели временных рядов.Я заметил, что RMSE увеличивается с аргументом horizon
.
Я понимаю, что это может произойти по нескольким причинам, например, если прогнозируемые переменные прогнозируются и / или существует автокорреляция в данных, так что модель может лучше прогнозировать наблюдения ближе к дальнейшим наблюдениям.Тем не менее, я наблюдаю такое же поведение, даже когда ни один из них не является случаем (см. Приведенный ниже примерный воспроизводимый пример).
Может кто-нибудь объяснить, почему 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