A34-Aplicación del Filtro de Hodrick Prescott
Ciudad Universitaria, 7 de Enero de 2025
Carga de datos
library(readxl)
library(dplyr)
library(tidyr)
library(mFilter)
# Cargar los datos
file_path <- "./datos_PIB_trim_CA.xlsx"
data <- read_excel(file_path, skip = 4)
# Renombrar columnas
colnames(data) <- c('Fechas', 'Costa_Rica', 'El_Salvador', 'Guatemala', 'Honduras',
'Nicaragua', 'Republica_Dominicana', 'Panama')
# Limpiar datos
data <- data %>%
filter(!is.na(Fechas)) %>%
mutate(across(-Fechas, ~na_if(.x, "--"))) %>%
mutate(across(-Fechas, as.numeric))Costa Rica
Implementación Personalizada
# Filtrar datos para Costa Rica
data_costa_rica <- data %>% filter(!is.na(Costa_Rica))
# Crear la serie temporal para Costa Rica
PIB_trim <- ts(data_costa_rica$Costa_Rica,
start = c(as.numeric(substr(data_costa_rica$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_costa_rica$Fechas[1]
fin <- data_costa_rica$Fechas[nrow(data_costa_rica)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Costa Rica (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - Costa Rica (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)El Salvador
Implementación Personalizada
# Filtrar datos para El Salvador
data_el_salvador <- data %>% filter(!is.na(El_Salvador))
# Crear la serie temporal para El Salvador
PIB_trim <- ts(data_el_salvador$El_Salvador,
start = c(as.numeric(substr(data_el_salvador$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_el_salvador$Fechas[1]
fin <- data_el_salvador$Fechas[nrow(data_el_salvador)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - El Salvador (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - El Salvador (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)Guatemala
Implementación Personalizado
# Filtrar datos para Guatemala
data_guatemala <- data %>% filter(!is.na(Guatemala))
# Crear la serie temporal para Guatemala
PIB_trim <- ts(data_guatemala$Guatemala,
start = c(as.numeric(substr(data_guatemala$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_guatemala$Fechas[1]
fin <- data_guatemala$Fechas[nrow(data_guatemala)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Guatemala (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - guatemala (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)Honduras
Implementación Personalizada
# Filtrar datos para Honduras
data_honduras <- data %>% filter(!is.na(Honduras))
# Crear la serie temporal para Honduras
PIB_trim <- ts(data_honduras$Honduras,
start = c(as.numeric(substr(data_honduras$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_honduras$Fechas[1]
fin <- data_honduras$Fechas[nrow(data_honduras)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Honduras (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - Honduras (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)Nicaragua
Implementación Personalizada
# Filtrar datos para Nicaragua
data_nicaragua <- data %>% filter(!is.na(Nicaragua))
# Crear la serie temporal para Nicaragua
PIB_trim <- ts(data_nicaragua$Nicaragua,
start = c(as.numeric(substr(data_nicaragua$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_nicaragua$Fechas[1]
fin <- data_nicaragua$Fechas[nrow(data_nicaragua)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Nicaragua (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - Nicaragua (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)República Dominicana
Implementación Personalizada
# Filtrar datos para República Dominicana
data_republica_dominicana <- data %>% filter(!is.na(Republica_Dominicana))
# Crear la serie temporal para República Dominicana
PIB_trim <- ts(data_republica_dominicana$Republica_Dominicana,
start = c(as.numeric(substr(data_republica_dominicana$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_republica_dominicana$Fechas[1]
fin <- data_republica_dominicana$Fechas[nrow(data_republica_dominicana)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Republica Dominicana (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - República Dominicana (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)Panamá
Implementación Personalizada
# Filtrar datos para Republica Panamá
data_panama <- data %>% filter(!is.na(Panama))
# Crear la serie temporal para Panamá
PIB_trim <- ts(data_panama$Panama,
start = c(as.numeric(substr(data_panama$Fechas[1], 1, 4)), 1),
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer componentes
trend <- hp_result$trend
cycle <- hp_result$cycle
# Periodo de los datos
inicio <- data_panama$Fechas[1]
fin <- data_panama$Fechas[nrow(data_panama)]
periodo <- paste(inicio, "-", fin)
# Gráfico personalizado
plot(PIB_trim, type = "l", main = paste("Filtro HP - Panamá (", periodo, ")"),
ylab = "PIB", xlab = "Tiempo", col = "black", lwd = 1)
lines(trend, col = "red", lwd = 2)
legend("topleft", legend = c("PIB Original", "Tendencia (Filtro HP)"),
col = c("black", "red"), lty = 1, lwd = 2)# Gráfico del componente cíclico
plot(cycle, type = "l", main = paste("Componente Ciclico - Panamá (", periodo, ")"),
ylab = "Ciclo", xlab = "Tiempo", col = "blue", lwd = 1)