Symulacja szeregu czasowego MA(1)
Zasymuluj i zwizualizuj kilka szeregów czasowych MA(1), każdy z innym parametrem \(\small \theta\), korzystając z modułu arima_process w bibliotece statsmodels – tak jak robiłeś to w poprzednim rozdziale dla modeli AR(1). Przyjrzysz się modelowi MA(1) z dużą dodatnią wartością \(\small \theta\) oraz dużą wartością ujemną.
Podobnie jak w poprzednim rozdziale, podając współczynniki, musisz uwzględnić współczynnik przy opóźnieniu zerowym równy 1. W odróżnieniu od modeli AR, znak współczynników MA jest tutaj taki, jakiego się spodziewasz. Na przykład dla procesu MA(1) z \(\small \theta=-0{,}9\) tablica parametrów MA to ma = 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. - Narysuj wykres zasymulowanych procesów MA(1):
- Niech
ma1reprezentuje tablicę parametrów MA [1, \(\small \theta\)] zgodnie z opisem powyżej. Tablica parametrów AR powinna zawierać tylko współczynnik przy opóźnieniu zerowym równy jeden. - Korzystając z parametrów
ar1ima1, utwórz instancję klasyArmaProcess(ar,ma)o nazwieMA_object1. - Zasymuluj 1000 punktów danych z utworzonego obiektu
MA_object1, używając metody.generate_sample(). Narysuj zasymulowane dane na wykresie podrzędnym.
- Niech
- Powtórz te kroki dla drugiego parametru MA.
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: MA parameter = -0.9
plt.subplot(2,1,1)
ar1 = np.array([1])
ma1 = np.array([1, ____])
MA_object1 = ArmaProcess(____, ____)
simulated_data_1 = MA_object1.generate_sample(nsample=1000)
plt.plot(simulated_data_1)
# Plot 2: MA parameter = +0.9
plt.subplot(2,1,2)
ar2 = np.array([1])
ma2 = np.array([1, ____])
MA_object2 = ArmaProcess(____, ____)
simulated_data_2 = MA_object2.generate_sample(nsample=1000)
plt.plot(simulated_data_2)
plt.show()