我对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"
我不断重复。我的问题是:对吗?我必须把它们解释为同一天?还是这些日期不正确,因为它们是不同的日子,所以我必须考虑每个点?
非常感谢您。
答案 0 :(得分:0)
您无需将forecast
对象转换为data frame
,然后提取rownames
。
您可以执行以下操作:
as.Date(time(forecast(model, h=10)), origin = "2019-01-15")
使用as.Date
和time
函数并提供适当的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"
希望这就是您的期望。