Как видно из исходного кода функции decompose()
, ваши данные должны иметь частоту выше 1, а количество не пропущенных точек данных должно быть как минимум в 2 раза больше значения частоты:
> decompose
function (x, type = c("additive", "multiplicative"), filter = NULL) {
type <- match.arg(type)
l <- length(x)
f <- frequency(x)
if (f <= 1 || length(na.omit(x)) < 2 * f)
stop("time series has no or less than 2 periods")
...
В вашем случае выдается ошибка, потому что временной ряд (способ, которым он был построен) имеет частоту 1:
A <- c(5,6,7,8,9,8,5,6,10,11)
A1 <- as.ts(A, frequency=12)
> frequency(A1)
# 1
Вы можете построить объект временного ряда с правильной частотой, вызывая ts
вместо as.ts
:
A1 <- ts(A, frequency=12)
> frequency(A1)
# 12
Однако в этом случае та же ошибка будет вызвана тем, что у вас есть 10 наблюдений, когда требуемое число не менее 24.
заставить это работать - иметь как минимум 24 наблюдения:
A1 <- ts(runif(24, 1, 100), frequency=12)
decompose(A1)
# works.