如何为包含离群值的时间序列拟合模型


9

我已经使用auto.arima()R中的函数拟合了ARIMA(5,1,2)模型,通过查找顺序可以说这不是预测的最佳模型。如果数据序列中存在异常值,那么将模型拟合到此类数据的方法是什么?


您对异常点有什么数据/理论吗?您不能简单地假设“遥远”的点是异常值,但是如果您知道某个特定日期发生了某些特殊事件并且该事件会影响您的数据,则可以在该日期为模型添加指标变量。请参阅下面的IrishStat的评论。
韦恩2012年

如果在此期间的1或2周内发生了一些特殊情况,并且对模型产生了影响,则该模型可能不正确。由于没有其他因素(如季节性变化),因此我认为离群值是影响模型的原因。
安东尼

Answers:


7

迈克尔·切尔尼克(Michael Chernick)为您指明了正确的方向。我还将看一下Ruey Tsay的工作,这些工作增加了这一知识体系。在这里查看更多。

您无法与当今的自动化计算机算法竞争。他们研究了许多方法来处理您从未考虑过的时间序列,并且通常不会在任何纸质或书籍中进行记录。当有人问如何进行方差分析时,与其他算法进行比较时,可以得到一个精确的答案。当有人问我如何进行模式识别时,由于涉及到启发式方法,因此可能有许多答案。您的问题涉及启发式方法的使用。

如果数据中存在异常值,拟合ARIMA模型的最佳方法是评估可能的自然状态,并选择对特定数据集认为最佳的方法。一种可能的自然状态是ARIMA过程是所解释的变化的主要来源。在这种情况下,将通过acf / pacf函数“初步识别” ARIMA过程,然后检查残差以寻找可能的异常值。离群值可以是脉冲,即一次事件或季节性脉冲,这些异常值可以通过系统离群值以某个频率(例如,每月数据为12个)来证明。第三种离群值是其中有一组连续的脉冲,每个脉冲具有相同的符号和大小,这称为阶跃或电平移位。在检查了暂定ARIMA过程的残差后,可以暂定添加根据经验确定的确定性结构,以创建暂定组合模型。如果变异的主要来源也不是4种或“异常值”中的一种,那么最好从头开始识别它们,然后使用该“回归模型”中的残差来识别随机(ARIMA)结构,从而更好地满足这一要求。 。现在,当一个“问题”中ARIMA参数随时间变化或误差方差由于多种可能原因(可能需要加权最小二乘或幂变换)而变化时,这两种替代策略变得更加复杂。如原木/倒数等 另一个复杂性/机会是如何以及何时形成用户建议的预测变量系列的贡献,以形成一个无缝集成的模型,该模型整合了记忆,因果关系和经验识别的虚拟序列。当人们使用以下形式的指标系列来最好地模拟趋势系列时,这个问题会进一步恶化。00001个234或以及像。您可能想尝试用R编写这样的过程,但是寿命很短。我很乐意实际解决您的问题并在这种情况下演示该程序的工作原理,请发布数据或将其发送到sales@autobox.com1个2345ñ0000001个1个1个1个1个


从2007年1月1日起,接收/分析数据/每日汇率后的汇率/ 18 = 765值后的附加注释

在此处输入图片说明

数据的acf为:

在此处输入图片说明

在识别形式为且具有多个离群值的arma模型后,由于acf值非常小,因此残差的acf表示随机性。AUTOBOX确定了许多异常值:1个1个0000

在此处输入图片说明

最终模型:

在此处输入图片说明

包括需要对方差稳定化进行la TSAY,在其中识别并合并残差的方差变化。自动运行的问题在于,您所使用的过程像会计一样,会相信数据,而不是通过干预检测(又称为异常值检测)来挑战数据。我在这里发表了完整的分析。

在此处输入图片说明


@IrishStat:将来,您可以使用格式选项吗?(插入链接的正确键是ctrl-1,而不是ctrl-c)。
user603 2012年

@ user603我一直在简单地使用添加图形选项。我不知道ctrl-l或cntrl-c是什么意思。也许您可以为我提供帮助,请通过dave / @ / autobox.com与我联系,也许您可​​以通过它与我谈谈。
IrishStat

@IrishStat:在这里看看 。
user603 2012年

@ user603好的,但是我仍然不知道ctrl-l和cntrl-c是什么意思。我正在使用图像传输功能,可以在其中插入图像。如果键入cntrl-g,我将得到一个空白的弹出屏幕。
IrishStat

