首页 > 其他分享 >R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析|附代码数据

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

时间:2023-06-27 23:56:08浏览次数:46  
标签:模态 语言 HP 滤波 date 过滤器 序列 回归

全文下载链接:http://tecdat.cn/?p=9350

最近我们被客户要求撰写关于经济时间序列的研究报告,包括一些图形和统计输出。

经济时间序列的分析通常需要提取其周期性成分。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分 ( 点击文末“阅读原文”获取完整代码数据******** ) 。

它基于《宏观经济学手册》中Stock和Watson(1999)关于商业周期的章节,但也介绍了一些较新的方法,例如汉密尔顿(2018)替代HP滤波器,小波滤波和_经验模态分解_。

数据

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

 
#加载用于数据下载和转换的软件包
library(dplyr)

#下载数据
"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()

图片

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


点击标题查阅往期内容

图片

R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

与线性趋势的偏差

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

 
# 添加趋势
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 采样

图片

图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

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

点击标题查阅往期内容

R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
R语言中的偏最小二乘回归PLS-DA
R语言中的偏最小二乘PLS回归算法
偏最小二乘回归(PLSR)和主成分回归(PCR)
R语言用线性模型进行预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
R语言使用ARIMAX预测失业率经济时间序列数据
R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油时间序列价格
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析
R语言计量经济学与有时间序列模式的机器学习预测
R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
R语言从经济时间序列中用小波滤波和经验模式分解等提取周期性成分分析
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
R语言实现偏最小二乘回归法 partial least squares (PLS)回归
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
R语言Lasso回归模型变量选择和糖尿病发展预测模型
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python贝叶斯回归分析住房负担能力数据集
Python用PyMC3实现贝叶斯线性回归模型

标签:模态,语言,HP,滤波,date,过滤器,序列,回归
From: https://www.cnblogs.com/tecdat/p/17510233.html

相关文章

  • PHP序列化与反序列化
    PHP反序列化漏洞序列化和反序列化本身是为了实现数据在网络上完整高效的传输,但是由于反序列化过程中,对象的魔术方法会自动调用,魔术方法本身调用了别的方法,最终呈现一种链式调用,直到执行任意的代码或者命令。序列化与反序列化seriallization序列化:将对象转化为便于传输的格式,......
  • PHP 建站推荐十个免费的CMS内容管理系统
    个人想建站?就在下面10个选吧。选好一个,安心做内容就行了。这是sun的体会。选择哪个CMS并不重要,除了对搜索引擎的亲好外,个人的使用操作习惯和对所选CMS系统的熟悉程度有很大关系。这里为需要建站但又徘徊的朋友介绍10个免费PHP+MySql平台下的CMS内容管理系统,可能会对你的选择有指导......
  • 使用arcgispro将shp格式地图转换为移动端使用的geodatabase格式数据
    使用arcgispro将shp格式地图转换为移动端使用的geodatabase格式数据导入完成......
  • PHP语言对接抖音快手小红书视频/图片去水印API接口的案例
    这篇文章主要介绍了PHP语言对接抖音快手小红书视频/图片去水印API接口的案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。以下为PHP语言调用去水印接口的示例,展示GET请求方式的调用方式。示例代码中用到的Uid和Toke......
  • PHP代码加密实战过程 Swoole Loader
    帮一个客户处理一个小程序bug修复,前面不知道客户是直接购买一个倒闭的公司产品,还是破解版本的。其中一些核心工具类代码进行了加密,通过排查就找到了SwooleCompiler 今天演示下如何进行代码加密:大致步骤如下:注册 SwooleCompiler 账号地址:Swoole-Compiler-最佳PHP......
  • 代购源码,淘宝代购系统源码,代购程序,代购系统源码PHP前端源码参数说明
    代购业务场景:代购业务近年兴起的一种购物模式,是帮国外客户购买中国商品。主要通过外贸代购模式,把淘宝、天猫等电商平台的全站商品通过API接入到你的网站上,瞬间就可以架设一个有数亿产品的大型网上商城,而且可以把这些中文的商品全部自动翻译成各国语言,能让国外客户看懂,直接在网站......
  • 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真
    伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlabSimulink仿真1.模型简介 模型为基于陷波滤波器的双惯量伺服系统机械谐振抑制仿真,采用MatlabR2018aSimulink搭建。仿真模型由传递函数形式搭建,主要包括转速环、电流环、低通滤波器、陷波滤波器、双惯量谐振模型。原......
  • 路面附着系数估计_无迹扩展卡尔曼滤波(UKF EKF)采用无迹 扩展卡尔曼滤波UKF进行路面附着
    路面附着系数估计_无迹扩展卡尔曼滤波(UKFEKF)软件使用:MatlabSimulink适用场景:采用无迹扩展卡尔曼滤波UKF进行路面附着系数估计,可实现“不变路面,对接路面和对开路面”等工况的路面附着系数估计。产品simulink源码包含如下模块:→整车模块:7自由度整车模型→估计模块:无迹卡尔曼......
  • 直驱永磁风机并网chopper低电压穿越 可调节电网,交流断路器,LCL 滤波器,网侧变换器,Choppe
    Matlabsimulink仿真,直驱永磁风机并网chopper低电压穿越,版本matlab2018a直驱风力发电系统MATLAB仿真说明原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/672811739737.html1MATLAB仿真模型直驱风力发电系统MATLAB仿真模型如图1所示,主电路从左到右包括:可调节电网,交......
  • PHP 基础知识
    目录PHP基础 2PHP代码标记 2PHP注释 2PHP语句分隔符 2PHP变量 3常量 3数据类型 4流程控制 6文件 7函数 9闭包 11常用系统函数 12错误处理 13错误显示设置 15字符串类型 17字符串相关函数 19数组 21遍历数组 22数组的相关函数 25PHP基础PHP是一种运行在服务器端的脚本语言,可以嵌入......