3. AR, MA, ARMA, ARIMA, SARIMA
Autoregresní modely AR(p)¶
Autoregresní (AR) modely jsou klíčovou součástí analýzy časových řad a mají široké využití v různých oblastech, jako je ekonomie, meteorologie nebo inženýrství. Tyto modely poskytují rámec pro pochopení, jak minulé hodnoty časové řady ovlivňují současné hodnoty.
Definice AR(p) Modelu¶
Autoregresní model řádu p, označovaný jako AR(p), popisuje současnou hodnotu časové řady jako lineární kombinaci jejích předchozích p hodnot a náhodného šumu. Model je definován následujícím vztahem:
kde:
- X_t je hodnota časové řady v čase t,
- c je konstantní člen,
- \phi_1, \ldots, \phi_p jsou autoregresní koeficienty,
- \varepsilon_t je náhodný šum, často předpokládaný jako bílý šum.
Výběr Řádu Modelu¶
- Určení Řádu p: Řád modelu p určuje, kolik předchozích hodnot časové řady je použito k předpovídání současné hodnoty. V praxi je výběr p často založen na kritériích jako AIC (Akaikeho informační kritérium) nebo BIC (Bayesovské informační kritérium).
- Důležitost Vyšších Řádů: Zatímco vyšší řády zahrnují více historických dat, může to vést k přetrénování modelu. Je třeba zvážit, zda přidaná složitost modelu skutečně zlepšuje jeho schopnost předpovídat.
Stacionarita a Charakteristická Rovnice¶
- Stacionarita: Aby byl AR proces slabě stacionární, musí splňovat určité podmínky týkající se autoregresních koeficientů. Specificky, kořeny charakteristické rovnice
kde:
- z = 1/\phi
musí ležet vně jednotkové kružnice (tj. absolutní hodnota každého kořene musí být větší než 1).
Odhad řádu AR Modelu¶
Při odhadu řádu autoregresních (AR) modelů jsou klíčovými nástroji ACF a PACF:
-
ACF (Autokorelační Funkce): U AR modelů ACF obvykle postupně klesá k nule. Tento vzor naznačuje, že hodnoty časové řady jsou korelovány s jejich minulými hodnotami a pomáhá určit vhodný řád modelu.
-
PACF (Parciální Autokorelační Funkce): U AR modelů konkrétního řádu p, PACF ukazuje významné vrcholy pro první p zpoždění a poté rychle klesá k nule. Tento vzor naznačuje, že přímý vztah mezi pozorováními v časové řadě je silný až do p-tého zpoždění a poté se ztrácí, což napovídá vhodný řád p pro AR model.
V kombinaci tyto dva nástroje poskytují silný základ pro určení optimálního řádu AR modelu.
AR(1)¶
from scipy.stats.distributions import norm
from config.base_python_functions import tsplot
import numpy as np
ndat = 400
x = np.zeros(ndat)
x[0] = 0.4
sigma = 1
c = 0.1
phi = [.8]
c_phi = np.insert(phi, 0, c)
for i in range(1, ndat):
x[i] = np.dot(c_phi, [1, x[i-1]]) + norm.rvs(scale=sigma)
print(tsplot(x).getvalue())
AR(2)¶
from scipy.stats.distributions import norm
from config.base_python_functions import tsplot
import numpy as np
ndat = 500
x = np.zeros(ndat)
x[0] = 0.1
x[1] = -0.1
sigma = .5
c = 0.1
phi = [-.6, .3]
c_phi = np.insert(phi, 0, c)
for i in range(1, ndat):
x[i] = np.dot(c_phi, [1, x[i-1], x[i-2]]) + norm.rvs(scale=sigma)
print(tsplot(x, lags=20).getvalue())
Model AutoReg¶
AutoReg Model Results
==============================================================================
Dep. Variable: y No. Observations: 500
Model: AutoReg(2) Log Likelihood -361.376
Method: Conditional MLE S.D. of innovations 0.500
Date: Tue, 11 Feb 2025 AIC 730.751
Time: 23:37:48 BIC 747.594
Sample: 2 HQIC 737.361
500
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const 0.0985 0.023 4.240 0.000 0.053 0.144
y.L1 -0.5991 0.043 -13.931 0.000 -0.683 -0.515
y.L2 0.2759 0.043 6.398 0.000 0.191 0.360
Roots
=============================================================================
Real Imaginary Modulus Frequency
-----------------------------------------------------------------------------
AR.1 -1.1059 +0.0000j 1.1059 0.5000
AR.2 3.2769 +0.0000j 3.2769 0.0000
-----------------------------------------------------------------------------
from scipy.stats.distributions import norm
from config.base_python_functions import tsplot
import numpy as np
from statsmodels.tsa.ar_model import AutoReg
# Model definition for AR(2)
ndat = 500
x = np.zeros(ndat)
x[0] = 0.1
x[1] = -0.1
sigma = .5
c = 0.1
phi = [-.6, .3]
c_phi = np.insert(phi, 0, c)
for i in range(1, ndat):
x[i] = np.dot(c_phi, [1, x[i-1], x[i-2]]) + norm.rvs(scale=sigma)
# Creation of AutoReg model for AR(2)
res = AutoReg(x, lags = 2, trend='c').fit()
b = res.params
print(f"```\n{res.summary()}\n```")
Výstup Modelu AR(2)¶
1. První Tabulka: Statistiky Modelu¶
- Log Likelihood: Ukazuje na logaritmus věrohodnosti modelu. Vyšší hodnota naznačuje, že model lépe vysvětluje data, ale je třeba být opatrný kvůli riziku přetrénování (overfitting).
- S.D. of Innovations: Toto je odhadnutá směrodatná odchylka šumového členu \varepsilon_t v modelu.
- Informační Kritéria (AIC, BIC, HQIC): Tyto hodnoty pomáhají srovnávat modely. Nižší hodnoty obvykle naznačují lepší model, ale je třeba brát v úvahu také složitost modelu.
2. Druhá Tabulka: Odhady Koeficientů¶
- Intercept (Posun): Toto je konstantní člen c v modelu.
- y.L1 a y.L2: To jsou odhadnuté autoregresní koeficienty pro první a druhé zpoždění. Tabulka obsahuje jejich hodnoty, p-hodnoty pro test hypotézy, že každý koeficient je roven nule, a intervaly spolehlivosti.
3. Třetí Tabulka: Kořeny Charakteristického Polynomu¶
- Reálná a Imaginární Část: Tyto hodnoty popisují kořeny charakteristické rovnice modelu.
- Modulus a Frekvence: Modulus kořenů by měl být vztahován k jednotkové kružnici, aby se určila stacionarita modelu. Kořeny mimo jednotkovou kružnici (modulus větší než 1) naznačují stacionaritu.
Modely Klouzavých Průměrů MA(q)¶
Modely klouzavých průměrů (Moving Average, MA) představují další důležitou kategorii v analýze časových řad. Tyto modely jsou zvláště užitečné pro modelování náhodných šoků nebo fluktuací v časových řadách.
Definice MA(q) Modelu¶
MA model řádu q, označovaný jako MA(q), je definován následovně:
kde:
- X_t je hodnota časové řady v čase t,
- c je střední hodnota procesu,
- \varepsilon_t je náhodný šum, typicky předpokládaný jako nezávisle a identicky distribuovaný (iid) z normálního rozdělení s nulovou střední hodnotou a konstantní variancí \sigma^2,
- \theta_1, \theta_2, \ldots, \theta_q jsou koeficienty klouzavého průměru.
Vlastnosti MA Modelu¶
- Střední Hodnota a Variance:
- Střední hodnota X_t je rovna c.
-
Variance X_t je dána součtem kvadrátů koeficientů \theta_i vynásobených variancí šumu \sigma^2.
-
Kovariance:
- Pro k > q, hodnoty X_t a X_{t+k} jsou nekorelované.
- Pro k \leq q, existuje nenulová korelace mezi X_t a X_{t+k}.
- Kovariance se mění s pořadím k, a pro k < 0 platí, že \gamma(k) = \gamma(-k).
Odhad řádu MA Modelu¶
ACF (Autocorrelation Function)¶
- Chování u MA Modelů: U modelů MA(q) ACF ukazuje významné vrcholy (vysoké hodnoty) pro prvních q zpoždění a poté rychle klesá k nule.
- Interpretace: ACF může být použita k identifikaci řádu q MA modelu, jelikož vzor ACF ukazuje náhlé zmenšení po zpoždění q. Tento náhlý pokles je indikátorem, že hodnoty časové řady nejsou dále korelovány po zpoždění q.
PACF (Partial Autocorrelation Function)¶
- Chování u MA Modelů: U čistě MA modelů PACF postupně klesá k nule, nebo osciluje kolem nuly.
- Interpretace: PACF není tak přímým nástrojem pro odhad řádu MA modelu jako ACF, ale její chování (postupné snižování nebo oscilace) může potvrdit, že model je spíše MA než AR.
MA(1)¶
from scipy.stats.distributions import norm
from config.base_python_functions import tsplot
import numpy as np
ndat = 300
epsilon = norm.rvs(size=ndat)
x = np.zeros(ndat)
mean = 0
for t in range(2, ndat):
x[t] = mean + epsilon[t] + .8*epsilon[t-1] #+ .7*epsilon[t-2] # Pro MA(2)
tsplot(x)
print(tsplot(x).getvalue())
Invertibilita MA Procesů¶
Invertibilita MA procesů je klíčovým pojmem v analýze časových řad, který umožňuje transformovat MA model na ekvivalentní AR model. Tento koncept je zvláště důležitý pro jednoznačný odhad modelu a jeho interpretaci.
Příklad MA(1) Procesů¶
Uvažujme dva MA(1) procesy:
kde ACF a PACF obou procesů jsou stejné, ale mají rozdílné koeficienty \theta. To ukazuje, že bez dalších informací nelze jednoznačně určit hodnotu koeficientu \theta z ACF a PACF.
Invertování MA(1) na AR(\infty)¶
Pro MA(1) proces ve tvaru
lze pomocí rekurzivní substituce získat vyjádření
Tento výraz připomíná AR(\infty) model. Pro invertibilitu je důležité, aby |\theta| < 1, což zajišťuje konvergenci koeficientů k nule.
Charakteristický Polynom a Invertibilita MA(q)¶
Pro obecnější MA(q) proces definujeme charakteristický polynom
Proces je invertibilní, pokud jsou všechny kořeny tohoto polynomu vně jednotkové kružnice, což umožňuje transformaci MA(q) procesu na AR(\infty).
Shrnutí¶
- Invertibilní MA procesy lze převést na AR(\infty) modely.
- PACF u invertibilních MA procesů ukazuje mnoho významných lagů.
- Stacionární AR procesy lze rovněž převést na MA(\infty) modely, a proto jejich ACF ukazuje mnoho významných lagů.
ARMA(p, q)¶
Smíšené modely ARMA (AutoRegressive Moving Average) jsou významným nástrojem v teorii a analýze časových řad. Tyto modely kombinují prvky autoregresních (AR) a klouzavých průměrů (MA), čímž poskytují robustní rámec pro modelování a predikci časových řad.
Definice ARMA(p, q) Modelu¶
ARMA model řádu p pro AR část a q pro MA část je definován jako:
kde:
- X_t je hodnota časové řady v čase t,
- c je konstanta,
- \phi_1, \ldots, \phi_p jsou autoregresní koeficienty,
- \theta_1, \ldots, \theta_q jsou koeficienty klouzavého průměru,
- \varepsilon_t je náhodný šum, často předpokládaný jako iid z normálního rozdělení.
Vlastnosti ARMA Modelů¶
- Flexibilita: Kombinací AR a MA částí nabízí ARMA modely větší flexibilitu a přesnost při modelování různých typů časových řad.
- Normalita Šumu: Přestože je často předpokládána normalita šumu, modely mohou být efektivní i při jiných rozděleních. Významné odchylky od normálního rozdělení však mohou vést k nesprávným odhadům.
- Historie a Vývoj: Teorie ARMA modelů je připisována Peteru Whittleovi (1951), a jejich popularizaci a rozšíření zajistili George Box a Gwilym Jenkins.
ARIMA(p, d, q)¶
Smíšené Modely ARIMA(p, d, q)¶
ARIMA (AutoRegressive Integrated Moving Average) modely představují rozšíření ARMA modelů, zahrnující diferencování d pro dosažení stacionarity časové řady. Tento přístup se uplatňuje, pokud původní časová řada není slabě stacionární, například kvůli přítomnosti trendu nebo náhodné procházky.
Modelování Nelineárních Trendů¶
- Odstranění Trendu: Jednou z metod je odstranění trendu, například pomocí interpolace řady polynomem odpovídajícího řádu.
- Diferencování: Druhou metodou je diferencování, kde z původní řady \{X_t\} vytvoříme řadu \{X_{t}'\} pomocí:
Druhé a vyšší řády diferencování se používají, pokud první diference nepostačují.
ARIMA Modely¶
-
Parametry:
- p: Řád autoregresní části.
- d: Řád diferencování.
- q: Řád klouzavých průměrů.
-
Význam Diferencování:
- Diferencování je účinné pro odstranění trendů nebo náhodných procházek.
- V případě gaussovské náhodné procházky diferencování převede proces na bílý šum.
Praktické Poznámky¶
-
Autokorelace a Přediferencování:
- Silná pozitivní autokorelace může značit nedostatečné diferencování.
- Hodnoty ACF v prvním lagu kolem -0.5 mohou naznačovat přediferencování.
-
Role Konstanty v ARIMA Modelu:
- Pro d=0: Konstanta zavádí nenulovou střední hodnotu.
- Pro d=1: Konstanta zavádí nenulový trend.
- Pro d=2: Konstanta obvykle není vhodná, mohla by naznačovat "trend v trendu".
-
Pravidla pro Výběr d:
- Většinou se omezuje na d \leq 2.
- Při d=2 se obvykle v ARIMA modelu nezahrnuje konstanta.
Běžné ARIMA modely¶
- ARIMA(0,0,0)+c - konstantní model
- ARIMA(0,1,0) - model náhodné procházky Viz zde
- ARIMA(0,1,0)+c - náhodná procházka s driftem
- ARIMA(1,0,0)+c - AR(1) model
- ARIMA(2,0,0)+c - AR(2) model
- ARIMA(1,1,0)+c - AR(1) model na jednou diferencovaných datech
- ARIMA(2,1,0)+c - AR(2) model na jednou diferencovaných datech
- ARIMA(0,1,1) - jednoduché exponenciální vyhlazování - MA(1) model na diferencovaných datech
- ARIMA(0,1,1)+c - jednoduché exponenciální vyhlazování - MA(1) na diferencovaných datech - s konst. lin. trendem
- ARIMA(1,1,2) - lineární exponenciální vyhlazování s tlumeným trendem
- ARIMA(0,2,2) - zobecněné lineární exponenciální vyhlazování
SARIMA(p,d,q)(P,D,Q)s¶
Modely SARIMA (Seasonal AutoRegressive Integrated Moving Average) jsou rozšířením ARIMA modelů, které zahrnují sezónní složky. Tyto modely jsou vhodné pro časové řady s jasnou sezónností, tj. s pravidelným opakováním vzorců v pevné periodě s.
Vytváření Stacionarity¶
- Diferencování: Stejně jako u ARIMA modelů, diferencování se používá pro dosažení stacionarity. Toto zahrnuje:
- Nesezónní diferencování \nabla^d pro odstranění globálního trendu.
- Sezónní diferencování \nabla_s^D pro odstranění sezónního trendu.
Struktura SARIMA Modelu¶
SARIMA modely jsou specifikovány pomocí šesti parametrů: p, d, q, P, D, Q a periodou sezónnosti s:
-
Nesezónní Komponenty:
- p: Řád autoregresní části (AR).
- d: Řád nesezónního diferencování.
- q: Řád klouzavých průměrů (MA).
-
Sezónní Komponenty:
- P: Řád sezónní autoregresní části.
- D: Řád sezónního diferencování.
- Q: Řád sezónních klouzavých průměrů.
SARIMA modely jsou definovány pomocí následující rovnice:
kde:
- \Phi_P(B^s) a \Theta_Q(B^s) jsou sezónní AR a MA operátory řádu P a Q.
- \phi_p(B) a \theta_q(B) jsou nesezónní AR a MA operátory řádu p a q.
- \nabla_s^D je operátor sezónní diference.
- \nabla^d je operátor běžné diference.
- \varepsilon_t je náhodný šum.
Běžné SARIMA Modely¶
- SARIMA(0,0,0)(0,0,0)s: Základní model bez autoregrese a klouzavých průměrů.
- SARIMA(0,1,0)(0,0,0)s: Sezónní model náhodné procházky.
- SARIMA(1,0,0)(0,0,0)s: Sezónní AR(1) model.
- SARIMA(0,0,1)(0,0,0)s: Sezónní MA(1) model.
- SARIMA(p,d,q)(P,D,Q)s: Plně vybavený SARIMA model s nesezónními a sezónními AR a MA částmi a diferencováním.
Aplikace SARIMA Modelů¶
SARIMA modely jsou vhodné pro analýzu a předpověď časových řad s výraznou sezónností. Jsou používány v různých oblastech, jako je ekonometrie, meteorologie nebo průmyslová produkce, kde sezónní vzorce hrají klíčovou roli.
SARIMAX Results
==============================================================================
Dep. Variable: y No. Observations: 1000
Model: ARIMA(1, 0, 1) Log Likelihood -1407.232
Date: Tue, 11 Feb 2025 AIC 2820.465
Time: 23:37:48 BIC 2835.188
Sample: 0 HQIC 2826.061
- 1000
Covariance Type: opg
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ar.L1 -0.8178 0.210 -3.891 0.000 -1.230 -0.406
ma.L1 0.7864 0.227 3.469 0.001 0.342 1.231
sigma2 0.9768 0.045 21.719 0.000 0.889 1.065
===================================================================================
Ljung-Box (L1) (Q): 0.58 Jarque-Bera (JB): 0.66
Prob(Q): 0.44 Prob(JB): 0.72
Heteroskedasticity (H): 1.13 Skew: 0.04
Prob(H) (two-sided): 0.26 Kurtosis: 2.90
===================================================================================
from scipy.stats import norm
import statsmodels.api as sm
ndat = 1000
x = norm.rvs(size=ndat)
model = sm.tsa.arima.ARIMA(x, order=(1,0,1), trend='n').fit()
# Get the summary as a string
summary_str = model.summary().as_text()
# Remove the line containing the warning
filtered_summary = '\n'.join([line for line in summary_str.split('\n')
if not line.startswith('Warnings:') and
not line.startswith('[1]')])
# Print the modified summary
print(f"```\n{filtered_summary}\n```")
- Základní Informace o Modelu: Zahrnuje typ modelu (v tomto případě ARIMA), použité parametry a nastavení, jako je řád modelu
(1,0,1)a trend'n'(žádný trend). - Koeficienty Modelu:
- Hodnoty Koeficientů: Hodnoty pro autoregresní a klouzavé průměrové koeficienty (v tomto příkladě pro AR(1) a MA(1) části).
- Standardní Chyby Koeficientů: Ukazuje, jak přesné jsou odhady koeficientů.
- Z-Skóre a P-Hodnoty: Poskytují informace o statistické významnosti jednotlivých koeficientů. Z-skóre je normalizovaná hodnota odhadu, zatímco p-hodnota ukazuje pravděpodobnost, že skutečný koeficient je nulový.
- Fit Statistiky:
- Log-Likelihood: Míra pravděpodobnosti dat daná modelem.
- AIC/BIC: Akaikeho informační kritérium a Bayesovské informační kritérium, které pomáhají v porovnání modelů s různými parametry (menší hodnoty jsou obvykle lepší).
- Durbin-Watson Statistika: Test korelace reziduí.
- Diagnostika Modelu:
- Rezidua: Informace o reziduálních (zbytkových) chybách modelu.
- Testy na Normálnost Reziduí: Např. Jarque-Bera test, který zkoumá, zda jsou rezidua normálně rozdělena.
- Informace o Fittení Modelu:
- Metoda Fittení: Například, jestli byla použita maximální věrohodnost nebo jiná metoda.
- Doba Fittení: Jak dlouho trvalo model fitnout.