Jeg bruker HoltWinters-funksjonen i R og jeg prøver å forstå hva «koeffisientene» representerer i objektet som returneres av den funksjonen. De ser ikke ut til å matche på noen åpenbar måte verdiene som returneres når du ser på $

Kommentarer

  • Har du sluppet noe på slutten på spørsmålet ditt?

Svar

+1 er dette forvirrende. Hvis tidsserien din har lengden $ N $ og frekvens $ p $, så de såkalte «koeffisientene» (som kan nås som HW$coeff hvis HW er gjenstanden som returneres av HoltWinters) er nøyaktig verdiene $ a [N] $, $ b [N] $ og $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $ der disse er definert av formlene på Holt Winters hjelpeside, som du kan få tilgang til fra R med ?HoltWinters.

For additivmodellen, som er standard, antar at my.ts er et tidsserieobjekt med positiv frekvens $ p $. Verdiene på $ a [N-1] $, $ b [N-1] $ og alle tidligere $ s [t] $ opp til $ s [Np] $ er gitt i tabellen HoltWinters(my.ts)$fitted. Verdiene i n HoltWinters(my.ts)$coeff beregnes ut fra disse ved hjelp av formlene $$ a [t] = α (Y [t] – s [tp]) + (1-α) (a [t- 1] + b [t-1]) $$

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

med $ t = N $ og $ \ alpha = $ HoltWinters(my.ts)$alpha, $ \ beta = $ HoltWinters(my.ts)$beta, og

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

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

Dette fungerer for $ a $ og $ b $ (nivå og trend), men når jeg gjør beregningen for sesongene får jeg litt andre verdier (innen 5% eller så) enn det som er gitt i produksjonen. Jeg håper noen kan redigere dette svaret for å forklare hva som skjer med sesongene. Her er en lenke til C-koden for hw -funksjonen som kalles av HoltWinters -funksjonen:

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

Svar

Betydningen av parametrene a, b, s, alfa, beta og gamma er beskrevet i hjelpen på HoltWinters-funksjonen (prøv ?HoltWinters i R), under Detaljer .

f.eks. tilsetningsmodellen er beskrevet slik:

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] 

Hvis vi ser på hjelpen, er et av eksemplene:

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

Med utdata:

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 

utgang av plot (m)

utgang av plott (montert (m))

La oss nå se på utdata fra anropskoeffisienter:

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 

Som tilsvarer utdataene fra de samme mengdene som ble generert før.

Med tanke på beskrivelsen av a, b, s, alpha, beta og gamma på hjelpesiden, hvilke deler er uklare for deg?

Kommentarer

  • Kan du fortelle hvilket tidspunkt er » a » og » b » representerer?

Svar

Jeg er enig i at det er puslespill. For å se puslespillet vurderte jeg co2-serien som er tilgjengelig i R. Svaret er langt. Kan du bare til * -delen som jeg la til i dag

Jeg har forventet at

co2HWBis$coefficients[2] 

tilsvarer

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

dvs. koeffen tilsvarer den siste utryddede trenden. Under kan du sjekke at dette ikke er tilfelle. Imidlertid er

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

lik koeffisient du skulle oppnå hvis du dropper den siste verdien av serien som deomestrert nedenfor. Jeg mistenker at koeffisienten på en eller annen måte er «skrevet frem». Jeg synes det er forvirrende at sakene er forskjellige hvis du lar estimere beta.

Jeg leser kildekoden ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ) men jeg er ikke sikker på hva som skjer ennå.

Dette er den fullstendige koden

 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] 

* -del

… en natt senere tror jeg at jeg kan gi et svar som ser ut som et svar. Etter min mening er problemet timingen for bordet co2HW $ montert. Den siste linjen er ikke estimert trendnivå og saison for den siste perioden i utvalget. Koeffisientene er estimert nivå, trend og sison for den siste perioden, men disse verdiene vises ikke i tabellen.Jeg håper følgende kode er overbevisende

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 

Kommentarer

  • Velkommen til siden, er du den original plakat av spørsmålet? Dette ser ikke ut til ‘.
  • Takk @ user28623! Jeg er enig i at det er noe fiskete ved det. Jeg prøvde også å lese kildekoden, men fikk ikke ‘ fremgang.
  • Jeg la ut co2-ting, og jeg tror jeg har funnet ut hva som skjer. For det første er ikke den siste verdien av co2HW$fitted[,3] den estimerte trenden for den siste perioden av prøven. Det er den estimerte trenden for en periode før den siste perioden. For det andre er co2HW$coeff[2] trenden i den siste perioden. Etter min mening er timingen av tabellen til co2HW$fitted misvisende.
  • @ user28623, mener du co2HW$fitted[,1] i stedet av co2HW$fitted[,3]? og co2HW$fitted[,1] skal være level, ikke trend. jeg synes svaret ditt er veldig nyttig, men litt forvirrende

Svar

Jeg tror det viktigste poenget med koeffisienter, som jeg ikke kunne se i de andre svarene, men som jeg kanskje har savnet, er at de er verdiene for utjevnet nivå og utjevnet trend for den siste perioden i tidsserien som prognosen var basert på / laget, og utjevnet sesongbestandige komponenter for de siste 12 månedene av den tidsserien.

Å forstå tabellen over tilpassede verdier for prognosen hjelper også. For hver rad som tilsvarer tid t er verdiene for nivå og trend de utjevnede verdiene for tid t -1, og sesongverdien er den utjevnede verdien for tp. Disse blir lagt til for å gi det estimerte sanne nivået for tid t, Xhat.

Jeg har bare begynt å bruke R ganske nylig, så beklager hvis min terminologi er ikke helt nøyaktig.

Kommentarer

  • Jeg tror ikke ‘ t tror spørsmålet er klart uttalt. Som glen_b påpeker er det ufullstendig. Siden spørsmålet er uklart, ser jeg ikke ‘ hvordan et svar kan gis.

Svar

Dette er fra HoltWinters-dokumentasjonen i R. Jeg hadde det samme spørsmålet og dette svarer på hvorfor jeg ikke kunne beregne de samme sesongverdiene. Funksjonen bruker en dekomponeringsmetode for å finne alle de opprinnelige verdiene når man innlemmer sesongmessighet, mens det for enkel og dobbel eksponensiell utjevning ikke gjør dette.

«For sesongmodeller, start verdier for a, b og s er utledet ved å utføre en enkel nedbrytning i trend og sesongkomponent ved bruk av glidende gjennomsnitt (se funksjonsnedbrytning) på starten. perioder første perioder (en enkel lineær regresjon på trendkomponenten brukes for startnivå og trend). For nivå- / trendmodeller (ingen sesongbestanddel) er startverdiene for a og b henholdsvis x [2] og x [2] – x [1]. For bare nivåmodeller (vanlig eksponentiell utjevning) er startverdien for a x [1]. «

Fant dette nettstedet som forklarer hvordan du får innledende verdier: https://robjhyndman.com/hyndsight/hw-initialization/

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *