Simulace časové řady AR(1)
Nasimulujeme a vykreslíme několik časových řad AR(1), každou s jiným parametrem \(\small \phi\), a použijeme k tomu modul arima_process ze statsmodels. V tomto cvičení se podíváš na model AR(1) s velkou kladnou hodnotou \(\small \phi\) a velkou zápornou hodnotou \(\small \phi\) – klidně si ale vyzkoušej i vlastní hodnoty parametrů.
Při práci s modulem arima_process je potřeba znát pár konvencí. Za prvé, tyto funkce jsou navrženy obecně tak, aby zvládaly jak modely AR, tak MA. Modely MA probereme v další části, takže část pro MA zatím ignoruj. Za druhé, při zadávání koeficientů musíš zahrnout koeficient pro nulové zpoždění (lag-zero), jehož hodnota je 1, a znaménka ostatních koeficientů jsou oproti naší dosavadní konvenci opačná (aby byl postup konzistentní s literaturou o zpracování signálů). Například pro proces AR(1) s \(\small \phi=0.9\) bude pole AR parametrů vypadat takto: ar = np.array([1, -0.9]).
Toto cvičení je součástí kurzu
Analýza časových řad v Pythonu
Pokyny k cvičení
- Importuj třídu
ArmaProcessz moduluarima_process. - Vykresli nasimulované procesy AR:
- Nech
ar1reprezentovat pole AR parametrů [1, \(\small -\phi\)] podle výše popsané konvence. Pole MA parametrůma1bude zatím obsahovat pouze koeficient pro nulové zpoždění (lag-zero) s hodnotou jedna. - Z parametrů
ar1ama1vytvoř instanci třídyArmaProcess(ar,ma)s názvemAR_object1. - Z právě vytvořeného objektu
AR_object1nasimuluj 1 000 datových bodů pomocí metody.generate_sample(). Výsledná data vykresli do podgrafu.
- Nech
- Celý postup zopakuj pro druhý AR parametr.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# import the module for simulating data
from statsmodels.tsa.arima_process import ArmaProcess
# Plot 1: AR parameter = +0.9
plt.subplot(2,1,1)
ar1 = np.array([1, ____])
ma1 = np.array([1])
AR_object1 = ArmaProcess(____, ____)
simulated_data_1 = AR_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)
# Plot 2: AR parameter = -0.9
plt.subplot(2,1,2)
ar2 = np.array([1, ____])
ma2 = np.array([1])
AR_object2 = ArmaProcess(____, ____)
simulated_data_2 = AR_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()