#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)
.