Использование функции спектра для поиска пиков с одинаковыми интервалами

#r #time-series #spectrum #spectral-density

Вопрос:

Я должен анализировать данные и находить экземпляры, у которых более высокие значения повторяются через одни и те же интервалы. Пример:

введите описание изображения здесь

Я пытаюсь использовать функцию спектра, но это дает мне странный результат.

Вот мой пример данных, я вставлял в них выбросы каждые 1 час.

 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() 

ggplot(data1, aes(x=datetime, y=Value, color = Instance))  
    geom_point()

spect <- spectrum(data1$Value, log="no", spans=c(5,5), plot=FALSE)
delta <- 1/4
specx <- spect$freq/delta
specy <- 2*spect$spec
plot(specx, specy, xlab="Period (minutes)", ylab="Spectral Density", type="l")
 

Я ожидал получить спектральный график, где спектральная плотность покажет мне 60 минут. Но это то, что у меня есть:

введите описание изображения здесь

Как найти пики, повторяющие интервалы (в моем примере 60 минут)?

Комментарии:

1. Вы могли бы взглянуть на tsmp pkg как на подход. Что касается вашего участка, не является ли длина(значения) чем-то вроде 50 тысяч, в то время как вы строите 100?

2. Спасибо. Я исправил свой код. Но результат все равно странный: ось x составляет всего от 0 до 2. Я ожидал увидеть там 60 .