Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj klasę ArmaProcess z modułu arima_process.
  • Narysuj wykres zasymulowanych procesów MA(1):
    • Niech ma1 reprezentuje 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 ar1 i ma1, utwórz instancję klasy ArmaProcess(ar,ma) o nazwie MA_object1.
    • Zasymuluj 1000 punktów danych z utworzonego obiektu MA_object1, używając metody .generate_sample(). Narysuj zasymulowane dane na wykresie podrzędnym.
  • 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()
Edytuj i uruchom kod