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))