экспоненциальный временной ряд для данных нескольких временных рядов - PullRequest
0 голосов
/ 12 ноября 2018

У моих данных разные начальные и конечные точки.

structure(list(item = c("Card", "Card", "Card", "Card", "Card", 
"Card", "Card", "Card", "battery", "battery", "battery", "battery", 
"battery", "laptop", "laptop", "laptop", "laptop", "laptop", 
"laptop", "laptop"), sales = c(20.4, 29, 26, 40, 35, 36, 28, 
41, 70, 75, 78, 99, 40, 100, 132, 123, 145, 125, 145, 124), Date = structure(c(17784, 
17791, 17798, 17805, 17812, 17819, 17826, 17833, 17608, 17615, 
17622, 17629, 17636, 17713, 17726, 17739, 17752, 17765, 17778, 
17791), class = "Date")), row.names = c(NA, -20L), class = "data.frame")

Я пытался выполнить

ts_test <- ts(multiple_ts, frequency=52)

для преобразования во временные ряды, но не получилось

structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, 20.4, 29, 26, 40, 35, 36, 28, 41, 
70, 75, 78, 99, 40, 100, 132, 123, 145, 125, 145, 124, 17784, 
17791, 17798, 17805, 17812, 17819, 17826, 17833, 17608, 17615, 
17622, 17629, 17636, 17713, 17726, 17739, 17752, 17765, 17778, 
17791), .Dim = c(20L, 3L), .Dimnames = list(NULL, c("item", "sales", 
"Date")), .Tsp = c(1, 1.36538461538462, 52), class = c("mts", 
"ts", "matrix"))

Может ли кто-нибудь помочь мне, как преобразовать во временные ряды группы по элементам и применить экспоненциальное сглаживание к каждому элементу.Заранее спасибо!

1 Ответ

0 голосов
/ 12 ноября 2018

Конвертируйте фрейм данных в 3-столбцовый объект зоопарка z и из z создайте список ts объектов L. Примените экспоненциальное сглаживание к каждому компоненту L, давая HW. Затем составьте сюжет каждого из них. Обратите внимание, что ts объекты не могут представлять класс Date напрямую, поэтому мы опускаем ось X и рисуем ее самостоятельно в pltHW.

library(zoo)

z <- read.zoo(multiple_ts, index = "Date", split = "item")
L <- lapply(as.list(z), function(x) as.ts(na.omit(x)))
HW <- lapply(L, HoltWinters, beta = FALSE, gamma = FALSE)

# given HoltWinters object x get fitted values as zooreg object
fitHW <- function(x) {
  fitted <- fitted(x)
  zooreg(fitted[, 1], as.Date(start(fitted)), frequency = frequency(fit))
}

# plot
pltHW <- function(x, sub) {
  plot(x, sub = sub, xaxt = "n")
  fit <- fit(x)
  Axis(time(fit), side = 1)
  invisible(x)
}

par.old <- par(mfrow = c(3, 1))
junk <- Map(pltHW, HW, names(HW))
par(par.old)

screenshot

...