R: ts() с данными NA

У меня есть следующая функция:

ts.dat <- ts(data=dat$sales, start = 1, frequency = 12)

ц. дата возвращается

   Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1 9000 8600 8500 8600 8500 8300 8600 9100 8800 8700 9300 7900
2 7900 8800 8500 8900 9000 8800 8800 9100 9500 8900 9200 8400
3 8400 9200 9500 9100 8700 8300   NA

Тем не мение,

 plot(stl(ts.dat, s.window=12))

возвращается

Error in na.fail.default(as.ts(x)) : missing values in object'plot':

Я старался na.action=na.pass, но это не сработало. Есть идеи, как бороться с АН, если в этом причина?

Также: Любой шанс принять первое свидание от dat как начать?

1 ответ

Решение

Есть идеи, как бороться с АН, если в этом причина?

Вам нужно использовать na.action = na.omitто есть сбрасывая NA при выполнении вычислений.

plot(stl(ts.dat, s.window=12, na.action = na.omit))

СТЛ

na.pass будет просто предполагать NA как нормальное наблюдение. Но это все равно выдаст ошибку stl() позже вызывает скомпилированный код и не может распознать NA,

Любой шанс взять первое свидание от dat как начать?

Посмотрите на примеры в нижней части ?ts:

 ## Using July 1954 as start date:
 gnp <- ts(cumsum(1 + round(rnorm(100), 2)),
           start = c(1954, 7), frequency = 12)

Чтобы начать с июля 1954 года, положить start = c(1954, 7),

Вы также можете вменять недостающие данные в свой временной ряд. (замена NA на разумное значение)

Для этого существуют пакеты R (например, imputeTS или zoo).

В частности, у imputeTS есть некоторые функции, которые являются очень хорошим выбором для замены отсутствующих данных во временных рядах сезонностью. (na.seadec () или na.kalman()) (у него также есть другая функция вменения - здесь обзор)

Решение здесь будет выглядеть так:

library(imputeTS)
x <- na.seadec(ts.dat)
plot(stl(x, s.window=12))
Другие вопросы по тегам