@IrishStat:没关系-链接的方法甚至比ctrl-l好:)。PS:我的目的是通过隐藏贯穿文本流的长链接,从外观上帮助您使答案/评论更具吸引力。该链接说明了如何实现这一目标。
user603 2012年

6

R中尚未准备好使用健壮的对等函数来实现Arima函数(尚未);如果出现,它将在这里列出。也许另一种选择是减少那些相对于简单单变量离群值检测规则而言遥不可及的观测值,但是我也看不出准备使用软件包来运行加权ARMA回归。然后,另一个可能的选择是对偏僻点进行Winsorize:

#parameters
para     <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796)) 
#outliers
out      <- sample(1:100, 20)               
#contaminated series
y1[out]  <- rnorm(20, 10, 1)                
plot( y1, type="l")
lines(y0, col="red")

随机污染的例子

#winsorized series
y2      <- rep(NA, length(y1))
a1      <- (y1-median(y1)) / mad(y1)
a2      <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
   if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}       

清洗系列


基于规则的程序适用于这个已经查看了近42年的时间序列数据的序列,通常可能无法正常工作。请考虑一个具有自动投影过程的简单序列,例如1,9,1,9,1,9,5,9, 1,9,1,9,其中第7个值是例外,或通常是具有某种未知形式的强自投影结构的序列,或者是具有1,2,1,1,1,2,1,1,1, 2,1,20,1,2,1,2,1,1,1,2,1,2,2,19,2,1,1,2,1,2,1,1,2,2, 2,21每月没有脉搏的系列,但确实有未指定的季节性假人。如果检测到12,24和36为BAD,就会把婴儿的洗澡水扔掉。
IrishStat

您所说的全部都是正确的,即,如果您提供的创可贴将在以下情况下对伤口有帮助:1)系列是固定的,除其他因素外,其中不包括水平移动,趋势等,ARIMA结构;和2)系列必须是非季节性的,或者之前已经过非季节性的;。根据我的经验,这样的假设很难成立,并且用户在尝试处理具有“缺陷”的时间序列时会无视您的警告。我在这里的评论不是要引起争论,而是要启迪(对某些人来说是这样)
IrishStat 2012年

行动党@IrishStat更新了他的问题,并表示没有季节性。
user603 2012年

你是克里斯托夫吗?
IrishStat

2

关于鲁棒时间序列模型有大量文献。马丁和Yohai是主要的贡献者。他们的工作可以追溯到1980年代。我自己做了一些工作来检测时间序列中的离群值,但是马丁确实是在时间序列中存在离群值或重尾残差的情况下,检测离群值和参数估计的众多贡献者之一。


稳健预测使用什么软件?它适合单变量系列吗?
安东尼

@Anthony这是一个很好的问题。我尚未进行任何可靠的时间序列建模。马丁(Dug Martin)创立了一家名为Insightful的公司(他们实际上有几个名字),负责销售SPlus。我很确定他在SPlus软件中包含了强大的方法。R中可能现在有一个版本。我将对其进行检查。这是一篇包含SPlus历史的维基百科文章。zh.wikipedia.org/wiki/S-PLUS
Michael R. Chernick

@Anthony这是Rob Hyndman提供的有关时间序列分析中R中可用内容的来源。它包括CRAN中的内容,涵盖了包括稳健过滤在内的多种方法。 cran.r-project.org/web/views/TimeSeries.html
Michael R.

2

模型的目的是预测或分析历史吗?如果这不是用于预测,并且您知道这些是异常值,则只需添加虚拟变量,该变量在那些日期中为1,在其他日期中为0。这样,虚拟系数将处理异常值,并且您将能够解释模型中的其他系数。

如果这是为了进行预测,则您必须问自己两个问题:这些异常值会再次发生吗?如果可以的话,我是否必须考虑它们?

例如,假设雷曼兄弟倒闭时您的数据序列有异常值。显然,这是您无法预测的事件,但您不能简单地忽略它,因为类似的事情将来必定会发生。如果为异常值丢掉虚拟对象,则可以有效地消除误差方差中该事件的不确定性。您的预测会低估尾部风险-对于风险管理而言,这可能不是一件好事。但是,如果您要生成基准销售预测,则该假人会起作用,因为您对尾巴不感兴趣,因此您对最有可能的情况感兴趣-因此,您不必为这个目的。

因此,模型的目的会影响处理异常值的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.