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

3次阅读

共计 3550 个字符,预计需要花费 9 分钟才能阅读完成。

全文下载链接: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 实现贝叶斯线性回归模型

正文完
 0