原文链接:http://tecdat.cn/?p=9350

原文出处:拓端数据部落公众号


经济时间序列的分析通常需要提取其周期性成分。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分。它基于《宏观经济学手册》中Stock和Watson(1999)关于商业周期的章节,但也介绍了一些较新的方法,例如汉密尔顿(2018)替代HP滤波器,小波滤波和经验模态分解

数据

我使用从1970Q1到2016Q4的美国对数实际GDP的季度数据来说明不同的方法。时间序列是通过  Quandl  及其相应的R包获得的。

#加载用于数据下载和转换的软件包
library(dplyr)
library(Quandl)
library(tidyr)#下载数据
data <- Quandl("FRED/GDPC1", order = "asc",start_date = "1970-01-01", end_date = "2016-10-01")  %>%rename(date = Date,gdp = Value) %>%mutate(lgdp = log(gdp)) # 获取对数
library(ggplot2)ggplot(data, aes(x = date, y = lgdp)) +geom_line() +theme_classic() 

数据有明显的增长趋势,到现在似乎逐渐变小。此外,似乎或多或少有规律地围绕这一趋势波动。与趋势之间存在相对较长的持久偏差,可以将其视为周期性波动。

与线性趋势的偏差

从系列中提取趋势的第一种方法是在常数和趋势项上回归目标变量并获得拟合值。在下图中绘制。

# 添加趋势
data <- data %>%mutate(trend = 1:n())# 用常数和趋势估算模型
time_detrend <- fitted(lm(lgdp ~ trend, data = data))
names(time_detrend) <- NULL# 将系列添加到主数据框
data <- data %>%mutate(lin_trend = time_detrend)# 为图创建数据框
temp <- data %>%select(date, lgdp, lin_trend) %>%gather(key = "Variable", value = "value", -date)# 画图
ggplot(temp, aes(x = date, y = value, colour = Variable)) +

此方法相对有争议,因为它假定存在恒定的线性时间趋势。正如我们在上面看到的,鉴于趋势的增长率随着时间的推移持续下降,这不太可能。但是,仍然可以采用时间趋势的其他函数形式(例如二次项)来说明趋势的特殊性。该方法的另一个缺点是,它仅排除趋势,而不排除噪声,即序列中很小的波动。

Hodrick-Prescott过滤器

Hodrick和Prescott(1981)开发了一个过滤器,将时间序列分为趋势和周期性分量。与线性趋势相反,所谓的  HP过滤器可  估算趋势,该趋势会随时间变化。研究人员手动确定允许这种趋势改变的程度,即平滑参数λλ。

文献表明季度数据的值为1600。但是,也可以选择更高的值。下图绘制了由HP过滤器获得的实际GDP周期性成分的值,并将其与线性趋势下的序列的值进行比较。

尽管HP过滤器在经济学中得到了广泛的应用,但它们的某些功能也受到了广泛的批评。

基于回归的HP过滤器

汉密尔顿(2018)还提出了另一种HP过滤器的方法。它可以归结为一个简单的回归模型,其中 时间序列的 h 前导根据时间序列的最新p值进行回归。

Baxter King过滤器

Baxter和King(1994,1999)提出了一种过滤器,其产生的结果与HP过滤器非常相似。另外,它从时间序列中去除了噪声,因此可以对周期分量进行平滑估计。该方法的一个相对严重的缺点是,平滑因子导致序列开始和结束时观测值的损失。当样本量较小且当前经济状况令人关注时,这可能是一个问题。

小波滤波器

Yogo(2008)提出使用小波滤波器从时间序列数据中提取业务周期。该方法的优点是该函数不仅允许提取序列的趋势,周期和噪声,而且还可以更明确地了解周期发生的时间段。

R中的方法实现也很简洁,但是在使用之前需要进行一些其他的数据转换。

 # 计算对数GDP的一阶差分
