Это один из тех вопросов, для ответа на который, вероятно, есть миллион способов, которые сделают фактический ответ неуместным, но упрямство мешает...
При попытке понять применение временных рядов становится ясно, что удаление тренда данных делает прогнозирование будущих значений неправдоподобным. Например, используя набор данных gtemp
из пакета astsa
, необходимо учитывать тенденцию к росту в последние десятилетия:
Таким образом, я получаю модель ARIMA (правильную или неправильную) для данных без тренда, которая позволяет мне «прогнозировать» на 10 лет вперед:
fit = arima(gtemp, order = c(4, 1, 1))
pred = predict(fit, n.ahead = 10)
и оценщик тренда OLS, основанный на значениях с 1950 года:
gtemp1 = window(gtemp, start = 1950, end = 2009)
fit2 = lm(gtemp1 ~ I(1950:2009))
Проблема заключается в том, как использовать predict()
для получения оценочного значения для линейной части модели в следующие 10 лет.
Если я запускаю predict(fit2, data.frame(I(2010:2019)))
, я получаю 60 значений, которые я получил бы при запуске predict(fit2)
, плюс сообщение об ошибке: 'newdata' had 10 rows but variables found have 60 rows
.