Преобразование еженедельных данных в объект ts временного ряда - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть данные weekly:

weekly <- structure(list(date = c("2013-01-07", "2013-01-10", "2013-01-21", 
"2018-01-23", "2018-02-00", "2013-02-11", "2013-02-13", "2013-02-25", 
"2013-03-00", "2013-03-11", "2013-03-13", "2013-03-25", "2018-00-01", 
"2018-00-08", "2018-00-15", "2018-00-22", "2018-00-29", "2018-05-06", 
"2018-05-13"), count = c(1750L, 1993L, 1816L, 1264L, 2042L, 1989L, 
2186L, 2118L, 2081L, 2110L, 2151L, 2069L, 1898L, 1862L, 1952L, 
1891L, 1758L, 1169L, 2009L)), row.names = c(NA, -19L), class = "data.frame")

Я хочу преобразовать эти данные в объект временного ряда ts, чтобы можно было прогнозировать данные.

Я видел этот вопрос , но он мне не помог.

Приведенный ниже код создает data.frame с датой и количеством

agr <-aggregate(input[1], input[2], FUN =  function(df) count=length(df))
colnames(agr)[2] <- "count"

Ниже созданы weekly данные:

weekly <- agr %>%
  tq_transmute(select     = count,
               mutate_fun = apply.weekly,
               FUN        = sum)

Теперь я хочу преобразовать эти еженедельные данные в данные временного ряда, чтобы можно было применить модель ARIMA.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете преобразовать фрейм данных weekly в объект временного ряда, используя функцию ts с частичной частотой, используя пакет lubridate.Затем вы можете использовать HoltWinters для прогнозирования следующих, например, 3 недель.Пожалуйста, смотрите код ниже:

weekly <- structure(list(date = c("2013-01-07", "2013-01-10", "2013-01-21", 
                                  "2018-01-23", "2018-02-00", "2013-02-11", "2013-02-13", "2013-02-25", 
                                  "2013-03-00", "2013-03-11", "2013-03-13", "2013-03-25", "2018-00-01", 
                                  "2018-00-08", "2018-00-15", "2018-00-22", "2018-00-29", "2018-05-06", 
                                  "2018-05-13"), 
                         count = c(1750L, 1993L, 1816L, 1264L, 2042L, 1989L, 
                                                           2186L, 2118L, 2081L, 2110L, 2151L, 2069L, 1898L, 1862L, 1952L, 
                                                           1891L, 1758L, 1169L, 2009L)), 
                    row.names = c(NA, -19L), 
                    class = "data.frame")

library(lubridate)
weekly_ts <- ts(weekly$count, 
   freq=365.25/7, 
   start= decimal_date(ymd(weekly[1, 1])))

#weekly_ts<- ts(weekly$count, frequency = 52)


m <- HoltWinters(weekly_ts, alpha = TRUE, beta = TRUE, gamma = FALSE)

library(forecast)
p <- predict(m, 3, prediction.interval = TRUE)
plot(m, p)

Выход: graph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...