En la siguiente entrada se crea una función sencilla que combinada con la función vectorizada across, permite obtener el componente cíclico de las series numéricas contenidas en una base de datos. Para tales fines se usan datos de la economía de Canada, disponibles en R en la base de datos con el mismo nombre.
library(dplyr)
library(mFilter)
library(ggplot2)
library(mFilter)
data("Canada")
Canada %>% head()
e prod rw U
1980 Q1 929.6105 405.3665 386.1361 7.53
1980 Q2 929.8040 404.6398 388.1358 7.70
1980 Q3 930.3184 403.8149 390.5401 7.47
1980 Q4 931.4277 404.2158 393.9638 7.27
1981 Q1 932.6620 405.0467 396.7647 7.37
1981 Q2 933.5509 404.4167 400.0217 7.13
library(mFilter)
library(ggplot2)
library(mFilter)
Canada %>% head()
e prod rw U
1980 Q1 929.6105 405.3665 386.1361 7.53
1980 Q2 929.8040 404.6398 388.1358 7.70
1980 Q3 930.3184 403.8149 390.5401 7.47
1980 Q4 931.4277 404.2158 393.9638 7.27
1981 Q1 932.6620 405.0467 396.7647 7.37
1981 Q2 933.5509 404.4167 400.0217 7.13
Partir de una representación grafica de las series siempre es una buena opción:
lnx <- log(x)
clnx <- mFilter::hpfilter(x,freq=50,type="frequency",drift=T)["cycle"]
unlist(clnx)
}
data.frame() %>%
mutate(across(where(is.numeric), ~cicloHP(.x)))
Finalmente usamos la referida función:
autoplot(facet = T)