如何处理R中的时间序列中的NA?

时间:2019-11-29 12:53:48

标签: r time-series na forecasting arima

我正在尝试建立ARIMA模型,以预测办公室的入住率。数据中有一些NA,这些日期是国定假日,这意味着没有人在办公室,因此没有数据。如何处理这些NA值以建立ARIMA模型?

不适用的示例:

    2019-04-19 09:00:00      12.878788
    2019-04-19 10:00:00      19.848485
    2019-04-19 11:00:00      21.969697
    2019-04-19 12:00:00      11.212121
    2019-04-19 13:00:00      14.090909
    2019-04-19 14:00:00      16.363636
    2019-04-19 15:00:00      22.727273
    2019-04-19 16:00:00       7.727273
    2019-04-22 09:00:00             NA
    2019-04-22 10:00:00             NA
    2019-04-22 11:00:00             NA
    2019-04-22 12:00:00             NA
    2019-04-22 13:00:00             NA
    2019-04-22 14:00:00             NA
    2019-04-22 15:00:00             NA
    2019-04-22 16:00:00             NA
    2019-04-23 09:00:00      23.636364
    2019-04-23 10:00:00      49.545455
    2019-04-23 11:00:00      57.575758
    2019-04-23 12:00:00      48.030303
    2019-04-23 13:00:00      45.151515
    2019-04-23 14:00:00      35.606061
    2019-04-23 15:00:00      25.151515
    2019-04-23 16:00:00       8.333333

我尝试使用此代码:

    plot(stl(ts, na.action = na.omit))

但是我得到了这个错误:

    Error in na.omit.ts(as.ts(x)) : time series contains internal NAs

1 个答案:

答案 0 :(得分:1)

R中的ARIMA模型可以毫无问题地处理NA。 STL分解不能处理NA,这是您的错误来源。

如果要执行STL,可以使用mstl包中的forecast来为您估计丢失的值。

library(forecast)
library(ggplot2)
USAccDeaths[20:23] <- NA
USAccDeaths %>%
  mstl(s.window="periodic") %>%
  autoplot()


USAccDeaths %>%
  auto.arima() %>%
  forecast(h=24) %>%
  autoplot()

reprex package(v0.3.0)于2019-11-30创建