Symulacja szeregu czasowego AR(1)
Zasymuluj i zwizualizuj kilka szeregów czasowych AR(1), każdy z innym parametrem \(\small \phi\), korzystając z modułu arima_process z biblioteki statsmodels. W tym ćwiczeniu przyjrzysz się modelowi AR(1) z dużą dodatnią wartością \(\small \phi\) oraz dużą ujemną wartością \(\small \phi\) – zachęcamy też do eksperymentowania z własnymi parametrami.
Moduł arima_process wymaga kilku wyjaśnień dotyczących konwencji. Po pierwsze, jego funkcje zostały zaprojektowane ogólnie, tak aby obsługiwać zarówno modele AR, jak i MA. Modele MA omówimy w kolejnej lekcji – na razie pomiń część dotyczącą MA. Po drugie, przy podawaniu współczynników musisz uwzględnić współczynnik dla opóźnienia zerowego równy 1, a znak pozostałych współczynników jest odwrotny niż ten, którego używaliśmy (zgodnie z konwencją literatury z zakresu przetwarzania sygnałów). Na przykład dla procesu AR(1) z \(\small \phi=0.9\) tablica parametrów AR wygląda następująco: ar = np.array([1, -0.9])
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj klasę
ArmaProcessz modułuarima_process. - Wykreśl zasymulowane procesy AR:
- Niech
ar1oznacza tablicę parametrów AR [1, \(\small -\phi\)] zgodnie z opisaną powyżej konwencją. Na razie tablica parametrów MA,ma1, będzie zawierać tylko współczynnik dla opóźnienia zerowego równy 1. - Używając parametrów
ar1ima1, utwórz instancję klasyArmaProcess(ar,ma)o nazwieAR_object1. - Zasymuluj 1000 punktów danych z utworzonego obiektu
AR_object1, korzystając z metody.generate_sample(). Wyświetl zasymulowane dane na wykresie cząstkowym.
- Niech
- Powtórz te kroki dla drugiego parametru AR.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()