2016-09-16 31 views
0

我試着用bursts包進行突發檢測。我這樣做是因爲我想在時間序列中找到尖峯。如何在時間序列中使用突發包查找突發R

當我做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

當我使用ts <-ts(1:120,frequency = 1)'時,它對我很好。您可能需要添加添加輸出,例如通過使用'dput(ts)'。 – epo3

+1

@ epo3我將輸出提供給'dput(ts)' – ogogmad

回答

2

看起來好像kleinberg需要隨後的VA要改變,請參閱function code。在你的時間序列中,有些情況下你有一系列相同的數字。

當我嘗試使用kleinberg(unique(ts))時,它工作正常。

此外,使用隨機生成的時間序列,kleinberg()工作得很好:

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

enter image description here

這有可能是kleinberg在默認的形式可能不會給你你需要什麼,但你可能會發現Twitter的AnomalyDetection包有用。