Filtro de Hodrick Prescott[HP]

Introducción

  • El filtro de Hodrick-Prescott (HP) es una técnica ampliamente utilizada en macroeconomía para descomponer una serie temporal en una tendencia a largo plazo y un componente cíclico.

  • Este método fue desarrollado por Robert Hodrick y Edward Prescott en 1980 y se ha convertido en una herramienta esencial en el análisis económico y financiero.

Formulación del Filtro HP

  • La fórmula matemática básica del filtro HP minimiza la suma de dos componentes:

    1. La desviación entre la serie original (\(y_t\)) y la tendencia suavizada (\(\tau_t\)).

    2. La variación de la tendencia es suavizada para asegurar que no sea demasiado flexible.

Matemáticamente: \[\min \sum_{t=1}^{T} (y_t - \tau_t)^2 + \lambda \sum_{t=2}^{T-1} [(\tau_{t+1} - \tau_t) - (\tau_t - \tau_{t-1})]^2\]

\(\lambda\) es un parámetro de suavización que determina el equilibrio entre la fidelidad a los datos y la suavidad de la tendencia.

Valores comunes para \(\lambda\) son: 14400 para datos mensuales, 1600 para datos trimestrales, 100 para datos anuales.

Ventajas y Limitaciones

  • Ventajas: Sencillo de implementar, útil para análisis visual y de tendencias.

  • Limitaciones: Sensible a la elección de \(\lambda\), puede introducir artefactos en los extremos de la serie temporal, no adecuado para datos no estacionarios o con cambios estructurales.

Aplicación en R

Implementación Personalizada

library(readxl)
library(mFilter)
library(forecast)
# Carga de los datos 
PIB_trimestral <- read_excel("C:/Users/Ademir/Desktop/PIB_trimestral.xlsx")
PIB_trim<-ts(PIB_trimestral$PIB_trim,start = c(2005,1),frequency = 4)
# Aplica el filtro de Hodrick-Prescott
# Ajusta el parámetro lambda según la frecuencia de los datos, 1600 para datos trimestrales. 
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extrae la tendencia y el componente cíclico
trend <- hp_result$trend
cycle <- hp_result$cycle

# Visualiza los resultados
plot(PIB_trim, type = "l", main = "Filtro de Hodrick-Prescott", ylab = "PIB", xlab = "Tiempo")
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"), col = c("black", "red"), lty = 1, lwd = 2)

plot(cycle, type = "l", main = "Componente Ciclico", ylab = "Ciclo", xlab = "Tiempo")

Implementación más rápida del gráfico

plot(hp_result,ask = FALSE)