2016-04-12 5 views
0

J'ai du mal à expliquer comment les prévisions sont calculées dans les prévisions de paquets R :: croston et tsintermittent :: crost. Je comprends le concept de croston, comme dans l'exemple posté ici (www.robjhyndman.com/papers/MASE.xls), mais la sortie des paquets R produit des résultats très différents.Méthode de Croston dans R contre Croston à la main

J'utilise les valeurs de l'exemple Excel (par R. Hyndman) dans le code suivant:

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 

Les prévisions de l'exemple Excel est 1,36, crost donne 1,58 et Croston donne 1,15. Pourquoi ne sont-ils pas les mêmes? Notez également que les valeurs dans l'échantillon (ajusté) sont très différentes.

Répondre

3

Pour crost dans le package tsintermittent vous avez besoin d'un deuxième drapeau de ne pas optimiser les valeurs initiales: init.opt = FALSE, de sorte que la commande doit être:

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

Le paramètre ne init = c (2,2) ne définira que les valeurs initiales de l'optimiseur. Notez également que les séries chronologiques que Rob Hyndman a dans son exemple, a deux valeurs supplémentaires dans le beggining (voir colonne B), alors x doit être:

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) 

L'exécution de ces deux commandes produit les mêmes valeurs que dans le exemple excel.

+0

Merci beaucoup Nikos! Les trois méthodes ont des résultats correspondants maintenant. Et, maintenant que je comprends ce qui se passe, je peux continuer à l'appliquer à mes données réelles (beaucoup plus complexes). – Paul