分解南非GDP数据
本文包含各种过滤器,可用于分解南非GDP的方法。我们做的第一件事是清除当前环境中的所有变量。这可以通过以下命令进行。
rm(list = ls()) graphics.off()
载入数据
如前所述,南非的GDP数据将其作为时间序列存储在gdp中,我们执行以下命令。
gdp <- ts(dat.tmp, start = c(1960, 2), frequency = 4)
为了确保这些计算和提取的结果是正确的,我们检查一下数据的图表。
plot(gdp)
线性滤波器_去除数据线性趋势_
为了估计一个线性趋势,我们可以利用一个包括时间趋势和常数的线性回归模型。为了估计这样一个模型,我们使用lm命令,如下。
lin.mod$fitted.values # 拟合值与时间趋势有关 ts(lin.trend, start = c(1960, 1)) # 为趋势创建一个时间序列变量 gdp - linear # 周期是数据和线性趋势之间的差异
回归的拟合值包含与线性趋势有关的信息。这些信息需要从模型对象lin.mod中提取,在上面的块中,我们将这些值分配给时间序列对象linear。然后从数据中剔除趋势,就得到了周期。
然后我们可以借助下面的命令来绘制这个结果,其中趋势和周期被绘制在不同的数字上。
plot.ts(gdp, ylab = "") lines(linear, col = "red") legend("topleft", legend = c("data", "trend")
霍德里克 - 普雷斯科特 (Hodrick-Prescott,HP) _滤波器_对数据进行去趋势处理
要用流行的HP滤波法分解这个数据。在这种情况下,我们将lambda的值设置为1600,这也是对季度数据的建议。
hp(gdp, freq = 1600) plot.ts(gdp, ylab = "") # 绘制时间序列 plot.ts(hp.decom$cycle, ylab = "") # 绘制周期图
这似乎更准确地反映了我们对南非经济表现的理解。
01
02
03
04
用Baxter-King滤波器去趋势数据
为了利用Baxter-King 滤波器。在这种情况下,我们需要指定周期的频带,其上限被设定为32,下限被设定为6。
bk(gdp, pl = 6, pu = 32) plot.ts(gdp, ylab = "") plot.ts(cycle, ylab = "")
这似乎再次为南非经济活动的周期性提供了一个相当准确的表述。还要注意的是,周期的表示比以前提供的要平滑得多,因为噪音不包括在周期中。
分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法(二)https://developer.aliyun.com/article/1485946