【发布时间】:2021-07-30 07:49:55
【问题描述】:
我有几个实例的时间序列:
但有些看起来像这样 - 它们的峰值间隔相同(在本例中为 1 小时):
我需要分析数据并找到具有该异常的实例 - 峰值以几乎相同的间隔重复。
因此,我期望具有该异常的实例名称(在我的示例数据中 - 只有“A”),它是以秒为单位的峰值周期(在我的示例数据中为 3600),并且分布在该实例的中值和峰值之间.
怎么做?
这是我的示例数据:
library(dplyr)
library(lubridate)
library(ggplot2)
set.seed(900)
data1 <-
data.frame(
datetime = seq.POSIXt(as.POSIXct("2020-12-26 10:00:00"), as.POSIXct("2020-12-26 10:00:00") + 15*50001, "15 sec"),
Value = sample(1:10, 50002, replace = T),
Instance = "A"
)
data1.1 <- data.frame(
datetime= seq.POSIXt(as.POSIXct("2020-12-26 10:00:00"), as.POSIXct("2020-12-26 10:00:00") + 15*50001, "hour"),
Value = sample(10:100, 209, replace = T),
Instance = "A"
)
data1 <- rbind(data1, data1.1) %>% group_by(datetime, Instance) %>% summarise(Value = max(Value)) %>% ungroup()
data2 <- data.frame(
datetime = seq.POSIXt(as.POSIXct("2020-12-26 10:00:00"), as.POSIXct("2020-12-26 10:00:00") + 15*50001, "15 sec"),
Value = sample(1:100, 50002, replace = T),
Instance = "B"
)
data3 <-
data.frame(
datetime = seq.POSIXt(as.POSIXct("2020-12-26 10:00:00"), as.POSIXct("2020-12-26 10:00:00") + 15*50001, "15 sec"),
Value = sample(1:100, 50002, replace = T),
Instance = "C"
)
data4 <- data.frame(
datetime = seq.POSIXt(as.POSIXct("2020-12-26 10:00:00"), as.POSIXct("2020-12-26 10:00:00") + 15*50001, "15 sec"),
Value = sample(1:100, 50002, replace = T),
Instance = "D"
)
data <- do.call("rbind", list(data1, data2, data3, data4))
【问题讨论】:
-
我不太确定我是否理解您的问题。您是否只是在寻找在大致相同的时间间隔内达到的值高于(例如)第三分位数的实例,还是更复杂?你能展示一下结果应该是什么样子吗?
-
是的,这就是我需要的。具有相同间隔的短峰。
标签: r time-series frequency