Aan de slagGa gratis aan de slag

Simuleer AR(1)-tijdreeksen

Je gaat een paar AR(1)-tijdreeksen simuleren en plotten, elk met een andere parameter, \(\small \phi\), met behulp van de module arima_process in statsmodels. In deze oefening bekijk je een AR(1)-model met een grote positieve \(\small \phi\) en een grote negatieve \(\small \phi\), maar voel je vrij om ook met je eigen parameters te experimenteren.

Er zijn een paar conventies bij het gebruik van de module arima_process die uitleg vragen. Ten eerste zijn deze routines heel algemeen opgezet om zowel AR- als MA-modellen te ondersteunen. We behandelen MA-modellen straks; negeer het MA-deel voor nu. Ten tweede moet je bij het invoeren van de coëfficiënten de nul-lagcoëfficiënt van 1 opnemen, en het teken van de andere coëfficiënten is het omgekeerde van wat we tot nu toe gebruikten (om consistent te zijn met de tijdreeks-literatuur in signaalverwerking). Bijvoorbeeld, voor een AR(1)-proces met \(\small \phi=0.9\), is de array die de AR-parameters weergeeft ar = 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 module arima_process.
  • Plot de gesimuleerde AR-processen:
    • Laat ar1 een array voorstellen van de AR-parameters [1, \(\small -\phi\)], zoals hierboven uitgelegd. Voor nu bevat de MA-parameterarray, ma1, alleen de lag-nulcoëfficiënt van één.
    • Maak met parameters ar1 en ma1 een instantie van de klasse ArmaProcess(ar,ma) met de naam AR_object1.
    • Simuleer 1000 datapunten uit het object dat je zojuist hebt gemaakt, AR_object1, met de methode .generate_sample(). Plot de gesimuleerde data in een subplot.
  • Herhaal dit voor de andere AR-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: 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()
Code bewerken en uitvoeren