2016-04-12 19 views
0

У меня возникли проблемы с тем, как рассчитываются прогнозы в прогнозе пакетов R: croston и tsintermittent :: crost. Я понимаю концепцию croston, например, в приведенном здесь примере (www.robjhyndman.com/papers/MASE.xls), но вывод из пакетов R дает очень разные результаты.Метод Croston в R vs. Croston вручную

Я использовал значение из примера Excel (Р. Гайндман) в следующем коде:

library (tsintermittent) 
library (forecast) 
x=c(0,1,0,11,0,0,0,0,2,0,6,3,0,0,0,0,0,7,0,0,0,0) # from Hyndman Excel example 
x_crost = crost(x,h=5, w=0.1, init = c(1,1)) # from the tsintermittent package 
x_croston=croston(x,h=5, alpha = 0.1) # from the forecast package 
x_croston$fitted 
y=data.frame(x,x_crost$frc.in,x_croston$fitted) 
y 
plot(x_croston) 
lines(x_croston$fitted, col="blue") 
lines(x_crost$frc.in,col="red") 
x_crost$initial 
x_crost$frc.out # forecast 
x_croston$mean # forecast 

Прогноз на примере Excel является 1,36, crost дает 1,58 и Croston дает 1.15. Почему они не то же самое? Также обратите внимание, что значения в образце (установлены) очень разные.

ответ

3

Для crost в пакете tsintermittent вам нужен второй флаг, чтобы не оптимизировать начальные значения: init.opt = FALSE, поэтому команда должна быть:

crost(x,w=0.1,init=c(2,2),init.opt=FALSE) 

Установка только инициализации = с (2,2) будет устанавливать только начальные значения для оптимизатора. отметить также, что временные ряды, что Роб Гайндман имеет в своем примере, имеют два дополнительных значение в самом начале (см столбца B), так что х должен быть:

x=c(0,2,0,1,0,11,0,0,0,0,2,0,6,3,0,0,0,0,0,7,0,0,0,0) 

этих две команд производит то же значение, что и в превосходный пример.

+0

Большое спасибо Nikos! Все три метода теперь имеют соответствующие результаты. И теперь, когда я понимаю, что происходит, я могу перейти, чтобы применить его к моим (гораздо более сложным) данным реального мира. – Paul