Stima dell'ordine del modello: PACF
Uno strumento utile per identificare l'ordine di un modello AR è la funzione di autocorrelazione parziale (PACF). In questo esercizio simulerai due serie temporali, un'AR(1) e un'AR(2), e calcolerai la PACF campionaria per ciascuna. Noterai che per un'AR(1) la PACF dovrebbe avere un valore significativo al ritardo 1 e approssimativamente zeri dopo. Per un'AR(2), invece, la PACF campionaria dovrebbe avere valori significativi ai ritardi 1 e 2, e zeri successivamente.
Così come hai usato la funzione plot_acf negli esercizi precedenti, qui userai una funzione chiamata plot_pacf nel modulo statsmodels.
Questo esercizio fa parte del corso
Analisi delle serie temporali in Python
Istruzioni dell'esercizio
- Importa i moduli per simulare i dati e per tracciare la PACF
- Simula un'AR(1) con \(\small \phi=0.6\) (ricorda che il segno del parametro AR è invertito)
- Traccia la PACF per
simulated_data_1usando la funzioneplot_pacf - Simula un'AR(2) con \(\small \phi_1=0.6, \phi_2=0.3\) (anche qui, inverti i segni)
- Traccia la PACF per
simulated_data_2usando la funzioneplot_pacf
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Import the modules for simulating data and for plotting the PACF
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.graphics.tsaplots import plot_pacf
# Simulate AR(1) with phi=+0.6
ma = np.array([1])
ar = np.array([1, -0.6])
AR_object = ArmaProcess(ar, ma)
simulated_data_1 = ___.generate_sample(nsample=5000)
# Plot PACF for AR(1)
plot_pacf(___, lags=20)
plt.show()
# Simulate AR(2) with phi1=+0.6, phi2=+0.3
ma = np.array([1])
ar = np.array([1, ___, ___])
AR_object = ArmaProcess(ar, ma)
simulated_data_2 = ___.generate_sample(nsample=5000)
# Plot PACF for AR(2)
plot_pacf(___, lags=20)
plt.show()