1

我已经尝试使用bursts包进行突发检测。我这样做是因为我想在时间序列中找到峰值。

当我这样做时kleinberg(ts),它说:

Error in kleinberg(ts) : 
  Input cannot contain events with zero time between!

时间序列是:

Time Series:
Start = 1 
End = 120 
Frequency = 1 
  [1]   5   5   5   5   5  14   4   8  11  11  11   4   7   3  10   7  13   6   3   3   6   9   9  12   6   6   9   3   9
 [30]   6  12   3   3   3   6   9   6   3   3   4   6   6   6   3   6   7   9   9   6   6  15   9  21   9   9   9   9  12
 [59]   6  12   3   3  17   9   9   9   9  12   3  12   3   3  13  13   3   7   6   6   6   9  10   3   7   6  16   3   9
 [88]   9   9  17  12   9   9  19  20  13  13  16  17  11  14  20  15  14 100  70  20  15  26  44  20  19   8  38  14  15
[117]  11   6  19  21

dput(ts)我感兴趣的一个特定时间序列的输出是

structure(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 2L, 4L, 9L, 100L, 
78L, 21L, 13L, 15L, 12L, 11L, 9L, 9L, 7L, 8L, 5L, 6L, 6L, 6L, 
6L, 4L, 3L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 2L, 3L, 3L), .Tsp = c(1, 
120, 1), class = "ts")
4

1 回答 1

3

似乎kleinberg需要后续值更改,请参阅功能代码。在您的时间序列中,有些情况下您有一系列相同的数字。

当我尝试使用kleinberg(unique(ts))时,它工作正常。

此外,使用随机生成的时间序列,kleinberg()工作正常:

ts2 <- as.ts(rnorm(1000,mean=1,sd=10))
plot(ts2)
burst <- kleinberg(ts2)
plot(burst)

在此处输入图像描述

默认形式可能kleinberg无法满足您的需求,但您可能会发现 Twitter 的AnomalyDetection包很有用。

于 2016-09-20T16:01:08.790 回答