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

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

介绍

对商业周期的剖析须要提取工夫序列的周期性成分,该工夫序列通常也受到诸如潜在趋势或噪声等其余因素的影响。本文介绍了一些在最近的文献中用于从给定序列中提取商业周期的办法。它基于Stock and Watson(1999)在“宏观经济学手册”中对于商业周期的章节。我还介绍了绝对较新的办法,如小波滤波器或教训模式合成。因为这篇文章的重点是在R中实现某些过滤技术,我不会波及数学。相同,我将参考各自的文献。对于这些例子,我应用了理论GDP的季度数据。

names(gdp) <- c("Time","GDP") # 重命名gdp\[,"GDP"\] <- log(gdp\[,"GDP"\]) # 取对数

为了直观地理解提取工夫序列的周期性成分意味着什么,请查看下图中随工夫变动的对数理论GDP的倒退状况。

ggplot(gdp,aes(x=Time,y=GDP)) + geom\_line(size=.5) + theme\_classic()

数据有显著的增长趋势,逐步变小。此外,该序列以一种或多或少的惯例形式围绕这一趋势稳定。该序列与趋势的偏差十分小,这种偏差常常产生,但也有相当大的偏差,这种偏差可能会继续几个期间。后者是与商业周期剖析相干的稳定。

工夫趋于消退

从一序列中剔除趋势的第一种办法是在工夫变量上回归感兴趣的变量并取得残差。这些在下图中绘制,其中线性趋势被移除。

# 可视化ggplot(dat,aes(x=Time,y=Linearly.Detrended)) + geom\_hline+ geom\_line

这种办法绝对有争议,因为它假如存在一个恒定的线性工夫趋势。正如咱们下面所看到的,鉴于趋势增长率随工夫的稳步降落,这种状况不太可能产生。然而,依然能够假如工夫趋势的不同函数模式,例如增加二次项,解脱趋势。这种办法的另一个毛病是它只能排除趋势,而不能排除噪声,即序列中的十分小的稳定。

差分

接下来的办法是采纳一阶差分,因为它通常被教诲以取得安稳的工夫序列。这假如数据是不稳固的。获得一阶差分的结果显示在下图中,其中它也与工夫趋势序列进行比拟。差分数据在零线左近稳定得更多,但它也蕴含很多噪声。

#可视化 g <- melt(dat,,na.rm=TRUE)# 定义绘图函数plotaxis.line=element_line(size=.3,colour="black"), # 设置绘图参数# 绘图plot.cycles(d=g)

Hodrick Prescott过滤器

Hodrick和Prescott(1981)开发了一种滤波器,它将工夫序列分为趋势,周期和噪声重量。须要工夫序列和平滑参数。下图显示了Hodrick-Prescott滤波器取得的理论GDP的周期性成分值,并将其与线性去趋势序列的值进行了比拟。两个序列的行为看起来十分类似,只是HP序列在零左近稳定较大,而线性去趋势序列依然蕴含趋势的成分。此外,循环HP序列还包含一些相似乐音的成分

#绘图g <- melt(dat\[,c(1,4,3)\],id.vars="Time",na.rm=TRUE)plot(g)

Baxter过滤器

Baxter和King(1994,1999)提出了一种滤波器,它能够生成与HP滤波器相似的后果,但它能够剔除下面显示的许多相似噪声的行为。它须要序列,周期数量的上限和下限,假设周期产生(plpu),以及平滑因子nfix。文献(参见NBER,Stock和Watson(1999))表明商业周期继续6至32个月。这些值用于指定循环周期的上限和下限。BK滤波器的后果如下图所示。该办法的一个绝对序列的毛病是平滑因子导致在序列的开始和完结时样本的失落。这可能是小样本的问题。

# 绘图dat <- cbind(dat,data.frame( bk))g <- melt(dat\[,c(1,5,4)\], ,na.rm=TRUE) plot(g )

小波滤波器

Yogo(2008)提出应用小波滤波器从工夫序列数据中提取商业周期。这种办法的长处是该性能不仅能够提取序列的趋势,周期和噪声,而且能够更加具体地说明周期产生的周期。然而,因为该办法只能捕捉2的幂的周期性,即2,4,8,16,32等,所以没有齐全的自由度。

R中的办法实现也很简洁,但在应用之前须要一些额定的数据转换。它须要工夫序列的不同版本和合成的深度。

该函数给出了多个序列,必须将它们累积起来cumsum,将它们转换回反映周期性模式的数据。此外,一些序列能够联合应用rowSums。当应该一起剖析继续8到16和16到32个周期的周期时,这很有用,如下图所示。小波滤波器产生与BK滤波器相似的后果,因为循环周期的下限在两者中相等,上限仅相差2。

#绘图 g <- melt(dat\[,c(1,6,5)\],id.vars="Time",na.rm=TRUE)levels(g\[,2\]) <- c("Wavelet","Baxter King")plot.cycles(g,"Wavelet vs. Baxter King")

教训模式合成(EMD)

基于Huang等人。(1998)Kozic和Sever(2014)提出教训模式合成作为商业周期提取的另一种办法。它须要不同的工夫序列,边界条件和规定,该规定指定迭代过程在哪个点取得了称心的后果并且能够进行。该滤波器办法的后果与HP,BK和小波滤波器相比有所不同。

 emd <- as.data.frame(emd(xt=diff(gdp\[,2\]),boundary="wave",stoprule="type2")$imf) g <- melt(dat\[,c(1,7,4)\],id.vars="Time",na.rm=TRUE)  plot.cycles(g,"EMD vs. Hodrick Prescott")


最受欢迎的见解

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模型进行工夫序列预测