data <- data %>%mutate(dlgdp = lgdp - lag(lgdp, 1))#获取数据
y <- na.omit(data$dlgdp)#运行过滤器
wave_gdp <- mra(y, J = 5)# 创建用于绘制的数据框
temp <- wave_gdp %>%gather(key = "imf", # 绘制mra输出
ggplot(temp, aes(x = date, y = value)) +geom_line() +

data <- data %>%select(date, bk, wave) %>%gather(key = "Variablggplot(temp, aes(x = date, y = value, colour = Variable)) +geom_hlin

经验模态分解(EMD)

Kozic和Sever(2014)提出了经验模态分解作为商业周期提取的另一种方法,正如Huang等人(2014年)提出的那样。(1998)。 emd 函数可以在EMD  包中找到,  并且需要一个不同的时间序列,一个边界条件和一个指定的规则,在该点上迭代算法可以停止。滤波方法的结果与HP,BK和小波滤波相对不同。

Chan(2017)

初始值

# X_gamma
x_gamma <- cbind(2:(tt +# H_2
h2 <- diag(1, tt)
diag(h2[-1,
t)]) <- 1
h2h2 <- crossprod(h2)# H_phi
h_phi <- diag(1, tt)
phi <- matrix(# sigma tau的逆
s_tau_i <- 1 / .001#  sigma c的逆
s_c_i <- 1 / .5# gamma
gamma <- t(rep(y[1], 2)) # 应该接近该序列的第一个值

Gibbs 采样


最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测

拓端tecdat|R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析相关推荐

  1. R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析

    经济时间序列的分析通常需要提取其周期性成分.最近我们被客户要求撰写关于经济时间序列的研究报告,包括一些图形和统计输出.这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分.它基于<宏观经 ...

  2. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  3. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

  4. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...

  5. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  6. R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)

    R语言ggplot2可视化时间序列散点图.X轴和Y轴都是时间信息.使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis) 目录

  7. R语言ggplot2可视化时间序列数据并添加稳定趋势线识别数据的稳定趋势

    R语言ggplot2可视化时间序列数据并添加稳定趋势线识别数据的稳定趋势 目录 R语言ggplot2可视化时间序列数据并添

  8. R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)

    R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot) 目录

  9. R语言ggplot2可视化时间序列数据并突出标注重要时间点数据实战:特殊节点标签标注、特殊区域标注

    R语言ggplot2可视化时间序列数据并突出标注重要时间点数据实战:特殊节点标签标注.特殊区域标注 目录

  10. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

最新文章

  1. 红旗linux yum,更换红旗Linux: Asianux的yum源为网易源
  2. matlab中实时脚本与纯代码脚本
  3. mysql for Mac 下创建数据表中文显示为?的解决方法
  4. 学校计算机老师工作总结,计算机老师年终工作总结
  5. python爬取分页数据
  6. ldo和dcdc功耗_ldo与dcdc区别、原理及应用详解
  7. Chrome浏览器12px问题-webkit-text-size-adjust: none 已失效的解决方案
  8. ASP.NET Core - 在ActionFilter中使用依赖注入
  9. 《学习JavaScript数据结构与算法》第三章 数组
  10. 线程(进程线程的比较)
  11. 有源光网络VS无源光网络
  12. RNDIS的usb网卡功能调试
  13. 石河子大学计算机专业录取分数线,石河子大学2020年录取分数线(附2017-2020年分数线)...
  14. Unity开发时遇到的各种需要注意的地方
  15. ado.net访问ORACLE数据库点滴
  16. 74HC138三八译码器的应用
  17. matlab两轮自平衡小车,基于LQR算法两轮自平衡小车的系统设计与研究
  18. 橄榄油可以用来炒菜吗
  19. Lecture 07 08 RNN---Hinton课程
  20. 系统结构-并行算法FORK JOIN

热门文章

  1. Android模拟器安装apk应用程序
  2. STC1_FULLSCREEN_TABLE_CONTROL
  3. 【课本】【No.4】数字特征 离散/连续均值/方差 随机向量 协方差 相关系数 矩 偏度 峰度 多维均值/协方差 运算性质 条件期望 随机个随机向量的和 正态中的条件期望是线性函数
  4. Kafka 0.10.1.1 特点
  5. C++--第5课 - 新的关键字
  6. Mysql优化(出自官方文档) - 第二篇
  7. Java 并发和多线程(一) Java并发性和多线程介绍[转]
  8. 凸优化第四章凸优化问题 4.6 广义不等式约束
  9. for/map循环里面进行异步操作async/await后返回数据,for里不能直接return执行方法函数...
  10. SpringBoot1.5.9集成Activiti6