Używam funkcji HoltWintersa w R i I „próbuję zrozumieć, co reprezentują” współczynniki „w obiekcie zwracanym przez tę funkcję. Wydaje się, że nie pasują do wartości zwracanych w żaden oczywisty sposób, gdy patrzysz na $

Komentarze

  • Czy zostawiłeś coś w koniec twojego pytania?

Odpowiedz

+1 to jest mylące. Jeśli Twój szereg czasowy ma długość $ N $ i częstotliwość $ p $, a następnie tak zwane „współczynniki” (które są dostępne jako HW$coeff jeśli HW jest zwróconym obiektem przez HoltWinters) to dokładnie wartości $ a [N] $, $ b [N] $ i $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $, gdzie są one zdefiniowane przez formuły na stronie pomocy Holta Wintersa, do której można uzyskać dostęp z poziomu R za pomocą ?HoltWinters.

Dla modelu addytywnego, który jest domyślny, załóżmy, że my.ts jest obiektem szeregu czasowego o dodatniej częstotliwości $ p $. Wartości $ a [N-1] $, $ b [N-1] $ i wszystkie wcześniejsze $ s [t] $ aż do $ s [Np] $ podano w tabeli HoltWinters(my.ts)$fitted. Wartości i n HoltWinters(my.ts)$coeff są obliczane na podstawie wzorów $$ a [t] = α (Y [t] – s [tp]) + (1-α) (a [t- 1] + b [t-1]) $$

$$ b [t] = β (a [t] – a [t-1]) + (1-β) b [t- 1] $$

z $ t = N $ i $ \ alpha = $ HoltWinters(my.ts)$alpha, $ \ beta = $ HoltWinters(my.ts)$beta i

$$ s [t] = γ (Y [t] – a [t]) + (1-γ) s [tp] $$

z $ t = N-p + 1, \ ldots, N $ i $ \ alpha = $ HoltWinters(my.ts)$alpha, $ \ beta = $ HoltWinters(my.ts)$beta i $ \ gamma = $ HoltWinters(my.ts)$gamma.

Działa to dla $ a $ i $ b $ (poziom i trend), ale kiedy wykonuję obliczenia dla sezonów otrzymuję nieco inne wartości (w granicach około 5%) niż te podane w wyniku. Mam nadzieję, że ktoś może edytować tę odpowiedź, aby wyjaśnić, co się dzieje z sezonami. Oto link do kodu C funkcji hw, która jest wywoływana przez funkcję HoltWinters:

https://svn.r-project.org/R/trunk/src/library/stats/src/HoltWinters.c

Odpowiedź

Znaczenie parametrów a, b, s, alpha, beta i gamma jest opisane w pomocy do funkcji HoltWinters (spróbuj ?HoltWinters w R), w sekcji Szczegóły .

np. model addytywny jest opisany w następujący sposób:

Yhat[t+h] = a[t] + h * b[t] + s[t - p + 1 + (h - 1) mod p], where a[t], b[t] and s[t] are given by a[t] = α (Y[t] - s[t-p]) + (1-α) (a[t-1] + b[t-1]) b[t] = β (a[t] - a[t-1]) + (1-β) b[t-1] s[t] = γ (Y[t] - a[t]) + (1-γ) s[t-p] 

Jeśli spojrzymy na pomoc, jednym z przykładów jest:

(m <- HoltWinters(co2)) plot(m) plot(fitted(m)) 

Z wyjściem:

Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = co2) Smoothing parameters: alpha: 0.5126484 beta : 0.009497669 gamma: 0.4728868 Coefficients: [,1] a 364.7616237 b 0.1247438 s1 0.2215275 s2 0.9552801 s3 1.5984744 s4 2.8758029 s5 3.2820088 s6 2.4406990 s7 0.8969433 s8 -1.3796428 s9 -3.4112376 s10 -3.2570163 s11 -1.9134850 s12 -0.5844250 

wyjście wykresu (m)

wyjście wykresu (dopasowane (m))

Spójrzmy teraz na wynik wywoływania współczynników:

