2017-07-27 48 views
5

Korzystam z pakietu prognozy HoltWinters w R, aby generować prognozy z miesięcznych danych o rozmowach telefonicznych.Pakiet prognozy R HoltWinters - unikanie przeuczenia danych

Działa dobrze przez większość czasu, ale ma tendencję do nadpisywania danych, szczególnie jeśli istnieją specjalne okresy, na przykład skokowa zmiana popytu.

W ostatnim przykładzie, który ma skokową zmianę w środku, ustawia alfa jako 0.94, beta jako 0, a gamma jako 0, co generuje dziwną prognozę.

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 

ten scenariusz R że był używany

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); 

Dla porównania, jeśli zestaw wykładniczy parametry wygładzania standardowych wartości akceptowanych - alfa, a 0,2, beta jako 0.1 i gamma jako 0,1, Dostaję znacznie lepiej wyglądającą prognozę.

Nadal chciałbym użyć części dopasowania automatycznego prognozy, ale chciałbym ustawić zakres wokół alfa, beta i gamma.

Próbowałem ustalić granice automatycznego dopasowania, tak aby wartość alfa wynosiła od 0,1 do 0,5, gamma od 0,1 do 0,3, a gamma od 0,1 do 0,3.

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

Wygląda to tak powinno być możliwe poprzez ustawienie funkcji

optim.control = list() 

ale nie udało się znaleźć sposób, aby z powodzeniem ustawić limity alfa, beta i gamma, aby to pracujący.

Czy ktoś wie, jak to zrobić?

Odpowiedz

2

Do optymalizacji wielu parametrów HoltWinters wykorzystuje algorytm L-BFGS-B. Możliwe jest ustawienie limitów lower i upper dla wszystkich parametrów poprzez dostosowanie oryginalnej funkcji HoltWinters.

Edit funkcja:

fix(HoltWinters) 

zmieniając linię 66 z:

enter image description here

do

enter image description here

zamknąć okno i zapisać zmiany (to wpłynie to tylko sesja). Uruchom kod tak jak wcześniej:

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

Wygląda obiecująco. Próbowałem tego, ale pojawia się ten komunikat o błędzie. Błąd w hw (p [1L], p [2L], p [3L]): obiekt "C_HoltWinters" nie został znaleziony – Jonty5817

+0

Powinienem dodać, że używam Rstudio – Jonty5817

+0

Mam podobny błąd, gdy próbowałem zapisać funkcję pod inna nazwa. Czy próbowałeś już R Gui? – Lstat