Как работает функция прогноза для auto.arima с экзогенными регрессорами? - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь подогнать модель динамической регрессии, используя auto.arima. У меня есть ежемесячные данные о потреблении газа (для отопления) по каждому потребителю (который я хочу предсказать) и набор регрессоров (например, дни градуса отопления, цена на газ, структурные манекены для определенных лет и сезонные манекены). У меня есть прогнозные значения для экзогенных регрессоров. Данные об использовании на одного клиента доступны с января 2005 года по март 2016 года, все остальные данные - с января 2005 года по декабрь 2021 года. Я пытаюсь прогнозировать использование на одного клиента для всех месяцев 2020 года. Я не уверен, как разделить мои данные между xreg в функции auto.arima и функции прогноза. Прогнозные значения, которые я в настоящее время даю, не совпадают с месяцем использования, например, апрельский прогноз использования на 2018 год для каждого клиента равен и практически равен фактическому использованию на январь 2005 года. Это не должно иметь место.

Я пытаюсь спрогнозировать использование газа для бытовых потребителей, используя модель динамической регрессии в пакете прогнозных данных. Я ссылался на онлайн-учебник профессора Роба Дж. Хиндмана https://otexts.com/fpp2/forecasting.html

#I generated the time series for the period for which the data is available (Jan 2005-Mar 2018)
Med_ros_upc.ts.test<-ts(Med_ros_upc.ts[,"ORMEDSCH410upc.r"], 
frequency    = 12, start = c(2005,1), end = c(2018,3))                        
#This is the set of external regressors including seasonal dummies(sd.ts)
xreg_Med<- cbind(Hdd = Med_ros_upc.ts[, "MEDHDD"],
             Hdd2 = Med_ros_upc.ts[, "MEDHDD2"],
             RPA = Med_ros_upc.ts[, "ORSCH410RPAt1.r"],  sd, 
             Jan2009, intdummf)
#I convert the xreg matrix into a time series. I use this in auto.arima
xreg_Med.ts<-ts(xreg_Med, frequency = 12, start = c(2005,1), 
end = c(2018,3))
#I generate a different xreg for forecast"
xreg_Med.ts1<-ts(xreg_Med, frequency = 12, start = c(2018,4),
 end = c(2021, 12))
fitdyn <- auto.arima(Med_ros_upc.ts.test, xreg =xreg_Med.ts)
fcast <- forecast(fitdyn , xreg = xreg_Med.ts1)

Ожидаемый результат Точечный прогноз
Январь 2005 111.19 Фев 2005 89.22 ... Апрель 2005 г. 53,86

Фактический результат Точка прогноза

апрель 2018 года 111,19 Май 2018 г. 89.22 ... Июнь 2018 53,86

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Спасибо!Вот что я сделал:

`fitdyn <- auto.arima(Med_ros_upc.ts[,"ORMEDSCH410upc.r"], xreg =xreg_Med, stationary= TRUE)`
`fit<-fitted(fitdyn)`
`fcast_fit<-forecast(fit, h=36, xreg= xreg_Med)`

Теперь у меня есть две отдельные таблицы, одна с подогнанными значениями и с прогнозом, и значения выглядят хорошо.

Тем не менее, я получаю это сообщение об ошибке:

Ошибка в etsmodel (y, errortype [i], тип тренда [j], тип сезона [k], демпфированный [l],: неиспользуемый аргумент (xreg = xreg_Med) Дополнительно: предупреждающее сообщение: In ets (object, lambda = lambda, biasadj = biasadj, allow.multiplicative.trend = allow.multiplicative.trend,: обнаружены пропущенные значения. Используется самая продолжительная непрерывная часть временисерия

Значит ли это, что полученный мной прогноз не учитывает внешние регрессоры?

0 голосов
/ 26 апреля 2019

Ваши данные о тренировках начинаются в январе 2005 года и заканчиваются в марте 2018 года. Таким образом, ваши прогнозы начинаются в апреле 2018 года. Прогнозы по определению являются будущими данными обучения.

...