Simulera AR(1)-tidsserier
Du ska simulera och plotta ett par AR(1)-tidsserier med olika parametervärden, \(\small \phi\), med hjälp av modulen arima_process i statsmodels. I den här övningen tittar du på en AR(1)-modell med ett stort positivt \(\small \phi\) och ett stort negativt \(\small \phi\), men du är fri att experimentera med egna parametrar.
Det finns några konventioner i arima_process-modulen som behöver förklaras. För det första är rutinerna utformade för att hantera både AR- och MA-modeller. Vi går igenom MA-modeller härnäst, så ignorera den delen tills vidare. För det andra måste du, när du anger koefficienterna, inkludera lag-noll-koefficienten 1, och tecknet på övriga koefficienter är omvänt jämfört med vad vi har använt hittills – i enlighet med konventionen inom signalbehandlingens tidsserielitteratur. För en AR(1)-process med \(\small \phi=0.9\) skulle exempelvis arrayen med AR-parametrar se ut så här: ar = np.array([1, -0.9])
Den här övningen är en del av kursen
Tidsserieanalys i Python
Övningsinstruktioner
- Importera klassen
ArmaProcessfrån modulenarima_process. - Plotta de simulerade AR-processerna:
- Låt
ar1representera en array med AR-parametrarna [1, \(\small -\phi\)] enligt förklaringen ovan. För nu ska MA-parameterarryen,ma1, bara innehålla lag-noll-koefficienten ett. - Skapa en instans av klassen
ArmaProcess(ar,ma)med parametrarnaar1ochma1, och kalla denAR_object1. - Simulera 1000 datapunkter från objektet du just skapade,
AR_object1, med metoden.generate_sample(). Plotta den simulerade datan i ett deldiagram.
- Låt
- Upprepa för den andra AR-parametern.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()