Отображение последовательности статистических критериев для временного ряда по группам в data.frame с использованием R - PullRequest
0 голосов
/ 26 декабря 2018

выборка данных

timeseries=structure(list(Data = structure(c(10L, 14L, 18L, 22L, 26L, 29L, 
                                             32L, 35L, 38L, 1L, 4L, 7L, 11L, 15L, 19L, 23L, 27L, 30L, 33L, 
                                             36L, 39L, 2L, 5L, 8L, 12L, 16L, 20L, 24L, 28L, 31L, 34L, 37L, 
                                             40L, 3L, 6L, 9L, 13L, 17L, 21L, 25L), .Label = c("01.01.2018", 
                                                                                              "01.01.2019", "01.01.2020", "01.02.2018", "01.02.2019", "01.02.2020", 
                                                                                              "01.03.2018", "01.03.2019", "01.03.2020", "01.04.2017", "01.04.2018", 
                                                                                              "01.04.2019", "01.04.2020", "01.05.2017", "01.05.2018", "01.05.2019", 
                                                                                              "01.05.2020", "01.06.2017", "01.06.2018", "01.06.2019", "01.06.2020", 
                                                                                              "01.07.2017", "01.07.2018", "01.07.2019", "01.07.2020", "01.08.2017", 
                                                                                              "01.08.2018", "01.08.2019", "01.09.2017", "01.09.2018", "01.09.2019", 
                                                                                              "01.10.2017", "01.10.2018", "01.10.2019", "01.11.2017", "01.11.2018", 
                                                                                              "01.11.2019", "01.12.2017", "01.12.2018", "01.12.2019"), class = "factor"), 
                          client = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                               1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                               2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                               1L), .Label = c("Horns", "Kornev"), class = "factor"), stuff = structure(c(1L, 
                                                                                                                          1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 
                                                                                                                          3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 
                                                                                                                          2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("chickens", 
                                                                                                                                                                          "hooves", "Oysters"), class = "factor"), Sales = c(374L, 
                                                                                                                                                                                                                             12L, 120L, 242L, 227L, 268L, 280L, 419L, 12L, 172L, 336L, 
                                                                                                                                                                                                                             117L, 108L, 150L, 90L, 117L, 116L, 146L, 120L, 211L, 213L, 
                                                                                                                                                                                                                             67L, 146L, 118L, 152L, 122L, 201L, 497L, 522L, 65L, 268L, 
                                                                                                                                                                                                                             441L, 247L, 348L, 445L, 477L, 62L, 226L, 476L, 306L)), .Names = c("Data", 
                                                                                                                                                                                                                                                                                               "client", "stuff", "Sales"), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                                                                -40L))

Мне нужно проверить временные ряды по тренду и сезонности, используя не функцию acf, а некоторые критерии для нее.Для серий each group Cleint + Stuff.

#test adf
library("tseries")
adf.test(timeseries$Sales)

, затем

Сезонный тест тренда Манна-Кендалла

library("trend")
res <- smk.test(timeseries$Sales)

и

#Cox and Stuart Trend Test
cs.test(timeseries$Sales)

Результаты этих тестов должны быть в формате data.frame для каждой группы enter image description here

Как это можно сделать?

Редактировать

w=structure(list(Sales = c(18175L, 20015L, 48049L, 62826L, 34804L, 
                         33105L, 38384L, 42316L, 44577L, 24939L, 15908L, 24859L, 13879L, 
                         18739L, 13202L, 29653L, 30371L, 29638L, 5495L, 56932L, 1091L, 
                         5906L, 8229L, 239L, 102L, 8L, 263L, 26L), group = c(1L, 1L, 1L, 
                                                                             1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                                                             1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Sales", "group"
                                                                             ), class = "data.frame", row.names = c(NA, -28L))

преобразовать в объект TS

w=ts(mydat$new,frequency = 12,start=c(2015,1))

library(dplyr);w %>% group_by(group) %>% summarise(stat = cs.test(Sales)$statistic, pval = cs.test(Sales)$p.value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...