Simula serie storiche AR(1)
Simulerai e visualizzerai alcune serie storiche AR(1), ciascuna con un parametro diverso, \(\small \phi\), usando il modulo arima_process di statsmodels. In questo esercizio esaminerai un modello AR(1) con \(\small \phi\) fortemente positivo e uno con \(\small \phi\) fortemente negativo, ma sentiti libero di provare anche altri parametri.
Ci sono alcune convenzioni nell’uso del modulo arima_process che richiedono una spiegazione. Per prima cosa, queste routine sono state progettate in modo molto generale per gestire sia modelli AR sia MA. Tratteremo i modelli MA tra poco, quindi per ora ignora la parte MA. In secondo luogo, quando inserisci i coefficienti, devi includere il coefficiente a ritardo zero pari a 1, e il segno degli altri coefficienti è opposto a quello che abbiamo usato finora (per coerenza con la letteratura sulle serie temporali nell’elaborazione dei segnali). Ad esempio, per un processo AR(1) con \(\small \phi=0.9\), l’array che rappresenta i parametri AR sarebbe ar = np.array([1, -0.9])
Questo esercizio fa parte del corso
Analisi delle serie temporali in Python
Istruzioni dell'esercizio
- Importa la classe
ArmaProcessdal moduloarima_process. - Traccia i processi AR simulati:
- Lascia che
ar1rappresenti un array dei parametri AR [1, \(\small -\phi\)] come spiegato sopra. Per ora, l’array dei parametri MA,ma1, conterrà solo il coefficiente a ritardo zero pari a uno. - Con i parametri
ar1ema1, crea un’istanza della classeArmaProcess(ar,ma)chiamataAR_object1. - Simula 1000 punti dati dall’oggetto appena creato,
AR_object1, usando il metodo.generate_sample(). Traccia i dati simulati in un sottografico.
- Lascia che
- Ripeti per l’altro parametro AR.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()