乐趣区

关于数据挖掘:R语言用LOESS局部加权回归季节趋势分解STL进行时间序列异常检测

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

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

这篇文章形容了一种对波及季节性和趋势成分的工夫序列的中点进行建模的办法。咱们将对一种叫做 STL 的算法进行钻研,STL 是 “ 应用 LOESS(部分加权 回归 ) 的节令 - 趋势合成 “ 的缩写,以及如何将其利用于异样检测。

其根本思维是,如果你有一个有法则的工夫序列,你能够通过 STL 算法运行该序列,并拆散出法则的模式。剩下的是 “ 不规则的 ”,而异样检测相当于断定不规则性是否足够大。

例子:航空乘客,1949-1960

让咱们在数据集上运行该算法,该数据集给出了 1949-1960 年期间每月的航空公司乘客数量。首先,这是未经批改的工夫序列。

plot(y)

 

 

 

这里显然有一个规律性的模式,然而在这个序列中没有任何显著的降落,无奈在异样检测中显示进去。所以咱们将设置一个。\
 

y[40] = 150

 

 

跌幅足够大,咱们心愿异样检测能发现它,但又不至于大到你只看一眼图就会发现。当初让咱们通过 STL 查看它。

plot(fit)

 

 

首先,我不是在 y 上运行 STL,而是在 log(y)上。

该算法将序列合成为三个局部:季节性、趋势和残余成分。季节性是周期性成分,趋势是个别的回升 / 降落,残余成分是剩下的趋势成分。季节性和趋势独特形成了序列的 “ 惯例 “ 局部,因而是咱们在异样检测过程中要剔除的局部。

残余局部基本上是原始序列的正常化版本,所以这是咱们监测异常情况的局部。残余序列的降落是很显著的。咱们在 1952 年初设置的异样降落很可能算在内。

咱们还能够调整每一时期的观测值数量,负责拆散季节性和趋势成分的平滑办法,拟合模型的 “ 稳健性 ”(即对异样值不敏感)等等。这些参数中的大多数须要对根底算法的工作原理有肯定的理解。

上面是一些显示理论数据与阈值的代码。


data <- merge(df, ba, by.x='x')
ggplot(data) +
  geom(aes(x=x, ymin=ymin, ymax=ymax)) 

 

再次,聪慧如你可能会留神到通过 exp()进行的逆变换。咱们当初探讨这个问题。

为什么要进行对数和逆变换?

并非所有的合成都波及对数变换,但这个合成却波及。其起因与合成的性质无关。STL 的合成总是加法的。

y = s + t + r

但对于某些工夫序列,乘法合成更适宜。

y = str

这种状况产生在销售数据中,季节性成分的振幅随着趋势的减少而减少。这实际上是乘法序列的标记,航空旅客序列也体现出这种模式。为了解决这个问题,咱们对原始值进行对数转换,这使咱们进入加法畛域,在那里咱们能够进行 STL 合成。当咱们实现后,咱们再进行逆变换,回到原始序列。

多重季节性的状况如何?

一些工夫序列有一个以上的季节性。例如,在酒店预订工夫序列有三个季节性:每日、每周和每年。

尽管有一些程序能够生成具备多个季节性成分的合成,但 STL 并没有这样做。最高频率的季节性被作为季节性成分,而任何较低频率的季节性都被排汇到趋势中。


最受欢迎的见解

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

退出移动版