coefficients(m) a b s1 s2 s3 s4 364.7616237 0.1247438 0.2215275 0.9552801 1.5984744 2.8758029 s5 s6 s7 s8 s9 s10 3.2820088 2.4406990 0.8969433 -1.3796428 -3.4112376 -3.2570163 s11 s12 -1.9134850 -0.5844250 

Które dokładnie odpowiadają wynikom tych samych ilości wygenerowanych wcześniej.

Biorąc pod uwagę opis a, b, s, alpha, beta i gamma na stronie pomocy, które części są dla Ciebie niejasne?

Komentarze

  • Czy możesz powiedzieć, w którym punkcie czasowym są ” a ” i ” b ” reprezentujący?

Odpowiedź

Zgadzam się, że istnieje zagadka. Aby zobaczyć tę zagadkę, rozważyłem serię co2 dostępną w R. Odpowiedź jest długa. Oby tylko do * – części, którą dzisiaj dodałem

Spodziewałem się, że

co2HWBis$coefficients[2] 

równa się

co2HW$fitted[length(co2HW$fitted[,3]),3] 

ie Współczynnik jest równy ostatniemu szacowanemu trendowi. Poniżej możesz sprawdzić, czy tak nie jest. Jednak

co2HW$fitted[length(co2HW$fitted[,3]),3] 

równa się współczynnikowi, który miałbyś otrzymać, jeśli upuścisz ostatnią wartość serii, jak pokazano poniżej. Podejrzewam, że współczynnik jest w jakiś sposób „wypisany”. Co więcej, wydaje mi się to zastanawiające. Sprawy są inne, jeśli pozwolisz oszacować beta.

Czytam kod źródłowy ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ), ale nie jestem jeszcze pewien, co się dzieje.

To jest cały kod

 rm(list=ls()) co2HW = HoltWinters(co2, alpha = 0.2, gamma = 0.2, beta = 0.5) # co2HW$coeff[2] co2HW$fitted[length(co2HW$fitted[,3]),3] co2Bis = window(co2,end=c(1997,11)) co2HWBis = HoltWinters(co2Bis, alpha=0.2, gamma=0.2, beta=0.5) co2HWBis$coefficients[2] # co2HWBis$fitted[length(co2HWBis$fitted[,3])-1,3] co2HW$beta*(co2HW$fitted[length(co2HW$fitted[,2]),2] - co2HW$fitted[length(co2HW$fitted[,2])-1,2]) + (1 - co2HW$beta)*co2HW$fitted[length(co2HW$fitted[,3])-1,3] ##################### co2HW = HoltWinters(co2, alpha = 0.2, gamma = 0.2) # co2HW$coeff[2] co2HW$fitted[length(co2HW$fitted[,3]),3] co2Bis = window(co2,end=c(1997,11)) co2HWBis = HoltWinters(co2Bis, alpha=0.2, gamma=0.2) co2HWBis$coefficients[2] # co2HWBis$fitted[length(co2HWBis$fitted[,3])-1,3] co2HW$beta*(co2HW$fitted[length(co2HW$fitted[,2]),2] - co2HW$fitted[length(co2HW$fitted[,2])-1,2]) + (1 - co2HW$beta)*co2HW$fitted[length(co2HW$fitted[,3])-1,3] 

* -część

… jedną noc później myślę, że mogę udzielić odpowiedzi, która wygląda jak odpowiedź. Moim zdaniem problemem jest czas zamontowania stołu co2HW $. Ostatnia linia nie jest szacowanym poziomem trendu i sumą ostatniego okresu w próbie. Współczynniki to szacowany poziom, trend i odchylenie ostatniego okresu, ale te wartości nie są wyświetlane w tabeli.Mam nadzieję, że poniższy kod jest przekonujący.

