Folosesc funcția HoltWinters în R și încerc să înțeleg ce reprezintă „coeficienții” în obiectul returnat de acea funcție. Nu par să se potrivească în vreun mod evident cu valorile returnate atunci când te uiți la $

Comentarii

  • Ai lăsat ceva pe sfârșitul întrebării dvs.?

Răspuns

+1 acest lucru este confuz. Dacă seria dvs. temporală are o lungime $ N $ și frecvența $ p $, atunci așa-numiții „coeficienți” (care pot fi accesați ca HW$coeff dacă HW este obiectul returnat de HoltWinters) sunt exact valorile $ a [N] $, $ b [N] $ și $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $ unde acestea sunt definite de formulele din pagina de ajutor Holt Winters, care poate fi accesată din R cu ?HoltWinters.

Pentru modelul aditiv, care este implicit, să presupunem că my.ts este un obiect de serie temporală cu frecvență pozitivă $ p $. Valorile $ a [N-1] $, $ b [N-1] $ și toate $ s mai vechi [t] $ până la $ s [Np] $ sunt date în tabelul HoltWinters(my.ts)$fitted. Valorile i n HoltWinters(my.ts)$coeff sunt calculate din acestea folosind formulele $$ a [t] = α (Y [t] – s [tp]) + (1-α) (a [t- 1] + b [t-1]) $$

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

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

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

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

Acest lucru funcționează pentru $ a $ și $ b $ (nivelul și tendința), dar când fac calculul pentru anotimpuri, obțin valori ușor diferite (în limita a 5%) decât sunt date în rezultat. Sper că cineva poate edita acest răspuns pentru a explica ce se întâmplă cu sezonurile. Iată un link către codul C pentru funcția hw care este apelată de funcția HoltWinters:

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

Răspuns

Semnificația parametrilor a, b, s, alfa, beta și gamma este descrisă în ajutorul funcției HoltWinters (încercați ?HoltWinters în R), sub Detalii .

de ex. modelul aditiv este descris astfel:

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] 

Dacă ne uităm la ajutor, unul dintre exemple este:

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

Cu ieșire:

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 

ieșirea parcelei (m)

ieșirea graficului (montat (m))

Acum să vedem ieșirea coeficienților de apel:

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 

Care corespund exact cu ieșirea acelorași cantități generate anterior.

Luând în considerare descrierea a, b, s, alpha, beta și gamma pe pagina de ajutor, ce părți nu vă sunt clare?

Comentarii

  • Ați putea spune care punct de timp sunt ” a ” și ” b ” reprezentând?

Răspuns

Sunt de acord că există puzzle. Pentru a vedea puzzle-ul am considerat seria CO2 disponibilă în R. Răspunsul este lung. Vă rog doar la partea * pe care am adăugat-o astăzi

M-am așteptat ca

co2HWBis$coefficients[2] 

să fie egal

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

adică coeff este egal cu ultima tendință extimată. Mai jos puteți verifica dacă acest lucru nu este cazul. Cu toate acestea,

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

este egal cu coeficientul pe care l-ați obține dacă renunțați la ultima valoare a seriei, așa cum este descompus mai jos. Bănuiesc că coeficientul este cumva „scris înainte”. În plus, mi se pare nedumeritor că problemele sunt diferite dacă permiteți estimarea beta.

Citesc codul sursă ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ), dar nu sunt încă sigur ce se întâmplă.

Acesta este codul complet

 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] 

* -part

… într-o noapte mai târziu, cred că pot da un răspuns care seamănă cu un răspuns. În opinia mea, problema este calendarul tabelului co2HW $ montat. Ultima linie nu este nivelul de tendință estimat și perioada de ultimă perioadă din eșantion. Coeficienții sunt nivelul estimat, tendința și evoluția ultimei perioade, dar aceste valori nu sunt afișate în tabel.Sper că următorul cod este convingător

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 

Comentarii

  • Bine ați venit pe site, sunteți dvs. poster original al întrebării? Acest lucru nu ‘ pare a fi un răspuns.
  • Mulțumesc @ user28623! Sunt de acord că există ceva de pește în legătură cu asta. De asemenea, am încercat să citesc codul sursă, dar ‘ nu am făcut progrese.
  • Am postat lucrurile cu CO2 și cred că am aflat ce se întâmplă. În primul rând, ultima valoare a co2HW$fitted[,3] nu este tendința estimată pentru ultima perioadă a eșantionului. Este tendința estimată cu o perioadă înainte de ultima perioadă. În al doilea rând, co2HW$coeff[2] este tendința ultimei perioade. În opinia mea, calendarul tabelului co2HW$fitted este înșelător.
  • @ user28623, vrei să spui co2HW$fitted[,1] din co2HW$fitted[,3]? și co2HW$fitted[,1] ar trebui să fie level, nu trend. Cred că răspunsul tău este cu adevărat util, dar un pic confuz

Răspuns

Cred că punctul cheie despre coeficienții, pe care nu i-am putut vedea în celelalte răspunsuri, dar poate că am ratat, este că sunt valorile nivelului neted și al tendinței netezite pentru ultima perioadă din seria temporală pe care s-a bazat / făcut prognoza; și componentele sezoniere netezite pentru ultimele 12 luni ale acelei serii temporale.

Înțelegerea tabelului valorilor ajustate pentru prognoză ajută, de asemenea. Pentru fiecare rând corespunzător timpului t, valorile nivelului și tendinței sunt valorile netezite pentru timpul t -1, iar valoarea sezonului este valoarea netedă pentru tp. Acestea sunt adăugate pentru a da nivelul real estimat pentru timpul t, Xhat.

Am început să folosesc R destul de recent, deci scuze dacă terminologia mea nu este pe deplin precisă.

Comentarii

  • Nu cred că ‘ nu cred că întrebarea este exprimată clar. După cum subliniază glen_b, este incomplet. Deoarece întrebarea este neclară, nu ‘ nu văd cum se poate da un răspuns.

Răspuns

Aceasta este din documentația HoltWinters din R. Am avut aceeași întrebare și acest lucru răspunde de ce nu am putut calcula aceleași valori sezoniere. Funcția utilizează o metodă de descompunere pentru a găsi toate valorile inițiale atunci când încorporează sezonalitatea, în timp ce pentru netezirea exponențială simplă și dublă nu face acest lucru.

„Pentru modelele sezoniere, începeți valorile pentru a, b și s sunt deduse prin efectuarea unei descompuneri simple în tendință și componentă sezonieră folosind medii mobile (vezi funcția descompune) la începutul perioadelor de început. perioadele inițiale (o regresie liniară simplă pe componenta de tendință este utilizată pentru nivelul de pornire și tendință). Pentru modelele de nivel / tendință (fără componentă sezonieră), valorile inițiale pentru a și b sunt x [2] și respectiv x [2] – x [1]. Pentru modelele numai la nivel (netezire exponențială obișnuită), valoarea de pornire pentru a este x [1]. „

Am găsit acest site web care explică cum se obțin valorile inițiale: https://robjhyndman.com/hyndsight/hw-initialization/

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *