A34-Aplicación del Filtro de Hodrick Prescott
MARIANA IVETTE ZELAYA CASTILLO - ZC23003
Filtro de Hodrick Prescott[HP]
Indicaciones
Usando los datos incluidos en el archivo datos_PIB_trime_CA.xlsx:
• Aplique el filtro HP para cada uno de los países de Centroamérica, para los periodos disponibles para cada país
• represente sus resultados de forma gráfica:
o 1. Usando la versión personalizada y
o 2. usando la representación rápida.
o En todos los gráficos indique el país y el periodo al que corresponden los datos.
Carga de datos y de librerías
# 1. Carga de Librerías
library(readxl)
library(mFilter)
library(forecast)
library(tidyr)
library(dplyr)
library(stringr)
## 2. Carga y Depuración General de los Datos
file_path <- "E:/Metodos/datos_PIB_trim_CA.xlsx"
# Carga de los datos (Saltando las 4 filas de metadata)
data <- read_excel(file_path, skip = 4)
# Renombro las columnas para que se me facilite
colnames(data) <- c('Fechas', 'Costa_Rica', 'El_Salvador', 'Guatemala',
'Honduras', 'Nicaragua', 'Republica_Dominicana', 'Panama')
# Función de ayuda para convertir la fecha (e.g. "1991-I" -> c(1991, 1))
obtener_inicio_ts <- function(fecha_trimestral) {
partes <- unlist(str_split(fecha_trimestral, "-"))
anio <- as.numeric(partes[1])
trimestre <- switch(partes[2], "I" = 1, "II" = 2, "III" = 3, "IV" = 4, NA)
return(c(anio, trimestre))
}
# Depurar los datos: limpiar '--', convertir a numérico, y eliminar filas de metadata (Esto sirve para que solo se aplique para los periodos disponibles para cada país)
datos_limpios <- data %>%
slice(-1) %>% # Quita la fila de la unidad de medida
mutate(Fechas = trimws(Fechas)) %>%
filter(!is.na(Fechas)) %>%
mutate(across(-Fechas, ~na_if(.x, "--"))) %>%
mutate(across(-Fechas, as.numeric))Costa Rica
Aplicación en R: Implementación Personalizada
# Filtrar datos de Costa Rica
data_analisis <- datos_limpios %>%
select(Fechas, Costa_Rica) %>%
filter(!is.na(Costa_Rica))
# Generar Serie Temporal (ts) - Nombre del objeto: PIB_trim
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Costa_Rica,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - Costa Rica (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)El Salvador
Aplicación en R: Implementación Personalizada
# Filtrar datos de El Salvador
data_analisis <- datos_limpios %>%
select(Fechas, El_Salvador) %>%
filter(!is.na(El_Salvador))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$El_Salvador,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - El Salvador (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)Guatemala
Aplicación en R: Implementación Personalizada
# Filtrar datos de Guatemala
data_analisis <- datos_limpios %>%
select(Fechas, Guatemala) %>%
filter(!is.na(Guatemala))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Guatemala,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - Guatemala (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)Honduras
Aplicación en R: Implementación Personalizada
# Filtrar datos de Honduras
data_analisis <- datos_limpios %>%
select(Fechas, Honduras) %>%
filter(!is.na(Honduras))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Honduras,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - Honduras (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)Nicaragua
Aplicación en R: Implementación Personalizada
# Filtrar datos de Nicaragua
data_analisis <- datos_limpios %>%
select(Fechas, Nicaragua) %>%
filter(!is.na(Nicaragua))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Nicaragua,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - Nicaragua (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)República Dominicana
Aplicación en R: Implementación Personalizada
# Filtrar datos de República Dominicana
data_analisis <- datos_limpios %>%
select(Fechas, Republica_Dominicana) %>%
filter(!is.na(Republica_Dominicana))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Republica_Dominicana,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: República 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - República Dominicana (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)Panamá
Aplicación en R: Implementación Personalizada
# Filtrar datos de Panamá
data_analisis <- datos_limpios %>%
select(Fechas, Panama) %>%
filter(!is.na(Panama))
# Generar Serie Temporal (ts)
fecha_inicio <- data_analisis$Fechas[1]
start_ts <- obtener_inicio_ts(fecha_inicio)
# **PIB_trim**
PIB_trim <- ts(data_analisis$Panama,
start = start_ts,
frequency = 4)
# Aplicar el filtro Hodrick-Prescott
hp_result <- hpfilter(PIB_trim, freq = 1600)
# Extraer la tendencia y el ciclo
trend <- hp_result$trend
cycle <- hp_result$cycle
# Definir el periodo (Para los gráficos)
inicio <- data_analisis$Fechas[1]
fin <- data_analisis$Fechas[nrow(data_analisis)]
periodo <- paste(inicio, "-", fin)
##Visualización de Resultados
# Gráfico 1: PIB Original vs. Tendencia
plot(PIB_trim, type = "l",
main = paste("Filtro de Hodrick-Prescott: 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 2: Componente Cíclico
plot(cycle, type = "l",
main = paste("Componente Cíclico - Panamá (", periodo, ")"),
ylab = "Ciclo",
xlab = "Tiempo")
abline(h = 0, col = "gray", lty = 2)