关于算法:拓端tecdatR语言提取时间序列的周期性成分应用EMD小波滤波器Baxter过滤器等

9次阅读

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

原文链接: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)




# 定义绘图函数

plot


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

正文完
 0