我有一个数据框,其中一列代表我的每日观察值和格式化的日期列" 2014-10-01"使用as.Dates函数。
我正在创建一个执行以下操作的xts对象:
xtsObject <- as.xts(vector$values, order.by = vector$dates)
然后我将xtsObject传递给ets预测函数,并在结果对象上调用预测来预测接下来的三个时间步骤,如下所示:
fit <- ets(xtsObject)
pred <- predict(fit,3)
结果如下:
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
366 0 0 0 0 0
367 0 0 0 0 0
368 0 0 0 0 0
(传递的向量由全零组成,因此预测按预期工作)
我的问题是,无论如何将这三个未来的预测点与适当的日期联系起来?我的数据是每天,因此而不是&#34; 366&#34;,&#34; 367&#34;,&#34; 368&#34;最好看到&#34; 10-01-2015&#34;,&#34; 10-02-2015&#34;,&#34; 10-03-2015&#34;要知道这些是这些预测点所属的日期。我尝试过zoo,xts和ts,并且都产生类似的输出。想法?
答案 0 :(得分:2)
使用输入zoo对象,然后将预测转换为使用适当转换的索引行名称将该数据帧转换为zoo对象的数据帧:
library(zoo)
# test input
set.seed(123)
z <- zoo(rnorm(25, 1:25), as.Date("2000-01-01") + 0:24)
e <- ets(z)
p <- predict(e, 3)
DF <- as.data.frame(p)
zoo(DF, as.Date(as.numeric(rownames(DF))))
,并提供:
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2000-01-26 25.15238 23.97099 26.33377 23.34559 26.95916
2000-01-27 26.07805 24.89666 27.25945 24.27127 27.88484
2000-01-28 27.00373 25.82234 28.18512 25.19695 28.81052