Simuler des séries temporelles MA(1)
Vous allez simuler et tracer plusieurs séries temporelles MA(1), chacune avec un paramètre \(\small \theta\) différent, en utilisant le module arima_process de statsmodels, comme vous l’avez fait au chapitre précédent pour les modèles AR(1). Vous examinerez un modèle MA(1) avec un \(\small \theta\) largement positif et un autre avec un \(\small \theta\) largement négatif.
Comme au chapitre précédent, lors de la saisie des coefficients, vous devez inclure le coefficient de décalage zéro égal à 1. Mais, contrairement au chapitre sur les modèles AR, le signe des coefficients MA est celui auquel on s’attend. Par exemple, pour un processus MA(1) avec \(\small \theta=-0.9\), le tableau représentant les paramètres MA serait ma = np.array([1, -0.9])
Cet exercice fait partie du cours
Analyse des séries temporelles en Python
Instructions
- Importez la classe
ArmaProcessdu modulearima_process. - Tracez les processus MA(1) simulés
- Laissez
ma1représenter un tableau des paramètres MA [1, \(\small \theta\)] comme expliqué ci-dessus. Le tableau des paramètres AR ne contiendra que le coefficient d’ordre zéro égal à un. - Avec les paramètres
ar1etma1, créez une instance de la classeArmaProcess(ar,ma)appeléeMA_object1. - Simulez 1000 points de données à partir de l’objet que vous venez de créer,
MA_object1, en utilisant la méthode.generate_sample(). Tracez les données simulées dans un sous-graphe.
- Laissez
- Répétez pour l’autre paramètre MA.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()