Переносить другой метод прогнозирования в прогноз иерархических временных рядов в R?

У меня есть иерархический временной ряд, ряды нижнего уровня которого демонстрируют периодический спрос. Кажется выгодным использовать пакет Hyndman HTS для оптимального сочетания в иерархии. Также кажется выгодным использовать пакет MAPA Куренцеса для множественного агрегационного прогнозирования прерывистого спроса. По сути, я хочу сделать что-то вроде:

forecast(my_hts, method='comb', fmethod='MAPA')

Однако мне непонятно, могу ли я объединить их вместе, поскольку forecast.gts() принимает только fmethod=c("ets", "arima", "rw").

Есть ли умный способ передать forecast.gts() различные методы прогнозирования, не разрывая код?

Пример, поясняющий, что я имею в виду:

library(hts)
library(MAPA)
set.seed(1)

#note intermittent demand of bottom level time series
x <- ts(rpois(365, lambda=0.05), frequency=365, start=2014)
y <- ts(rpois(365, lambda=0.07), frequency=365, start=2014)

#it's easy to make a MAPA forecast for the top-level time series
#but this isn't an optimal hierarchical forecast
mapasimple(x+y)

#it's also easy to make this a HTS and make an optimal hierarchical forecast
#but now I cannot use MAPA
z <- hts(data.frame(x,y)))
z_arima <- forecast(z, fmethod="arima")
z_rw <- forecast(z, fmethod="rw")
z_ets <- forecast(z, fmethod="ets")

#z_MAPA <- ?

person user1569317    schedule 23.02.2015    source источник
comment
Спасибо, что добавили воспроизводимый пример. Теперь мы можем попытаться перенести это в Stack Overflow, где есть вопросы по программированию и на которые легко найти ответы.   -  person gung - Reinstate Monica    schedule 23.02.2015
comment
Я, очевидно, полагаюсь на вашу модерацию, но поскольку оба автора упомянутых пакетов (насколько мне известно) активны в CrossValidated, я подумал, что это лучшее место для публикации, чем общее SO.   -  person user1569317    schedule 23.02.2015
comment
Это было разумное предположение, @ user1569317, и это сложный и несколько спорный вопрос. На самом деле существует большая и активная группа пользователей R на SO (я думаю, больше, чем здесь). Мой критерий - это то, что нужно объяснить OP; если это статистическая концепция, Q принадлежит здесь, если так работает код, Q принадлежит SO. Я прочитал ваш вопрос о том, есть ли умный способ передать различные методы прогнозирования в прогноз.gts () без необходимости разрывать код?, А не как «как работает прогнозирование». Следовательно, я думаю, что SO более подходит. (Я также верю, что там у вас получится лучше / быстрее.)   -  person gung - Reinstate Monica    schedule 23.02.2015


Ответы (3)


Я публикую, потому что после более внимательного изучения документации hts (вставьте сюда заслуженный RTFM), я думаю, что нашел обходной путь, используя функцию combinef() из hts, которую можно использовать для оптимального комбинирования прогнозов вне среды forecast.gts() . Я оставлю это на некоторое время, прежде чем принять в качестве ответа, чтобы другие могли сказать мне, если я ошибаюсь.

fh <- 8

library(hts)
library(MAPA)
set.seed(1)

x <- ts(rpois(365, lambda=0.05), frequency=365, start=2014)
y <- ts(rpois(365, lambda=0.07), frequency=365, start=2014)

my_hts <- hts(data.frame(x,y))

ally <- aggts(my_hts)

allf <- matrix(NA, nrow = fh, ncol = ncol(ally))

for(i in 1:ncol(ally)){
    allf[,i] <- mapafor(ally[,i], 
                        mapaest(ally[,i], outplot=0), 
                        fh = fh, 
                        outplot=0)$outfor
}

allf <- ts(allf)

y.f <- combinef(allf, my_hts$nodes, weights=NULL, keep="bottom")

#here's what the non-reconciled, bottom-level MAPA forecasts look like
print(allf[1,1:2])

 Series 1   Series 2
1 0.1343304 0.06032574

#here's what the reconciled MAPA bottom-level forecasts look like
#notice that they're different
print(y.f[1,])

[1] 0.06030926 0.07402938
person user1569317    schedule 23.02.2015
comment
Мне это кажется совершенно правильным. (Я взял на себя смелость исправить несколько опечаток.) ​​Он должен работать в вашей системе с неизменными во времени прогнозами. Если ваши прогнозы меняются со временем (например, в зависимости от тенденций, сезонности или причинных факторов), вы можете столкнуться с проблемой, о которой я упоминал выше: ваши оптимальные прогнозы могут стать отрицательными. В противном случае отлично, +1! - person Stephan Kolassa; 24.02.2015

«Есть ли умный способ передать forecast.gts() различные методы прогнозирования, не разрывая код?» - Почти наверняка нет. forecast.gts() не позволяет подключать методы прогноза в соответствии со строками параметра family до glm() и т.п.

Скорее всего, проще всего будет выполнить прогнозы MAPA, а затем заново реализовать оптимальную комбинацию самостоятельно. На самом деле это не так уж и сложно, я сам делал это несколько раз, прежде чем появился пакет hts. Посмотрите ссылки в пакете hts; большинство из них доступны в виде препринтов на веб-сайте Роба Хайндмана.

Одна из ключевых проблем в сочетании подхода оптимального сочетания с прогнозированием периодического спроса состоит в том, что оптимальное сочетание вполне может дать отрицательные прогнозы. Они могут быть «оптимальными» в используемом здесь смысле GLS, но не имеют смысла для требований. Мое решение состояло в том, чтобы использовать pcls() в пакете mgcv для фактического согласования, чтобы ограничить решение (т.е. согласованные прогнозы нижнего уровня) неотрицательными.

person Stephan Kolassa    schedule 23.02.2015
comment
Спасибо за ответ. Не могли бы вы взглянуть на предлагаемое мной решение ниже? Если он недействителен, я приму ваш ответ. - person user1569317; 23.02.2015

В прошлом я успешно проводил небольшие эксперименты, используя прогнозы MAPA и combf. Точка зрения Стефана о негативных прогнозах остается под вопросом. Возможно, вам будет интересно изучить iMAPA в разделе tsintermittent пакет, специально разработанный для составления прогнозов временных рядов непостоянного спроса. В отличие от MAPA, который реализует метод Кростона, SBA и экспоненциальное сглаживание на выбор на различных уровнях временной агрегации.

Мне было бы очень интересно узнать больше о ваших результатах. Возможно, соответствующее исследование было представлено на прошлогодней ISF E. Spiliotis et al. Изучение влияния агрегации на точность прогноза по времени для иерархических временных рядов энергопотребления.

person Nikos Kourentzes    schedule 24.02.2015
comment
Спасибо за предупреждение - и iMAPA, и презентация выглядят очень многообещающими. Если я придумываю что-то интересное, я отправляю результаты по электронной почте. - person user1569317; 24.02.2015