Вот три способа сделать это:
library(lubridate)
library(xts)
library(dplyr)
library(forecast)
df$Date = mdy(df$Date)
Удаление воскресенья:
ts_no_sunday = df %>%
filter(wday(df$Date) != 1) %>%
{xts(.$Units, .$Date)}
plot(ts_no_sunday)
no_sunday_arima = auto.arima(ts_no_sunday)
plot(forecast(no_sunday_arima, h = 10))
![введите описание изображения здесь](https: //i.stack .imgur.com / EuXFF.png )
Заменить воскресенья на НП:
ts_sunday = df %>%
mutate(Units = replace(Units, which(wday(df$Date) == 1), NA)) %>%
{xts(.$Units, .$Date)}
plot(ts_sunday)
sunday_arima = auto.arima(ts_sunday)
plot(forecast(sunday_arima, h = 10))
![введите описание изображения здесь](https: //i.stack .imgur.com / OM51A.png )
Интерполировать воскресенье:
ts_interp = df %>%
mutate(Units = replace(Units, which(wday(df$Date) == 1), NA),
Units = na.approx(Units)) %>%
{xts(.$Units, .$Date)}
plot(ts_interp)
interp_arima = auto.arima(ts_interp)
plot(forecast(interp_arima, h = 10))
![введите описание изображения здесь](https: //i.stack .imgur.com / Syc24.png )
Примечания:
Как видно, прогнозы у них разные. Это связано с тем, что первый временной ряд нерегулярный, второй - обычный временной ряд с пропущенными значениями, а третий - обычный временной ряд с интерполированными данными. На мой взгляд, лучший способ справиться с отсутствующими значениями - это интерполировать перед подгонкой ARIMA, поскольку ARIMA предполагает, что временные ряды имеют регулярные интервалы. Однако это также зависит от того, действительно ли отсутствуют ваши «недостающие» точки данных, а не от остановки активности. Первое следует обрабатывать с помощью интерполяции, тогда как для второго вам может быть лучше удалить воскресенья и обрабатывать временные ряды так, как будто воскресенья не существует.
См. Это обсуждение Как обрабатывать несуществующие или отсутствующие данные? и это на Использование пакета прогнозов R с отсутствующими значениями и / или нерегулярными временными рядами
person
acylam
schedule
02.10.2017
df
для другого объекта. Попробуйте очистить рабочее пространство и повторно запустить только свои данные и мой код. Вы также можете протестировать сtest = mdy(df$Date)
, чтобы не заменятьdf$Date
каждый раз, когда вы запускаете код. - person acylam   schedule 13.11.2017