A HoltWinters függvényt használom R-ben, és megpróbálom megérteni, hogy az “együtthatók” mit jelentenek abban az objektumban, amelyet az adott függvény ad vissza. Úgy tűnik, hogy ezek semmilyen nyilvánvaló módon nem egyeznek a visszaadott értékekkel, amikor megnézzük a $
Megjegyzések
- Hagyott-e valamit a kérdésének vége?
Válasz
+1 ez zavaró. Ha az idősorod hossza $ N $ és $ p $ gyakoriság, akkor az úgynevezett “együtthatók” (amelyek HW$coeff
néven érhetők el, ha a HW
az objektum (HoltWinters
) pontosan a $ a [N] $, $ b [N] $ és $ s [N-p + 1] $, $ s [N-p + 2], \ cdots s [N] $, ahol ezeket a Holt Winters súgó oldalán található képletek határozzák meg, amelyekhez R belülről a ?HoltWinters
segítségével lehet hozzáférni.
Az alapértelmezett additív modellnél tegyük fel, hogy a my.ts
egy idősoros objektum, amelynek pozitív gyakorisága $ p $. $ a [N-1] $, $ értékek b [N-1] $ és az összes korábbi $ s [t] $, legfeljebb $ s [Np] $, a HoltWinters(my.ts)$fitted
táblázatban találhatók. n HoltWinters(my.ts)$coeff
ezekből kiszámolva a $$ a [t] = α (Y [t] – s [tp]) + (1-α) (a [t- 1] + b [t-1]) $$
$$ b [t] = β (a [t] – a [t-1]) + (1-β) b [t- 1] $$
a következővel: $ t = N $ és $ \ alpha = $ HoltWinters(my.ts)$alpha
, $ \ beta = $ HoltWinters(my.ts)$beta
, és
$$ s [t] = γ (Y [t] – a [t]) + (1-γ) s [tp] $$
$ t = N-p + 1, \ ldots, N $ és $ \ alpha = $ HoltWinters(my.ts)$alpha
, $ \ beta = $ HoltWinters(my.ts)$beta
, és $ \ gamma = $ HoltWinters(my.ts)$gamma
.
Ez a $ a $ és $ b $ (szint és trend) esetén működik, de amikor elvégzem a számítást a szezonálisok esetében kissé más értékeket kapok (kb. 5% -on belül), mint amit a kimenet megad. Remélem, hogy valaki szerkesztheti ezt a választ, hogy elmagyarázza, mi folyik az évszakokkal. Itt található egy link a hw
függvény C-kódjára, amelyet a HoltWinters
függvény hív meg:
https://svn.r-project.org/R/trunk/src/library/stats/src/HoltWinters.c
Válasz
Az a, b, s, alfa, béta és gamma paraméterek jelentését a HoltWinters függvény súgója írja le (próbálkozzon ?HoltWinters
R-ben), Részletek .
pl az additív modell így van leírva:
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]
Ha megnézzük a súgót, az egyik példa:
(m <- HoltWinters(co2)) plot(m) plot(fitted(m))
Kimenettel:
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
Most nézzük meg a hívási együtthatók kimenetét:
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
amelyek pontosan megegyeznek a korábban generált azonos mennyiségek kimenetével.
Figyelembe véve a a
, b
, s
, alpha
, beta
és gamma
a súgó oldalon, mely részek nem világosak az Ön számára?
Megjegyzések
- Meg tudná mondani, melyik időpont ” a ” és ” b ” képviseli?
Válasz
Egyetértek azzal, hogy van rejtvény. A rejtvény megtekintéséhez úgy gondoltam, hogy a co2 sorozat elérhető az R-ben. A válasz hosszú. Csak a * -részhez, amelyet ma hozzáadtam
Arra számítottam, hogy
co2HWBis$coefficients[2]
egyenlő
co2HW$fitted[length(co2HW$fitted[,3]),3]
ie a coeff megegyezik az utoljára kiterjesztett trenddel. Az alábbiakban ellenőrizheti, hogy nem erről van-e szó. Azonban
co2HW$fitted[length(co2HW$fitted[,3]),3]
megegyezik az együtthatóval, amelyet akkor kellett elérnie, ha eldobja a sorozat utolsó értékét, ahogy az alábbiakban le van írva. Gyanítom, hogy az együtthatót valahogy “előre írják”. Továbbá zavarónak találom a kérdéseket, ha a béta becslését engedélyezzük.
Olvasom a forráskódot ( http://svn.r-project.org/R/trunk/src/library/stats/R/HoltWinters.R ), de még nem tudom biztosan, mi történik.
Ez a teljes kód
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]
* -rész
… egy éjjel később azt hiszem, hogy választ tudok adni. Véleményem szerint a probléma a co2HW $ asztal időzítése. Az utolsó sor nem a minta utolsó periódusának becsült trendszintje és saisonja. Az együtthatók az utolsó periódus becsült szintje, trendje és saisonja, de ezek az értékek nem szerepelnek a táblázatban.Remélem, hogy a következő kód meggyőző
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
Megjegyzések
- Üdvözöljük a webhelyen, te vagy eredeti poszter a kérdésről? Ez nem úgy tűnik, hogy ‘ válasz.
- Köszönöm @ user28623! Egyetértek azzal, hogy van benne valami hal. Megpróbáltam elolvasni a forráskódot is, de nem értem el ‘ előrehaladást.
- Feladtam a co2 cuccokat, és azt hiszem, rájöttem, hogy mi történik. Először is, a
co2HW$fitted[,3]
utolsó értéke nem a minta utolsó periódusának becsült trendje. Ez az utolsó periódus előtti időszak becsült tendenciája. Másodszor:co2HW$coeff[2]
az elmúlt időszak trendje. Véleményem szerint aco2HW$fitted
táblázat időzítése félrevezető. - @ user28623, a
co2HW$fitted[,1]
-re gondolszco2HW$fitted[,3]
? és aco2HW$fitted[,1]
állítólaglevel
, nem pedigtrend
. szerintem a válaszod valóban hasznos, de kissé zavaró
válasz
szerintem a legfontosabb az együtthatók, amelyeket a többi válaszban nem láttam, de esetleg elmulasztottam, az, hogy ezek az előrejelzés alapjául szolgáló / elkészített idősor utolsó periódusának simított szintje és simított trendjei; az idősor utolsó 12 hónapjára.
Az előrejelzéshez illesztett értékek táblázatának megértése is segít. A t időnek megfelelő minden sor esetében a szint és a trend értékei a t idő simított értékei. -1, és a szezon értéke a tp simított értéke. Ezeket hozzáadva adjuk meg a t, Xhat becsült valódi szintjét.
Az R-t csak nemrég kezdtem el használni, ezért elnézést, ha a terminológiám nem teljesen pontos.
Hozzászólások
- Nem gondolom, hogy a kérdés egyértelműen megfogalmazódott. Amint a glen_b rámutat, hiányos. Mivel a kérdés nem világos, nem ‘ nem látom, hogyan lehet választ adni.
Válasz
Ez az R. HoltWinters dokumentációjából származik. Ugyanaz a kérdésem volt, és ez megválaszolja, miért nem tudtam kiszámítani ugyanazokat az évszakértékeket. A függvény bontási módszert használ az összes kezdeti érték megtalálásához, amikor a szezonalitást beépíti, míg az egy- és a kettős exponenciális simításhoz ezt nem teszi.
“Szezonális modelleknél az a, b és s arra következtetünk, hogy a trend és a szezonális komponens egyszerű lebontásával mozgó átlagokat használunk (lásd a bontási függvényt) a start.periodok első periódusai során (a kiindulási szinthez és trendhez a trend komponens egyszerű lineáris regresszióját használjuk). Szint / trend modelleknél (nincs szezonális komponens) az a és b kezdőértékei x [2], illetve x [2] – x [1]. Csak szintű modelleknél (normál exponenciális simítás) az a kezdőértéke x [1]. “
Találta meg ezt a weboldalt, amely elmagyarázza, hogyan szerezzen be kezdeti értékeket: https://robjhyndman.com/hyndsight/hw-initialization/