R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值

全文链接:http://tecdat.cn/?p=30597

最近我们被要求解决时间序列异常检验的问题。有客户在使用大量的时间序列。这些时间序列基本上是每10分钟进行一次的网络测量,其中一些是周期性的(即带宽),而另一些则不是(即路由流量)点击文末“阅读原文”获取完整代码数据)。

他想要一个简单的算法来进行在线“异常值检测”。基本上,想将每个时间序列的整个历史数据保存在内存(或磁盘上),并且想检测实时场景中的任何异常值(每次捕获新样本时)。实现这些结果的最佳方法是什么?

相关视频

目前正在使用移动平均线来消除一些噪音,但接下来呢?简单的事情,如标准差,...针对整个数据集效果不佳(不能假设时间序列是平稳的),想要更“准确”的东西,理想情况下是黑匣子。我们提出一些方案,例如:

将查找时间序列异常值(并选择性地在图中显示它们)。它将处理季节性和非季节性时间序列。基本思想是找到趋势和季节性成分的可靠估计并减去它们。然后找出残差中的异常值。残差异常值的检验与标准箱线图的检验相同 - 大于或低于上下四分位数的点大于1.5IQR 是假定的异常值。高于/低于这些阈值的 IQR 数量作为异常值“分数”返回。因此,分数可以是任何正数,对于非异常值,分数将为零。

异常值检测取决于数据的性质以及您愿意对它们做出的假设。 通用方法依赖于可靠的统计信息。这种方法的精神是以不受任何异常值影响的方式表征大部分数据,然后指出不符合该特征的任何单个值。

由于这是一个时间序列,因此增加了需要持续(重新)检测异常值的复杂性。如果要在系列展开时执行此操作,那么我们只能使用旧数据进行检测,而不能使用未来的数据。此外,为了防止许多重复测试,我们使用一种误报率非常低的方法。

这些注意事项建议对数据运行简单、可靠的移动窗口异常值测试。有很多可能性,但一种简单、易于理解和易于实现的是基于运行ARIMA:与中位数的中位数绝对偏差。这是数据中变异的强稳健度量,类似于标准差。离群将比中位数大几个ARIMA或更多。

读取数据

data1=read.table("正常数据.txt")

data2=read.table("异常数据.txt")

data3=read.table("异常数据第二组.txt")

#查看数据

head(data1)

head(data2)

head(data3)

绘制时间序列图

plot.ts(data1)

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第1张图片

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第2张图片

临时变化的离群值

在识别异常值和建议一个合适的ARIMA模型方面做得很好。见下面应用auto.arima。

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第3张图片


点击标题查阅往期内容

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第4张图片

python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列

outside_default.png

左右滑动查看更多

outside_default.png

01

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第5张图片

02

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第6张图片

03

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第7张图片

04

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第8张图片

拟合arima模型,得出最优参数

fit=auto.arima(data1,trace=T)

Fit

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第9张图片

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第10张图片

得出最优的arima模型p=1 q=1

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第11张图片

将数据转换成time series格式

使用函数检测异常点 参数比照上面autorima得出的参数p=1 q=1

to(tsmethod = "auto.arima"

                  ,argethod=list( stepwise=FALSE ))
                  #设置环境参数 时间窗口和异常点范围阈值

window <- 30

threshold <- 3


#求出中位数几倍范围之外的样本点作为异常点

ut <- function(x) {

m = median(x);

 median(x) + threshold * median(abs(x - m))

}

#移动时间窗口查看时间序列中的符合条件的时间点

 

z <- rollaly(zoo(data2))

找出data2中符合条件的时间点作为异常序列 R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第12张图片


R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第13张图片

点击文末“阅读原文”

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

本文选自《R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值》。

点击标题查阅往期内容

python用ARIMA模型预测CO2浓度时间序列实现

R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列

R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

R语言多元Copula GARCH 模型时间序列预测

python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化

R语言中的copula GARCH模型拟合时间序列并模拟分析

matlab使用Copula仿真优化市场风险数据VaR分析

R语言多元Copula GARCH 模型时间序列预测

R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)

R语言实现 Copula 算法建模依赖性案例分析报告

R语言ARMA-GARCH-COPULA模型和金融时间序列案例

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言COPULA和金融时间序列案例

matlab使用Copula仿真优化市场风险数据VaR分析

matlab使用Copula仿真优化市场风险

R语言多元CopulaGARCH模型时间序列预测

R语言Copula的贝叶斯非参数MCMC估计

R语言COPULAS和金融时间序列

R语言乘法GARCH模型对高频交易数据进行波动性预测

R语言GARCH-DCC模型和DCC(MVT)建模估计

Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测

R语言时间序列GARCH模型分析股市波动率

R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计

Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测

使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略

R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模

R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析

R语言多元Copula GARCH 模型时间序列预测

R语言使用多元AR-GARCH模型衡量市场风险

R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

R语言用Garch模型和回归模型对股票价格分析

GARCH(1,1),MA以及历史模拟法的VaR比较

matlab估计arma garch 条件均值和方差模型

R语言ARMA-GARCH-COPULA模型和金融时间序列案例

88e316e4e68d46193365c4bcf8ae326a.png

86ec8b352514704b9cb3ea1da85ff7d6.jpeg

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值_第14张图片

你可能感兴趣的:(R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值)