2017-07-27 5 views
5

J'utilise le progiciel de prévision HoltWinters dans R pour générer des prévisions à partir de données de volume d'appels mensuels.R Paquet de prévisions HoltWinters - éviter les données de surajustement

Cela fonctionne bien la plupart du temps, mais a tendance à surcharger les données, en particulier s'il y a des périodes spéciales, par exemple un changement d'étape dans la demande d'appel.

Dans un exemple récent qui a un changement d'étape dans les ensembles intermédiaires alpha comme 0.94, bêta comme 0 et gamma comme 0, ce qui génère une prévision d'apparence étrange.

Month Data 
1 7082 
2 6407 
3 5479 
4 5480 
5 5896 
6 6038 
7 5686 
8 6126 
9 6280 
10 6893 
11 6028 
12 5496 
13 3569 
14 3383 
15 3718 
16 3351 
17 3340 
18 3559 
19 3722 
20 3201 
21 3494 
22 2810 
23 2611 
24 2471 
25 7756 
26 6922 
27 7593 
28 6716 
29 7278 
30 7071 

Ceci est le script de R que nous avons été en utilisant

scandata <-read_csv("525-gash.csv"); 
pages <-scandata[,2]; 
myts <-ts(pages , start=c(2015, 1), frequency = 12) 
myforecast <- HoltWinters (myts, seasonal ="additive", 
      optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1)); 
myholt = predict(myforecast, 12 , prediction.interval = FALSE); 
plot(myforecast,myholt); 

En comparaison si je définir les paramètres de lissage exponentiel à des valeurs standards acceptés - alpha 0,2, bêta 0,1 et gamma de 0,1, J'ai une meilleure prévision. Je voudrais toujours utiliser la partie adaptation automatique de la prévision, mais je voudrais mettre une gamme autour de alpha, bêta et gamma.

J'ai essayé de fixer des limites sur l'ajustement automatique de sorte que alpha doit être entre 0.1 et 0.5, gamma entre 0.1 et 0.3 et gamma entre 0.1 et 0.3.

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/HoltWinters.html

Il ressemble à ceci devrait être possible en réglant le

optim.control = list() 
fonction

mais je n'ai pas été en mesure de trouver un moyen de limites fixées avec succès sur alpha, bêta et gamma pour obtenir cette travail.

Est-ce que quelqu'un sait comment faire cela?

Répondre

2

Pour l'optimisation multiparamètre, HoltWinters utilise l'algorithme L-BFGS-B. Il est possible de définir les limites lower et upper pour tous les paramètres en ajustant la fonction originale HoltWinters.

fonction Edit:

fix(HoltWinters) 

par ligne changement de 66 à partir de:

enter image description here

à

enter image description here

Fermez la fenêtre et enregistrer les modifications (cela affectera cette session seulement). Exécutez le code comme vous l'avez déjà fait:

myforecast <- HoltWinters (myts, seasonal ="additive", 
     optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1)) 
+0

Cela semble prometteur. J'ai essayé ceci mais j'obtiens ce message d'erreur. Erreur dans hw (p [1L], p [2L], p [3L]): objet 'C_HoltWinters' pas trouvé – Jonty5817

+0

J'aurais dû ajouter que j'utilise Rstudio – Jonty5817

+0

J'ai eu une erreur similaire lorsque j'ai essayé de sauvegarder la fonction sous nom différent. Avez-vous essayé R Gui? – Lstat