Группируйте наблюдения временных рядов в R

#r #time-series

#r #временные ряды

Вопрос:

Пример

У меня есть временной ряд, и у меня есть значения от 15 до 15 минут (таким образом, у меня есть 4 значения в час), но я пытаюсь уменьшить данные для анализа кластеризации.

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

Кто-нибудь может мне помочь?

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

1. Ваш вопрос не совсем ясен. Лучше всего предоставить воспроизводимый пример и показать, какой код вы пробовали до сих пор. В противном случае трудно ответить.

2. Что сказал @USER_1. Ваши данные уже отформатированы как временные ряды? Какого рода (например, ts , zoo , xts )? Можете ли вы предоставить фрагмент с dput или каким-либо другим способом, чтобы мы могли протестировать решения для вашей конкретной проблемы?

3. @USER_1 Давайте представим, что у меня есть записи мощности за 24 часа, каждые 15 минут. Я хочу группировать в час, и я бы сделал это, используя среднее значение мощности за час. Но я хочу знать, похожи ли мои записи о мощности в час, чтобы сгруппировать их? Вы знаете, как я могу это сделать?

4. @AnaS90 Давайте представим, что мы можем видеть фактические данные… Вам действительно нужно опубликовать некоторые данные, иначе невозможно дать ответ.

5. @USER_1 Я привел пример того, что у меня есть. Теперь я знаю, как группировать данные. Но я хочу проверить, могу ли я или не могу это сделать. Итак, если я посмотрю на первые 4 записи, как я могу сказать, что они похожи? Есть ли статистический тест для этого?

Ответ №1:

Для этого общего типа задачи вы можете использовать пакет xts:

 library(xts)

# convert your data to xts object
your.data.xts <- xts(data$value,
               as.POSIXct(data$time))
# aggregate by hour
hourly.apply(dat.xts,sum)
  

Вы также могли бы использовать базовую aggregate() функцию или period.apply() https://www.rdocumentation.org/packages/rts/versions/1.0-12/topics/period.apply

В будущем, пожалуйста, при задании вопроса приводите воспроизводимый пример (с вашими данными).

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

1. Вы также можете сделать это с помощью zoo и lubridate : new.ts <- aggregate(your.ts.as.zoo, by = lubridate::hour, sum) .