Méthode de Hodrick-Prescott
La méthode de Hodrick-Prescott (HP filter) est un outil de filtrage utilisé principalement pour extraire la tendance d’une série temporelle tout en éliminant les fluctuations cycliques à court terme. Elle est largement utilisée en macroéconomie pour séparer la tendance à long terme des fluctuations économiques à court terme. Ce filtrage peut être appliqué à une série temporelle avec une tendance non linéaire.
1. Concept du Filtrage de Hodrick-Prescott
Le filtre HP sépare une série temporelle
en deux composants :
-
La tendance (
) : la composante à long terme qui reflète les mouvements sous-jacents de la série.
-
Les cycles (
) : la composante à court terme qui représente les fluctuations autour de la tendance.
La méthode repose sur la minimisation d’un problème d’optimisation où l’on cherche à minimiser la différence entre la série observée et la tendance, tout en pénalisant les variations trop rapides de la tendance. Plus formellement, on cherche à résoudre le problème suivant :
-
Le premier terme mesure l’ajustement entre la série observée et la tendance.
-
Le second terme pénalise les changements trop importants dans la tendance (en imposant une certaine douceur).
L’hyperparamètre
détermine la rigidité de la tendance :
-
Un
élevé pénalise fortement les changements rapides dans la tendance, ce qui la rend plus lisse.
-
Un
faible autorise plus de variations dans la tendance, ce qui permet à la série de suivre de plus près les données observées.
2. Valeur du Paramètre
La valeur de
dépend de la fréquence de la série temporelle :
-
: pour les séries temporelles trimestrielles (utilisé dans de nombreux contextes économiques).
-
( \lambda = 100 : pour les séries mensuelles.
-
: pour les séries annuelles.
Fonctions :
-
hp_filter()
La fonction hp_filter() de statsmodels applique le filtre Hodrick-Prescott pour décomposer une série temporelle en deux composants : tendance et cycle. Ce filtre est souvent utilisé dans l'analyse économique pour séparer les fluctuations à court terme des tendances à long terme, en particulier pour l'analyse des séries temporelles économiques (comme le PIB).
Importation :
from statsmodels.tsa.filters import hp_filter
Attributs :
Nom Type Description lambda_ float, optionnel Le paramètre de lissage lambda, qui contrôle la douceur de la tendance estimée. Un lambda plus élevé entraîne une tendance plus lisse. Par défaut, la valeur est 1600, typique pour les données trimestrielles. Exemple de code :
from statsmodels.tsa.filters.hp_filter import hpfilter import pandas as pd import numpy as np import matplotlib.pyplot as plt # Création d'une série temporelle d'exemple np.random.seed(0) dates = pd.date_range('2020-01-01', periods=100, freq='D') data = np.sin(np.linspace(0, 20, 100)) + np.random.normal(size=100) # Série avec des cycles et bruit aléatoire # Création d'une DataFrame series = pd.Series(data, index=dates) # Application du filtre Hodrick-Prescott cycle, trend = hpfilter(series, lamb=1600) # Affichage des résultats plt.figure(figsize=(10, 6)) plt.plot(series, label='Série originale', color='blue') plt.plot(trend, label='Composante de tendance', color='red', linewidth=2) plt.plot(cycle, label='Composante de cycle', color='green', linestyle='--') plt.legend() plt.title("Filtre Hodrick-Prescott") plt.show() # Affichage des composantes print(f"Tendance: \n{trend.head()}") print(f"Cycle: \n{cycle.head()}")
Explication du code :
Les bibliothèques nécessaires sont importées :
- hpfilter de statsmodels.tsa.filters.hp_filter permet d'appliquer le filtre Hodrick-Prescott à une série temporelle pour séparer les composantes de tendance et de cycle.
- pandas est utilisé pour la gestion des données sous forme de DataFrame.
- numpy permet d’effectuer des calculs mathématiques et de générer des données aléatoires.
- matplotlib.pyplot est utilisé pour créer des visualisations graphiques.
Création d'une série temporelle d'exemple
D'abord, une graine aléatoire est fixée pour garantir la reproductibilité des résultats. Ensuite, une séquence de 100 dates est générée, allant du 1er janvier 2020 avec une fréquence journalière. Une série de données est créée à partir de la fonction sinus pour simuler des cycles, à laquelle on ajoute un bruit aléatoire.
Création d'une DataFrame
La série de données est convertie en un objet pandas.Series avec les dates comme index.
Application du filtre Hodrick-Prescott
Le filtre Hodrick-Prescott est appliqué à la série temporelle à l'aide de la fonction hpfilter. Le paramètre lamb est fixé à 1600, une valeur couramment utilisée pour les données trimestrielles, pour contrôler la lissage de la tendance.
Affichage des résultats
Un graphique est généré pour visualiser la série temporelle originale, la composante de tendance et la composante de cycle obtenues après application du filtre. Le graphique est affiché avec les différentes courbes en utilisant des couleurs et des styles distincts.
Affichage des composantes
Les composantes de tendance et de cycle sont extraites du résultat du filtre Hodrick-Prescott et affichées. La méthode head() est utilisée pour afficher les 5 premières lignes de chaque composant.