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

news2024/11/20 6:26:26

 经济时间序列的分析通常需要提取其周期性成分。最近我们被客户要求撰写关于经济时间序列的研究报告,包括一些图形和统计输出。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分。它基于《宏观经济学手册》中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 = "Variabl

ggplot(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 采样


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeScript和JavaScript的区别,全面解读超详细(二)

了解基础篇&#xff1a;请跳转 3.4.3 TS的编译 点击跳转 TypeScript和JavaScript的区别,全面解读超详细 我们知道.js的文件可以直接在浏览器中运行的&#xff0c;而.ts或者.tsx却不行&#xff0c;所以我们在运行TS项目时需要编译成浏览器引擎可以识别的JS语言。同时为了提高编…

体验最近火爆的ChatGPT

体验最近火爆的ChatGPT演示前言体验1. 回答问题2. 写方案、写作3. 写代码4. 各种古怪刁钻问题回答国内用户如何注册ChatGPT账号并在线体验如果不能在官网体验&#xff0c;可以在我的网站上体验演示 体验最近火爆的ChatGPT 前言 前几天OpenAI公布了ChatGPT算是火爆朋友圈&…

基于Java+Swing+mysql图书管理系统

基于JavaSwingmysql图书管理系统一、系统介绍二、功能展示1.用户登陆2.系统主页3.图书查询4.图书添加5.图书修改6.图书删除7.办理借书8.办理还书9.历史查询10.用户查询、删除&#xff08;管理员&#xff09;三、数据库四、其它1.其他系统实现一、系统介绍 该系统实现了 用户: …

基于多目标灰狼算法的冷热电联供型微网低碳经济调度附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

天翼物联获2022年移动物联网“先进企业”

近日&#xff0c;由工信部指导、中国信通院等单位主办的“首届移动物联网大会”在无锡圆满落幕。天翼物联获2022年移动物联网“先进企业”奖。 今年&#xff0c;我国移动物联网终端用户16.98亿户&#xff0c;超越移动电话16.78亿用户数&#xff0c;正式进入“物超人”时代&…

C++-变量

目录定义变量使用变量全局变量与局部变量作用域和生存期存储类typedefconst符号常量C11的变量初始化列表定义变量 1、存储类 类型名 变量名<初值表达式> 2、存储类 auto,register,static,extern 3、类型名 数据类型&#xff0c;自己定义的或系统存在的 4、变量名 用户自…

[carla] carla-ros-bridge 修改信号灯行为。

本教程适用于采用编译下载安装方式安装carla-ros-bridge 的用户。 1.修改信号灯 1.1 修改原理 我们要通过API过滤出所有绿灯的actor信息&#xff0c;然后修改他们的状态为常绿。 查阅API网站可知traffic_light具有set_state&#xff08;self,state&#xff09;方法 https:/…

说一说刚拿下BIRTV推荐的中国8K摄像机新品

“从边缘走向中心&#xff0c;从跟随逐渐引领&#xff0c;变化已经在发生。” —————————————————————————————————————————— 2022年发生了很多事情&#xff0c;但有一件事&#xff0c;无可比拟&#xff0c;那就是冬奥。 2022北京…

ADI Blackfin DSP处理器-BF533的开发详解16:KEY按键的实现(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 实现原理 ADSP-EDU-BF53x 开发板上的按键连接到了 CPLD&#xff0c;通过 CPLD 将按键信号与 EBIU 总线和中断管脚 PF0 连接&#xff0c;并将中断…

Python做曲线拟合(一元多项式拟合及任意函数拟合)

目录 1. 一元多项式拟合 使用方法 np.polyfit&#xff08;x, y, deg&#xff09; 2. 任意函数拟合 使用 curve_fit() 方法 实例&#xff1a; &#xff08;1&#xff09;初始化 x 和 y 数据集 &#xff08;2&#xff09;建立自定义函数 &#xff08;3&#xff09;使用自…

数字滤波算法 在数字信号处理应用中使用微控制器

提示&#xff1a;数字滤波算法 在数字信号处理应用中使用微控制器 文章目录1.介绍1.1. 关键点2. 数字FIR滤波器2.1. 数字滤波器算法2.1.1. IIR滤波器算法2.1.2. FIR滤波器算法2.2. C8051F12x和C8051F36x的FIR算法实现2.2.1. 实施优化2.2.2. FIR滤波器示例2.3. 运行FIR演示2.3.1…

ML.NET 奇异谱分析(SSA Singular spectrum analysis)预测实践

一、奇异谱分析(Singular Spectrum Analysis, SSA) 简介 奇异谱分析(Singular Spectrum Analysis, SSA)是一种处理非线性时间序列数据的方法&#xff0c;通过对所要研究的时间序列的轨迹矩阵进行分解、重构等操作&#xff0c;提取出时间序列中的不同成分序列(长期趋势&#xff…

Linux命令_ps 进程管理

简介 ps通过读取 /proc 中的虚拟文件来工作&#xff0c;不需要 setuid kmem 或有任何特权来运行。 CPU使用率目前表示为进程整个生命周期中运行所花费时间的百分比。这是不理想的&#xff0c;它不符合ps在其他方面所符合的标准。CPU使用率加起来不太可能达到100%。 SIZE和RSS字…

ORB-SLAM2 ---- ORBmatcher::SearchForInitialization函数

目录 1.函数作用 2.执行流程 3.函数参数解析 4.code 5.函数解析 5.1 旋转直方图的构建与作用 5.2 遍历帧1中的特征点在帧2中找出候选匹配特征点 5.3 第一层筛选 -- 阈值、最优/次优比例、重复匹配 5.4 第二层筛选 -- 旋转直方图 5.5 final 将最后通过筛选的匹…

web前端课程设计——动漫网页2个网页HTML+CSS web前端开发技术 web课程设计 网页规划与设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

【图】深度优先遍历 广度优先遍历

文章目录一、广度优先遍历二、深度优先遍历深度优先遍历和广度优先遍历是遍历图的两种常见方式&#xff0c;接下来就通过这两种方式来实现一下图具体遍历的过程 当我位于游乐园的景区 A 时&#xff0c;为了玩遍所有的景区我们有两种玩的方式&#xff1a; 方式一&#xff1a; …

HDLbits——移位寄存器

移位寄存器 1 4 位移位寄存器 module top_module(input clk,input areset, // async active-high reset to zeroinput load,input ena,input [3:0] data,output reg [3:0] q); always (posedge clk or posedge areset) beginif (areset)q<4h0;else if(load)q<data;els…

linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本

前言&#xff1a; shell脚本的功能十分强大&#xff0c;这一点毋庸置疑的。那么&#xff0c;平常的工作中总是免不了和脚本打交道&#xff0c;也免不了要自己编写一些脚本。 每个人都希望自己编写的脚本强壮&#xff0c;简单&#xff0c;易用&#xff0c;功能多&#xff0c;并…

CDH中某一结点任务异常,节点服务重启失败报错:No space left on device

文章目录Error Message - 报错信息Analysis Process - 分析思路Solution - 解决方案Error Message - 报错信息 今天发现cdh集群的某一个节点任务爆红了&#xff0c;因为是测试的服务器&#xff0c;一般我都会尝试直接重启&#xff0c;但是该节点服务关闭后&#xff0c;竟然都无…

Spring Web

目录 概述 SpringMVC的组件 DispatcherServlet HandlerMapping HandlerAdapter SpringWeb的运行流程 Controller类的编写 RestController注解 RequestMapping注解 SpringWeb搭建 获取请求参数 解决POST请求中文乱码问题 Ajax返回JSON数据 跨域问题的解决 拦截器 …