rm(list=ls()) x = co2 m = HoltWinters(x) # m$fitted[length(m$fitted[,3]),3] aux1 = m$alpha*( x[length(x)] - m$fitted[length(m$fitted[,3]),4] ) + ( 1 - m$alpha )*( m$fitted[length(m$fitted[,3]),3] + m$fitted[length(m$fitted[,3]),2] ); aux1 m$coeff[1] aux2 = m$beta*(aux1 - m$fitted[length(m$fitted[,3]),2] ) + (1-m$beta)*m$fitted[length(m$fitted[,3]),3] aux2 m$coeff[2] m$coeff[14] aux3 = m$gamma*(x[length(x)] - aux1) + ( 1 - m$gamma )*m$fitted[length(m$fitted[,3]),4] aux3 

Komentarze

  • Witamy w witrynie, czy jesteś oryginalny plakat z pytaniem? To nie ' nie wygląda na odpowiedź.
  • Dzięki @ user28623! Zgadzam się, że jest w tym coś podejrzanego. Próbowałem też przeczytać kod źródłowy, ale nie ' nie zrobiłem postępów.
  • Opublikowałem informacje o CO2 i myślę, że zorientowałem się, co się dzieje. Po pierwsze, ostatnia wartość co2HW$fitted[,3] nie jest szacowanym trendem ostatniego okresu próby. Jest to szacowany trend jednego okresu przed tym ostatnim okresem. Po drugie, co2HW$coeff[2] to trend z ostatniego okresu. Moim zdaniem czas dla tabeli co2HW$fitted jest mylący.
  • @ user28623, czy masz na myśli zamiast tego co2HW$fitted[,1] z co2HW$fitted[,3]? a co2HW$fitted[,1] ma być level, a nie trend. myślę, że twoja odpowiedź jest bardzo pomocna, ale trochę zagmatwana

Odpowiedź

Myślę, że kluczowa kwestia współczynniki, których nie mogłem zobaczyć w innych odpowiedziach, ale mogłem ich przeoczyć, są takie, że są to wartości wygładzonego poziomu i wygładzonego trendu dla ostatniego okresu w szeregu czasowym, na którym oparto / sporządzono prognozę; dla ostatnich 12 miesięcy tego szeregu czasowego.

Zrozumienie tabeli dopasowanych wartości prognozy również pomaga. Dla każdego wiersza odpowiadającego czasowi t wartości poziomu i trendu są wygładzonymi wartościami dla czasu t -1, a wartość sezonu to wygładzona wartość tp. Są one dodawane, aby uzyskać szacunkowy prawdziwy poziom dla czasu t, Xhat.

Zacząłem używać R całkiem niedawno, więc przepraszam, jeśli moja terminologia nie jest w pełni dokładna.

Komentarze

  • Nie ' nie sądzę, że pytanie jest jasno określone. Jak wskazuje glen_b, jest on niekompletny. Ponieważ pytanie jest niejasne, nie ' nie rozumiem, jak można udzielić odpowiedzi.

Odpowiedź

To jest z dokumentacji HoltWinters w R. Miałem to samo pytanie i odpowiedź, dlaczego nie mogłem obliczyć tych samych wartości sezonowych. Funkcja korzysta z metody dekompozycji, aby znaleźć wszystkie wartości początkowe przy uwzględnieniu sezonowości, podczas gdy w przypadku wygładzania pojedynczego i podwójnego wykładniczego tego nie robi.

„W przypadku modeli sezonowych wartości początkowe a, b i s są wywnioskowane przez wykonanie prostej dekompozycji trendu i składnika sezonowego przy użyciu średnich ruchomych (patrz funkcja dekompozycji) na początku. okresy pierwsze okresy (prosta regresja liniowa na składniku trendu jest używana do określenia poziomu początkowego i trendu). W przypadku modeli poziomu / trendu (bez składnika sezonowego) wartości początkowe dla a i b wynoszą odpowiednio x [2] i x [2] – x [1]. W przypadku modeli obejmujących tylko poziom (zwykłe wygładzanie wykładnicze) wartością początkową a jest x [1]. ”

Znaleziono tę witrynę, która wyjaśnia, jak uzyskać wartości początkowe: https://robjhyndman.com/hyndsight/hw-initialization/

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *