У меня есть объект xts с именем ts_group. Я sh создаю график декомпозиции на объекте xts, показывающий графики трендов, сезонности, цикличности и остаточных значений. Однако я не могу этого сделать. Пожалуйста помоги. Прочитайте несколько статей.
head(ts_group,2)
store item total_sales total_items
2013-01-01 1 1 328 23
2013-01-01 1 2 911 24
Мне нужны графики разложения для столбцов продаж и товаров. Также мне нужно, чтобы ось х имела время в соответствии с 2013-янв. Et c. а не период времени 1,2,3 и т. д. c. Этот вопрос содержал код для этого на обычном объекте временных рядов. Но я не могу выполнить репликацию в моем наборе данных, потому что мой объект - это объект xts
decompose.xts <-
function (x, type = c("additive", "multiplicative"), filter = NULL)
{
dts <- decompose(as.ts(x), type, filter)
dts$x <- .xts(dts$x, .index(x))
dts$seasonal <- .xts(dts$seasonal, .index(x))
dts$trend <- .xts(dts$trend, .index(x))
dts$random <- .xts(dts$random, .index(x))
with(dts,
structure(list(x = x, seasonal = seasonal, trend = trend,
random = if (type == "additive") x - seasonal - trend else x/seasonal/trend,
figure = figure, type = type), class = "decomposed.xts"))
}
Код для построения графика, который принимает значения из набора данных вместо периодов времени один, 2 et c.
plot.decomposed.xts <-
function(x, ...)
{
xx <- x$x
if (is.null(xx))
xx <- with(x,
if (type == "additive") random + trend + seasonal
else random * trend * seasonal)
p <- cbind(observed = xx, trend = x$trend, seasonal = x$seasonal, random = x$random)
plot(p, main = paste("Decomposition of", x$type, "time series"), multi.panel = 4,
yaxis.same = FALSE, major.ticks = "days", grid.ticks.on = "days", ...)
}
Функции вызова:
dex <- decompose.xts(ts_group)
Error in if (frequency > 1 && abs(frequency - round(frequency)) < ts.eps) frequency <- round(frequency) :
missing value where TRUE/FALSE needed
Код взят из вопрос