Aan de slagGa gratis aan de slag

Simuleer MA(1)-tijdreeksen

Je gaat enkele MA(1)-tijdreeksen simuleren en plotten, elk met een andere parameter, \(\small \theta\), met behulp van de arima_process-module in statsmodels, net als in het vorige hoofdstuk voor AR(1)-modellen. Je bekijkt een MA(1)-model met een grote positieve \(\small \theta\) en een grote negatieve \(\small \theta\).

Net als in het vorige hoofdstuk moet je bij het invoeren van de coëfficiënten de nul-lagcoëfficiënt van 1 opnemen, maar anders dan in het hoofdstuk over AR-modellen is het teken van de MA-coëfficiënten zoals je zou verwachten. Bijvoorbeeld, voor een MA(1)-proces met \(\small \theta=-0.9\) is de array die de MA-parameters weergeeft ma = np.array([1, -0.9])

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in Python

Cursus bekijken

Oefeninstructies

  • Importeer de klasse ArmaProcess uit de arima_process-module.
  • Plot de gesimuleerde MA(1)-processen
    • Laat ma1 een array zijn van de MA-parameters [1, \(\small \theta\)], zoals hierboven uitgelegd. De AR-parameterarray bevat alleen de lag-nulcoëfficiënt van 1.
    • Maak met parameters ar1 en ma1 een instantie van de klasse ArmaProcess(ar,ma) met de naam MA_object1.
    • Simuleer 1000 datapunten uit het object dat je zojuist hebt gemaakt, MA_object1, met behulp van de methode .generate_sample(). Plot de gesimuleerde data in een subplot.
  • Herhaal dit voor de andere MA-parameter.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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()
Code bewerken en uitvoeren