分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法1

简介: 分解商业周期时间序列:线性滤波器、HP滤波器、Baxter滤波器、Beveridge Nelson分解等去趋势法

分解南非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 = "")  # 绘制周期图

这似乎更准确地反映了我们对南非经济表现的理解。

用Baxter-King滤波器去趋势数据

为了利用Baxter-King 滤波器。在这种情况下,我们需要指定周期的频带,其上限被设定为32,下限被设定为6。

bk(gdp, pl = 6, pu = 32)
plot.ts(gdp, ylab = "")
plot.ts(cycle, ylab = "")

这似乎再次为南非经济活动的周期性提供了一个相当准确的表述。还要注意的是,周期的表示比以前提供的要平滑得多,因为噪音不包括在周期中。

Christiano-Fitzgerald滤波器去趋势数据

这个滤波器的性质与上面提供的非常相似。此外,产生与Baxter-King滤波器高度相似的结果。

plot.ts(gdp, ylab = "")
plot.ts(cfcycle, ylab = "")

用Beveridge-Nelson分解法 "去趋势 "数据

为了将数据分解为随机趋势和平稳周期,我们可以采用Beveridge-Nelson分解法。当采用这种技术时,我们需要指定与平稳部分有关的滞后期的数量。在我下面的例子中,我假设有八个滞后期。

plot.ts(gdp, ylab = "")
lines(bn.trend, col = "red")
plot.ts(bn.cycle, ylab = "")

比较周期的不同衡量标准

然后,我们可以将所有这些结果结合在一张图上,考虑各自的相似性和差异。在这个例子中,我创建了一个时间序列ts.union,但是我也可以先绘制一个单一的序列,然后再使用lines命令在上面绘制连续的图。

ts.union(lin.cycle, hp.decom, bp.decom, 
    cf.decom, bn.cycle)
plot.ts(comb, ylab = "")

谱分解

在我们考虑使用谱技术之前,最好先清除当前环境中的所有变量,并关闭所有的图。下一步是确保你可以通过使用library命令来访问这些包中的程序。

library(tsm)
library(TSA)
library(mFilter)

使用谱技术进行分解。我们可以为三个时间序列变量生成数值,然后将它们组合成一个单一的变量。

2 * cos(2 * pi * t * w\[1\]) + 3 * sin(2 * pi * t * 
    w\[1\])  # no.obs点上的6个周期的频率
4 * cos(2 * pi * t * w\[2\]) + 5 * sin(2 * pi * t * 
    w\[2\])  #频率为10个周期的观察点
6 * cos(2 * pi * t * w\[3\]) + 7 * sin(2 * pi * t * 
    w\[3\])  # 在没有观测点的情况下,频率为40个周期
y <- x1 + x2 + x3

为了观察这些变量,我们可以把它们绘制在一个单独的轴上。

par(mfrow = c(2, 2), mar = c(2.2, 2.2, 2, 1), cex = 0.8)
plot(x1, type = "l", main = "x1")
plot(x2, type = "l", main = "x2")
plot(x3, type = "l", main = "x3")
plot(y, type = "l", main = "y")


相关文章
|
Web App开发 安全 iOS开发
TrollStore巨魔商店永久安装APP 可实现IOS应用双开 安装任意APP
TrollStore 是一个永久签名的监禁应用程序,可以永久安装您在其中打开的任何 IPA。
14216 0
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
10659 2
POI生成EXCEL,公式不自动执行的有关问题
POI生成EXCEL,公式不自动执行的问题 场景:POI读取Excel模板。 当使用POI操作Excel时,发现由POI生成的公式能够在打开Excel是被执行, 而事先手工写入Excel模板文件的公式则不自动被调用,必须手动双击该Cell才能生效。
1884 0
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
245 0
【赵渝强老师】Memcached集群的架构
|
SQL 安全 网络协议
Web 常见攻击方式
【10月更文挑战第25天】这些只是一些常见的 Web 攻击方式,实际上还有许多其他的攻击手段。为了防范这些攻击,需要采取一系列的安全措施,如输入验证、输出编码、安全配置、身份验证等。同时,也需要不断提高用户的安全意识,以减少被攻击的风险。
351 1
QT TextEdit控件 全面详解
本文详细的介绍了TextEdit控件的各种操作,例如:获取内容、输入控件字符、保持在最后一行添加(自动滚屏)、定时关闭、添加数据换行、向鼠标位置插入一行字符、设置字体颜色属性等操作。 本系列QT全面详解文章目前共有十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。
2043 2
QT TextEdit控件 全面详解
|
安全 Linux 网络安全
Linux——OpenSSH如何升级到最新版本
Linux——OpenSSH如何升级到最新版本
2070 0
Linux——OpenSSH如何升级到最新版本
|
SQL 关系型数据库 MySQL
【MySQL-3】图形化界面工具DataGrip安装&配置&使用
【MySQL-3】图形化界面工具DataGrip安装&配置&使用
|
索引 Python
Pandas 2.2 中文官方教程和指南(二十五·一)(4)
Pandas 2.2 中文官方教程和指南(二十五·一)
89 0
|
机器学习/深度学习 自然语言处理 算法
词频-逆文档频率(Term Frequency-Inverse Document Frequency,
词频-逆文档频率(Term Frequency-Inverse Document Frequency,简称 TF-IDF)是一种统计方法,用以评估一个词对于一个文本或一组文本的重要性。
1030 3