我遇到了一张应用程序原型的图片,该原型在流量数据中发现了重大变化(“趋势” - 不是尖峰/异常值):
我想编写一个能够做同样事情的程序(Java,可选 R)——但因为我的统计技能有点生疏,我需要再次深入研究这个话题。
因此,我应该使用/研究什么方法/算法?
我遇到了一张应用程序原型的图片,该原型在流量数据中发现了重大变化(“趋势” - 不是尖峰/异常值):
我想编写一个能够做同样事情的程序(Java,可选 R)——但因为我的统计技能有点生疏,我需要再次深入研究这个话题。
因此,我应该使用/研究什么方法/算法?
有多种方式可能会发生“结构性断裂”。
如果“时间序列的后半部分”中的截距发生变化或趋势发生变化,那么将更适合执行干预检测(注意,这是对未指定的确定性变量的显着影响的经验识别,例如作为水平转变或趋势变化或季节性脉冲的开始)。干预检测是干预建模的前身,其中建议的变量包含在模型中。您可以通过谷歌搜索“自动干预检测”在网上找到信息。一些作者使用术语“异常检测”,但与许多统计语言一样,这可能会令人困惑/不精确。检测到的干预可以是以下任何一种(检测残差均值的显着变化);
水平的 1 个周期变化(即脉冲) 水平的多周期连续变化(即截距变化) 系统脉冲(即季节性脉冲) 趋势变化(即 1、2、3、4、5、 7,9,11,13,15 .....) 这些程序在 R/SAS/Matlab 中很容易编程,并且通常在许多商业可用的时间序列包中可用,但是您需要警惕许多陷阱比如是先检测随机结构还是对原始序列做干预检测。这就像鸡和蛋的问题。该领域的早期工作仅限于类型 1,因此可能不足以满足您的需求,因为您的示例说明了 LEVEL SHIFTS。
网络上有很多资料,甚至在http://www.autobox.com/30day.exe上还有一个免费程序,它甚至允许您使用自己的数据 30 天。正如瑜伽士曾经说过的那样,您可以“通过简单地观察”并复制他们的结果来学习很多东西。
可以从 http://www.autobox.com/pdfs/autoboxusersguide.pdf的第 134 页开始找到您要使用的确切方程式的网络参考。我是 AUTOBOX 的作者之一。
在 R 中尝试 cpm 或 changepoint 包。它是免费使用的。还研究变化点模型或顺序变化检测。