分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法(三)https://developer.aliyun.com/article/1485948
如果我们现在想在数据上绘制趋势(父小波)。
plot.ts(inf, ylab = "inf") lines(ren)
请注意,由于各自的频段是相加的,我们可以将其中一个母频段加入到趋势中,如下所示。
inf.tmp <- inf.tren + inf.d4$w3 inf.tren2 <- ts(inf.tmp, start = c(2003, 1), frequency = 12) plot.ts(inf.yoy, ylab = "inf") lines(inf.tren2, col = "red")
相关经济变量的周期性成分之间的相关性
为了确定周期的特征是否合适,我们可以考虑宏观经济总量的一些不同周期性方法之间的相关性。例如,我们可以考虑产出和生产(或就业)的周期性在不同的滞后期应该是相关的。如果它们不相关,那么该方法可能无法准确描述各自变量的周期性成分。
在本文使用的例子中,代码可能有点难以理解,但我们鼓励你自己去研究,以提高你对这个编码环境的总体理解。
下一步是读入数据并为数据的各种周期性成分创建一些矩阵。
yd <- dat\[5:n.obs, \] - dat\[1:(n.obs - 4), \] # 存储输出 yc_li <- matrix(rep(0, n.obs * n.var), ncol = n.var) yc_hp <- matrix(rep(0, n.obs * n.var), ncol = n.var) yc_bp <- matrix(rep(0, n.obs * n.var), ncol = n.var) yc_bn <- matrix(rep(0, n.obs * n.var), ncol = n.var)
使用上面包含的方法对数据进行过滤。
for (i in 1:n) { # 用线性滤波器对数据进行去趋势处理 lin.mod <- lm(dat\[, i\] ~ time(dat\[, i\])) # 用HP滤波器去趋势数据 yc_hp\[, i\] <- hp.cycle #用带通滤波器去趋势数据 yc_bp\[, i\] <- bp.cycle # Beveridge-Nelson分解 yc_bn\[, i\] <- bn.\[, 2\] }
计算不同提前期和滞后期的相关关系。
for (i in 1:n) { for (j in 1:n.var) { c\_li <- leadlag(yc\_li\[, i\], yc_li\[, j\], maxLeadLag) c\_hp <- leadlag(yc\_hp\[, i\], yc_hp\[, j\], maxLeadLag) c_bp c_bn c_yd for (k in 1:5) { ynamesLong\[(cnt + k), 1\] <- paste(ynames.tmp) } cnt <- cnt + 5
绘制结果。
# 线性趋势 barplot(corrStylizedFact) box()
# hp滤波器 op <- par(mfrow = c(1, 3)) barplot(corrStyli, ylim = c(-1, 1)) box()
# beveridge nelson 分解 barplot(coracts, ylim = c(-1, 1), col = "red") box()