如何表征突然的变化?


13

这个问题可能太基础了。对于数据的时间趋势,我想找出发生“突变”变化的点。例如,在下面显示的第一个图中,我想使用某种统计方法找出更改点。我想在变化点不明显的其他一些数据中使用这种方法(例如第二张图)。

在此处输入图片说明

在此处输入图片说明


3
术语“转折点”具有特殊含义,我认为不适用于水平的突然变化(无论是向上还是向下)。您还使用了“更改点”一词,我认为这可能是一个更好的选择。请不要认为这太“基础”了;甚至不需要道歉就可以回答一些基本问题,而且这个问题也不是很基本。
Glen_b-恢复莫妮卡2014年

谢谢。我已将问题中的“转折点”更改为“转折点”。
user2230101 2014年

Answers:


11

如果您的时间序列数据的观测值与之前的观测值相关,那么Chen和Liu(1993)可能会让您感兴趣。它描述了一种在自回归移动平均时间序列模型的框架中检测水平移动和临时变化的方法。[1]

[1]:Chen。C.和Liu,LM。(1993),
“模型参数和时间序列中异常值的联合估计”,《
美国统计协会杂志》,88:421,284-297


+1我正试图(但没有)想起足够多的知识来找到它。这是一个很好的参考。
Glen_b-恢复莫妮卡2014年

6

Stats中的此问题称为(单变量)时间事件检测。最简单的想法是使用移动平均值和标准偏差。任何“超出” 3个标准偏差(经验法则)的读数均被视为“事件”。当然,还有使用HMM或回归的更高级的模型。这是该领域的介绍性概述


5
这是在整个Web上唯一可公开访问的帖子,其中包含短语“单变量时间事件检测”!这个学期的消息来源是什么?
ub

抱歉,这令人困惑。“事件检测”是一个更常见的术语,“时间”有时会单独使用。单变量不常用,因为方法通常是多变量的,但这是他的特例。
user1669710

1
编辑了答案以纳入您的评论@whuber
user1669710 2014年

@ ser1669710谢谢。这就是我想要的。似乎移动平均线无法解决我的问题。我需要研究更复杂的模型。
user2230101

我想了解有关此时间事件检测的更多信息。您发布的幻灯片很好,但是我想知道您是否具有指向该领域的正式描述的评论文件的链接?
aaragon

1

Ĵ一世={0X<X一世1个XX一世
X1个<X2<<XĴ一世Ĵ一种p[R一世ĴdËCËbË[RX一世

Ĵ1个Ĵ2X1个X2


1
PS-@ user1669710和我同时发布了答案。我投票支持这一点,因为它的研究显然更好。但是,我将其保留在此处,因为它是一种可行且易于实现的替代方案。
Russ Lenth 2014年

1
因为它使用逐步回归并使用许多候选变量,所以此过程看起来很可疑。在哪里研究过它,它具有什么性质?与其他变更点方法相比如何?
ub

@whuber,正是我的意思。这就是为什么我投票赞成其他答案。如果您有一组非常细致的变更点值,则比较不会太有利。而且它甚至可能无法与之相比。我只是将其作为临时方法发布,我想我是这样介绍的。但是我认为这样的方法有望成为获取非线性方法起始值的好方法。
Russ Lenth 2014年

我的想法是我发现的一些更有效的变更点方法的基础,但是特别是逐步回归的使用使我怀疑(尽管我不确定)该方法甚至无法为其他方法的改进提供合理的起点。这就是为什么我很好奇它是否已经被研究过的原因。
ub

我认为,只要确实存在指定数量的跳转(比如说两个),全子集选择就不会有问题,因为我们会找到两个最能解释数据的跳转。就像在其他情况下一样,其他选择方法也可能会出现问题。我认为这取决于获得最佳答案,好答案与快速答案的重要性。并非所有问题都是一样的,也不是所有客户都一样。如果您无法解释,那么最好的答案就是彻底失败。
Russ Lenth 2014年

1

将一个系列或序列分成理想值恒定的咒语存在一个相关的问题。请参阅如何将数值数据分组为自然形成的“括号”?(例如收入)

这不是一个完全相同的问题,因为该问题并不排除在任何或所有方向上缓慢漂移但没有突然变化的咒语。

一个更直接的答案是说我们正在寻找大的跳跃,所以唯一真正的问题是定义跳跃。那么第一个想法就是看相邻值之间的第一个差异。甚至不清楚您是否需要通过先消除噪声来完善它,就好像无法将跳跃与噪声差异区分开来一样,跳跃肯定也不会突然发生。另一方面,发问者显然希望突变包括渐变和阶跃变化,因此似乎需要某些标准,例如固定长度窗口内的方差或范围。


1

您要查找的统计信息区域是变更点分析。有一个网站,在这里,这将使你的区域的概况,也有一个网页的软件。

如果您是R用户,则建议使用changepoint均值strucchange更改包和回归更改包。如果您想成为贝叶斯,那么该bcp包也不错。

通常,您必须选择一个阈值,该阈值指示要查找的更改的强度。当然,在某些情况下,人们会倡导一些阈值选择,您也可以使用渐近的置信度或自举来获得信心。


1
OP确定了两个示例,其中一个我称为阶梯,另一个称为斜坡,尽管始终存在争用单词的余地。另请参阅我的回答。这些方法如何应对斜坡?他们是否具有默认的或明确的逐步更改模型?
尼克·考克斯

谢谢尼克的提问。通常,它取决于斜坡的持续时间。如果是短斜坡,则将其视为1个更改,如果斜坡较长,则更改点方法通常会识别2个更改,其中1个在斜坡开始,1个在结束。显然,这确实取决于您假设的基础模型。
adunaic 2014年

1

这个推理问题有很多名称,包括更改点,切换点,断点,折线回归,折线回归,双线性回归,分段线性回归,局部线性回归,分段回归和不连续模型。

这是带有优点/缺点和工作示例的变更点软件包的概述。如果您事先知道更改点的数量,请签出mcp包装。首先,让我们模拟数据:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

对于第一个问题,它是三个仅拦截部分:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

我们可以绘制结果拟合:

plot(fit)

在此处输入图片说明

在这里,更改点定义得很好(狭窄)。让我们总结一下合适的位置以查看其推断的位置(cp_1cp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

您可以使用进行更复杂的模型mcp,包括对N阶自回归建模(对时间序列有用)等。免责声明:我是的开发者mcp

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.