Skip to content

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:

X_t = c + \phi_1 X_{t-1} + \ldots + \phi_p X_{t-p} + \varepsilon_t

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)

2025-02-11T23:37:47.544825 image/svg+xml Matplotlib v3.10.0, https://matplotlib.org/ 0 50 100 150 200 250 300 350 400 −4 −2 0 2 4 6 Time series 0 2 4 6 8 10 12 14 16 −1.0 −0.5 0.0 0.5 1.0 Autocorrelation 0 2 4 6 8 10 12 14 16 −1.0 −0.5 0.0 0.5 1.0 Partial Autocorrelation

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)

2025-02-11T23:37:47.806866 image/svg+xml Matplotlib v3.10.0, https://matplotlib.org/ 0 100 200 300 400 500 −3 −2 −1 0 1 2 3 Time series 0 5 10 15 20 −1.0 −0.5 0.0 0.5 1.0 Autocorrelation 0 5 10 15 20 −1.0 −0.5 0.0 0.5 1.0 Partial Autocorrelation

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ě:

X_t = c + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \theta_2 \varepsilon_{t-2} + \ldots + \theta_q \varepsilon_{t-q},

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)

2025-02-11T23:37:48.308834 image/svg+xml Matplotlib v3.10.0, https://matplotlib.org/ 0 50 100 150 200 250 300 −4 −2 0 2 4 Time series 0 2 4 6 8 10 12 14 16 −1.0 −0.5 0.0 0.5 1.0 Autocorrelation 0 2 4 6 8 10 12 14 16 −1.0 −0.5 0.0 0.5 1.0 Partial Autocorrelation

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:

\begin{aligned} X_t &= \varepsilon_t + \frac{1}{2}\varepsilon_{t-1}, \\ Z_t &= \varepsilon_t + 2\varepsilon_{t-1}, \end{aligned}

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

X_t = \varepsilon_t + \theta \varepsilon_{t-1},

lze pomocí rekurzivní substituce získat vyjádření

X_t = \theta X_{t-1} - \theta^2 X_{t-2} + \theta^3 X_{t-3} - \ldots + \varepsilon_t.

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

\theta(x) = 1 - \theta_1 x - \theta_2 x^2 - \ldots - \theta_q x^q.

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:

X_t = c + \phi_1 X_{t-1} + \ldots + \phi_p X_{t-p} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \ldots + \theta_q \varepsilon_{t-q},

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ů

  1. Odstranění Trendu: Jednou z metod je odstranění trendu, například pomocí interpolace řady polynomem odpovídajícího řádu.
  2. 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:

\Phi_P(B^s) \phi_p(B) \nabla_s^D \nabla^d X_t = \theta_q(B) \Theta_Q (B^s)\varepsilon_t,

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```")
  1. 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).
  2. 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ý.
  3. 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í.
  4. 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.
  5. 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.