Domingo, 30 de noviembre de 2025El filtro de Hodrick-Prescott (HP) es un método usado en macroeconomía para separar una serie temporal en dos partes:
Tendencia (movimiento de largo plazo)
Ciclo (fluctuaciones alrededor de la tendencia)
library(readxl)
library(dplyr)
PIB_CA <- read_excel("D:/MAE118/Portafolio de actividades/datos_PIB_trim_CA.xlsx",
skip = 5)
colnames(PIB_CA) <- c("Fecha", "Costa_Rica", "El_Salvador", "Guatemala",
"Honduras", "Nicaragua", "Republica_Dominicana", "Panama")
PIB_CA <- PIB_CA %>% mutate(across(-Fecha, as.character))
PIB_CA <- PIB_CA %>% mutate(across(-Fecha, ~na_if(.x, "--")))
PIB_CA <- PIB_CA %>% mutate(across(-Fecha, as.numeric))
PIB_CA <- PIB_CA %>% filter(!is.na(Fecha))library(dplyr)
library(mFilter)
pais <- "Costa_Rica"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "El_Salvador"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "Guatemala"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "Honduras"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "Nicaragua"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "Republica_Dominicana"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)library(dplyr)
library(mFilter)
pais <- "Panama"
data_pais <- PIB_CA %>% filter(!is.na(.data[[pais]]))
# Crear serie trimestral
trimestres <- c("I"=1, "II"=2, "III"=3, "IV"=4)
primer <- strsplit(data_pais$Fecha[1], "-")[[1]]
PIB_ts <- ts(
data_pais[[pais]],
start = c(as.numeric(primer[1]), trimestres[toupper(primer[2])]),
frequency = 4
)
# Filtro HP
hp_result <- hpfilter(PIB_ts, freq = 1600)
trend <- hp_result$trend
cycle <- hp_result$cycle
# Gráfico
periodo <- paste(data_pais$Fecha[1], "-", data_pais$Fecha[nrow(data_pais)])
plot(PIB_ts, type = "l",
main = paste("Filtro HP -", gsub("_"," ", pais), "\nPeriodo:", periodo),
ylab = "PIB", xlab = "Tiempo")
lines(hp_result$trend, col = "red", lwd = 2)
legend("topleft",
legend = c("PIB Original", "Tendencia (HP)"),
col = c("black", "red"), lty = 1, lwd = 2)