Käytän HoltWinters-funktiota R: ssä ja yritän ymmärtää, mitä ”kertoimet” edustavat objektissa, jonka funktio palauttaa. Ne eivät näytä vastaavan mitään ilmeistä tapaa, joka palasi, kun tarkastelette $
Kommentit
- Jättikö jotain kysymyksesi loppu?
Vastaa
+1 tämä on hämmentävää. Jos aikasarjan pituus on $ N $ ja taajuus $ p $, niin kutsutut ”kertoimet” (joita voidaan käyttää nimellä HW$coeff
, jos HW
on palautettu objekti HoltWinters
) ovat tarkalleen arvot $ a [N] $, $ b [N] $ ja $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $, missä nämä määritetään Holt Winters -ohjesivun kaavoilla, joihin pääsee R: stä ?HoltWinters
.
Oletusarvoisen additiivimallin osalta oletetaan, että my.ts
on aikasarjaobjekti, jonka taajuus on positiivinen $ p $. $ a [N-1] $, $: n arvot b [N-1] $ ja kaikki aikaisemmat $ s [t] $ – $ s [Np] $ on annettu taulukossa HoltWinters(my.ts)$fitted
. Arvot i n HoltWinters(my.ts)$coeff
lasketaan näistä käyttäen kaavoja $$ a [t] = α (Y [t] – s [tp]) + (1-α) (a [t- 1] + b [t-1]) $$
$$ b [t] = β (a [t] – a [t-1]) + (1-β) b [t- 1] $$
kanssa $ t = N $ ja $ \ alpha = $ HoltWinters(my.ts)$alpha
, $ \ beta = $ HoltWinters(my.ts)$beta
, ja
$$ s [t] = γ (Y [t] – a [t]) + (1-γ) s [tp] $$
$ t = N-p + 1, \ ldots, N $ ja $ \ alpha = $ HoltWinters(my.ts)$alpha
, $ \ beta = $ HoltWinters(my.ts)$beta
, ja $ \ gamma = $ HoltWinters(my.ts)$gamma
.
Tämä toimii $ a $: lla ja $ b $: lla (taso ja trendi), mutta kun teen laskutoimituksen kausiluontoisille saan hieman erilaiset arvot (noin 5%: n sisällä) kuin tuotoksessa ilmoitetaan. Toivon, että joku voi muokata tätä vastausta selittääkseen, mitä kausiluonteisilla tapahtumilla tapahtuu. Tässä on linkki hw
-funktion C-koodiin, jota kutsuu funktio HoltWinters
:
https://svn.r-project.org/R/trunk/src/library/stats/src/HoltWinters.c
Vastaa
a, b, s, alfa, beeta ja gamma-parametrien merkitys on kuvattu HoltWinters-toiminnon ohjeessa (kokeile ?HoltWinters
R: ssä) kohdassa Tiedot .
esim. additiivimalli on kuvattu siten:
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]
Jos tarkastelemme ohjetta, yksi esimerkkejä on:
(m <- HoltWinters(co2)) plot(m) plot(fitted(m))
Lähdöllä:
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
Tarkastellaan nyt kutsukertoimien lähtöä:
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
jotka vastaavat tarkalleen samojen määrien tuotosta kuin aikaisemmin.
Otetaan huomioon kohteen a
, b
, s
, alpha
, beta
ja gamma
ohjesivulla, mitkä osat ovat sinulle epäselviä?
Kommentit
- Voisitteko kertoa, mitkä ajankohdat ovat ” a ” ja ” b ” edustaa?
Vastaa
Olen samaa mieltä siitä, että pulmapeli on olemassa. Jos haluat nähdä palapelin, pidin Co2-sarjaa saatavana R.: ssä. Vastaus on pitkä. Toivotan teille vain tänään lisäämäni * -osan.
Olen odottanut, että
co2HWBis$coefficients[2]
on yhtä suuri
co2HW$fitted[length(co2HW$fitted[,3]),3]
ie kerroin on sama kuin viimeinen laajennettu trendi. Alla voit tarkistaa, että näin ei ole.
co2HW$fitted[length(co2HW$fitted[,3]),3]
on kuitenkin sama kerroin, jonka sait, jos pudotat sarjan viimeisen arvon, kuten alla on määritelty. Epäilen, että kerroin on jotenkin ”kirjoitettu eteenpäin”. Minusta on edelleen hämmentävää, että asiat ovat erilaiset, jos sallit beetan arvioinnin.
Luen lähdekoodia ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ), mutta en ole vielä varma, mitä tapahtuu.
Tämä on täydellinen koodi
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]
* -osa
… yhden yön myöhemmin luulen voivani antaa vastauksen näyttävän vastauksen. Mielestäni ongelmana on taulukon co2HW $ ajoitus. Viimeinen rivi ei ole otoksen viimeisen jakson arvioitu trenditaso ja saison. Kertoimet ovat arvioitu taso, trendi ja viimeinen jakso, mutta näitä arvoja ei näytetä taulukossa.Toivon, että seuraava koodi on vakuuttava
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
Kommentit
- Tervetuloa sivustolle, oletko alkuperäinen kysymyksen juliste? Tämä ei näytä olevan ’ vastausta.
- Kiitos @ user28623! Olen samaa mieltä siitä, että siinä on jotain hämärää. Yritin myös lukea lähdekoodin, mutta en edennyt ’.
- Lähetin CO2-jutut ja luulin, että tajusin, mitä on tekeillä. Ensinnäkin
co2HW$fitted[,3]
: n viimeinen arvo ei ole otoksen viimeisen jakson arvioitu suuntaus. Se on yhden jakson arvioitu kehitys edeltävää jaksoa edeltävänä aikana. Toiseksi,co2HW$coeff[2]
on viime kauden trendi. Mielestäni taulukonco2HW$fitted
taulukon ajoitus on harhaanjohtava. - @ user28623, tarkoitatko sen sijaan
co2HW$fitted[,1]
co2HW$fitted[,3]
? jaco2HW$fitted[,1]
oletetaan olevanlevel
, eitrend
. mielestäni vastauksestasi on todella hyötyä, mutta hieman hämmentävä
vastaus
Mielestäni kertoimet, joita en voinut nähdä muissa vastauksissa, mutta olen ehkä unohtanut, ovat ne, että ne ovat tasoitetun tason ja tasoitetun trendin arvot viimeisen ajanjakson ajalta, johon ennuste perustui / tehtiin; ja tasoitetut kausikomponentit kyseisen aikasarjan viimeisten 12 kuukauden ajalta.
Myös ennusteen sovitettujen arvojen taulukon ymmärtäminen auttaa. Jokaiselle ajalle t vastaavalle riville tason ja trendin arvot ovat tasoitettuja ajanjakson t arvoja. -1, ja kauden arvo on tasoitettu arvo tp: lle. Nämä lisätään antamaan arvioitu todellinen taso ajalle t, Xhat.
Olen alkanut käyttää R: tä vasta äskettäin, joten anteeksi, jos terminologiani ei ole täysin tarkka.
kommentit
- En usko ’ uskoa, että kysymys on selvästi esitetty. Kuten glen_b huomauttaa, se on epätäydellinen. Koska kysymys on epäselvä, en ’ näe, miten vastaus voidaan antaa.
Vastaa
Tämä on R: n HoltWinters-dokumentaatiosta. Minulla oli sama kysymys ja tämä vastasi siihen, miksi en voinut laskea samoja kausiarvoja. Funktio käyttää hajoamismenetelmää kaikkien lähtöarvojen löytämiseen, kun otetaan huomioon kausiluonteisuus, kun taas yhden ja kahden eksponentiaalisen tasoituksen tapauksessa se ei tee tätä.
”Kausimallien aloitusarvot a: lle, b: lle ja b: lle s päätellään suorittamalla yksinkertainen trendin ja kausikomponentin hajoaminen käyttämällä liikkuvia keskiarvoja (katso funktio hajoaa) alkamisjaksojen ensimmäisillä jaksoilla (lähtötasolle ja trendille käytetään trendikomponentin yksinkertaista lineaarista regressiota). Taso- / trendi-malleissa (ei kausikomponentteja) aloitusarvot a: lle ja b ovat x [2] ja x [2] – x [1]. Vain tasomalleissa (tavallinen eksponentiaalinen tasoitus) a: n alkuarvo on x [1]. ”
Löysi tämän sivuston, jossa kerrotaan, miten alkuarvot saadaan: https://robjhyndman.com/hyndsight/hw-initialization/