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

yty_t

en deux composants :

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 :

 

minτt[t=1T(ytτt)2+λt=2T1[(τt+1τt)(τtτt1)]2]\min_{\tau_t} \left[ \sum_{t=1}^{T} (y_t – \tau_t)^2 + \lambda \sum_{t=2}^{T-1} \left[ (\tau_{t+1} – \tau_t) – (\tau_t – \tau_{t-1}) \right]^2 \right]

L’hyperparamètre

λ\lambda

détermine la rigidité de la tendance :

2. Valeur du Paramètre λ\lambda

 

La valeur de

λ\lambda

dépend de la fréquence de la série temporelle :

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()}")
    Résultat du code

    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.