Simula serie temporali MA(1)
Simulerai e traccerai alcune serie temporali MA(1), ciascuna con un parametro \(\small \theta\) diverso, usando il modulo arima_process di statsmodels, proprio come hai fatto nel capitolo precedente per i modelli AR(1). Esaminerai un modello MA(1) con \(\small \theta\) grande e positivo e uno con \(\small \theta\) grande e negativo.
Come nel capitolo precedente, quando inserisci i coefficienti, devi includere il coefficiente a ritardo zero pari a 1, ma a differenza del capitolo sugli AR, il segno dei coefficienti MA è quello atteso. Ad esempio, per un processo MA(1) con \(\small \theta=-0.9\), l’array che rappresenta i parametri MA sarà ma = 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 MA(1) simulati
- Fai sì che
ma1rappresenti un array dei parametri MA [1, \(\small \theta\)] come spiegato sopra. L’array dei parametri AR conterrà solo il coefficiente a ritardo zero pari a uno. - Con i parametri
ar1ema1, crea un’istanza della classeArmaProcess(ar,ma)chiamataMA_object1. - Simula 1000 punti dati dall’oggetto appena creato,
MA_object1, usando il metodo.generate_sample(). Traccia i dati simulati in un subplot.
- Fai sì che
- Ripeti per l’altro parametro MA.
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: 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()