我尝试使用example code包进行突发检测。我这样做是因为我想在时间序列中找到峰值。
当我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")
答案 0 :(得分:2)
似乎kleinberg
需要更改后续值,请参阅function code。在您的时间序列中,有些情况下您有一系列相同的数字。
当我尝试使用kleinberg(unique(ts))
时,它运行正常。
此外,使用随机生成的时间序列,kleinberg()
工作正常:
ts2 <- as.ts(rnorm(1000,mean=1,sd=10))
plot(ts2)
burst <- kleinberg(ts2)
plot(burst)
默认表单中kleinberg
可能无法满足您的需求,但您可能会发现Twitter的AnomalyDetection包有用。