Jeg bruger HoltWinters-funktionen i R, og jeg prøver at forstå, hvad “koefficienterne” repræsenterer i det objekt, der returneres af denne funktion. De ser ikke ud til at matche på nogen indlysende måde de værdier, der returneres, når du ser på $
Kommentarer
- Har du efterladt noget på slutningen af dit spørgsmål?
Svar
+1 er dette forvirrende. Hvis din tidsserie har længden $ N $ og frekvens $ p $, så de såkaldte “koefficienter” (som kan tilgås som HW$coeff
hvis HW
er det returnerede objekt af HoltWinters
) er nøjagtigt værdierne $ a [N] $, $ b [N] $ og $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $ hvor disse er defineret af formlerne i Holt Winters hjælpeside, som du kan få adgang til inden for R med ?HoltWinters
.
Antag for additivmodellen, som er standard, at my.ts
er et tidsserieobjekt med positiv frekvens $ p $. Værdierne $ a [N-1] $, $ b [N-1] $ og alle de tidligere $ s [t] $ op til $ s [Np] $ er angivet i tabellen HoltWinters(my.ts)$fitted
. Værdierne i n HoltWinters(my.ts)$coeff
beregnes ud fra disse ved hjælp af formlerne $$ 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 $ (niveauet og trenden), men når jeg foretager beregningen for sæsonbetingelser får jeg lidt andre værdier (inden for 5% eller deromkring) end der er givet i output. Jeg håber, at nogen kan redigere dette svar for at forklare, hvad der foregår med sæsonbetingelserne. Her er et link til C-koden for hw
-funktionen, der kaldes til HoltWinters
-funktionen:
https://svn.r-project.org/R/trunk/src/library/stats/src/HoltWinters.c
Svar
Betydningen af parametre a, b, s, alfa, beta og gamma er beskrevet i hjælp til HoltWinters-funktionen (prøv ?HoltWinters
i R), under Detaljer .
f.eks. additivmodellen er beskrevet således:
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å hjælp, er et af eksemplerne:
(m <- HoltWinters(co2)) plot(m) plot(fitted(m))
Med output:
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
Lad os nu se på output af opkaldskoefficienter:
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
Hvilket svarer nøjagtigt til output af de samme mængder, der blev genereret før.
Under hensyntagen til beskrivelsen af a
, b
, s
, alpha
, beta
og gamma
på hjælpesiden, hvilke dele er uklare for dig?
Kommentarer
- Kunne du fortælle, hvilket tidspunkt er ” a ” og ” b ” repræsenterer?
Svar
Jeg er enig i, at der er puslespil. For at se puslespillet overvejede jeg co2-serien tilgængelig i R. Svaret er langt. Må du bare til den * -del, som jeg tilføjede i dag
Jeg har forventet, at
co2HWBis$coefficients[2]
er lig
co2HW$fitted[length(co2HW$fitted[,3]),3]
dvs. koeffen er lig med den sidst udvidede tendens. Nedenfor kan du kontrollere, at dette ikke er tilfældet. Dog
co2HW$fitted[length(co2HW$fitted[,3]),3]
er lig med koefficienten, du skulle opnå, hvis du taber den sidste værdi af serien, som deomestreret nedenfor. Jeg formoder, at koefficienten på en eller anden måde “skrives frem”. Jeg finder det desuden forvirrende, at tingene er forskellige, hvis du tillader, at beta estimeres.
Jeg læser kildekoden ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ), men jeg er endnu ikke sikker på, hvad der foregår.
Dette er den komplette kode
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 nat senere tror jeg, jeg kan give et svar, der ligner et svar. Efter min mening er problemet timingen af monteret bord co2HW $. Den sidste linje er ikke det estimerede trendniveau og saison for den sidste periode i stikprøven. Koefficienterne er det estimerede niveau, trend og saison for den sidste periode, men disse værdier vises ikke i tabellen.Jeg håber, at den 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 spørgsmålets originale plakat? Dette synes ikke at være ‘.
- Tak @ user28623! Jeg er enig i, at der er noget fishy ved det. Jeg forsøgte også at læse kildekoden, men ‘ gjorde ikke fremskridt.
- Jeg sendte co2-tingene, og jeg tror, jeg har fundet ud af, hvad der foregår. For det første er den sidste værdi af
co2HW$fitted[,3]
ikke den estimerede tendens for den sidste periode i prøven. Det er den estimerede tendens for en periode før den sidste periode. For det andet erco2HW$coeff[2]
tendensen i den sidste periode. Efter min mening er timingen af tabellen forco2HW$fitted
vildledende. - @ user28623, mener du
co2HW$fitted[,1]
i stedet afco2HW$fitted[,3]
? ogco2HW$fitted[,1]
formodes at værelevel
, ikketrend
. jeg synes dit svar er virkelig nyttigt, men lidt forvirrende
Svar
Jeg tror, at nøglepunktet ved koefficienter, som jeg ikke kunne se i de andre svar, men måske har gået glip af, er at de er værdierne for udjævnet niveau og udjævnet tendens for den sidste periode i den tidsserie, som prognosen var baseret på / lavet, og udjævnede sæsonbestemte komponenter i de sidste 12 måneder af den tidsserie.
Det hjælper også at forstå tabellen med tilpassede værdier til prognosen. For hver række, der svarer til tid t, er værdierne for niveau og trend de udjævnede værdier for tid t -1, og sæsonens værdi er den udjævnede værdi for tp. Disse tilføjes for at give det anslåede sande niveau for tid t, Xhat.
Jeg er kun begyndt at bruge R temmelig for nylig, så undskyld hvis min terminologi er ikke helt nøjagtig.
Kommentarer
- Jeg tror ikke ‘ Jeg synes ikke, spørgsmålet er klart angivet. Som glen_b påpeger, er det ufuldstændigt. Da spørgsmålet er uklart, ser jeg ikke ‘ hvordan et svar kan gives.
Svar
Dette er fra HoltWinters-dokumentationen i R. Jeg havde det samme spørgsmål, og dette svarer på, hvorfor jeg ikke kunne beregne de samme sæsonværdier. Funktionen bruger en nedbrydningsmetode til at finde alle de indledende værdier, når de inkorporerer sæsonbestemthed, mens det for enkelt og dobbelt eksponentiel udjævning ikke gør det.
“For sæsonmodeller skal du starte værdier for a, b og s udledes ved at udføre en simpel nedbrydning i trend og sæsonbestandig komponent ved hjælp af glidende gennemsnit (se funktionsnedbrydning) ved starten. perioder første perioder (en simpel lineær regression på trendkomponenten bruges til startniveau og trend). For niveau- / trendmodeller (ingen sæsonbestandig komponent) er startværdierne for a og b henholdsvis x [2] og x [2] – x [1]. For modeller kun på niveau (almindelig eksponentiel udjævning) er startværdien for a x [1]. “
Fundet dette websted, der forklarer, hvordan man får startværdier: https://robjhyndman.com/hyndsight/hw-initialization/