为什么我在R中的预测Arima中得到重复的日期?

时间:2019-12-11 12:23:58

标签: r date arima forecast

我对R中的预测中的日期格式有疑问。假设我有每日数据:

library(forecast)
data <- c(10,20,15,10,5,20,5,10,23,6,9,9,4,6,3)
data_ts <- ts(data, start = c(2019,1), end = c(2019,15),frequency = 365)

然后用 auto.arima 估计模型并进行预测:

model <- auto.arima(data_ts)
forecast(model,h=10)

          Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
2019.0411       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0438       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0466       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0493       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0521       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0548       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0575       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0603       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0630       10.33333 2.218446 18.44822 -2.077316 22.74398
2019.0658       10.33333 2.218446 18.44822 -2.077316 22.74398

现在看看如果我将日期转换为%Y-%m-%d 格式会发生什么情况:

format(date_decimal(as.numeric(row.names(as.data.frame(forecast(model,h=10))))),"%Y-%m-%d")

"2019-01-16" "2019-01-16" "2019-01-18" "2019-01-18" "2019-01-20" "2019-01-21" "2019-01-21"
"2019-01-23" "2019-01-23" "2019-01-25"

我不断重复。我的问题是:对吗?我必须把它们解释为同一天?还是这些日期不正确,因为它们是不同的日子,所以我必须考虑每个点?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您无需将forecast对象转换为data frame,然后提取rownames。 您可以执行以下操作:

as.Date(time(forecast(model, h=10)), origin = "2019-01-15")

使用as.Datetime函数并提供适当的origin日期,您将获得:

"2019-01-16" "2019-01-17" "2019-01-18" "2019-01-19" "2019-01-20" "2019-01-21" "2019-01-22" "2019-01-23" "2019-01-24"
"2019-01-25"

希望这就是您的期望。