我使用 fpp2
进行预测 . 我的工作流程涉及导入数据,转换为时间序列,然后进行预测 .
一个痛点是,在预测之后,我留下的数据是我当前数据的扩展,但不再保留相同的 date
列 .
例如,如果我使用几周,那么我的日期看起来如下所示:
>wks
date wk y
2016-01-04 1 2500
2016-01-11 2 2530
2016-01-18 3 2600
然后我执行一些预测,比如说:
ts(wks$y, start = 2016, freq = 52) %>%
stl(t.window=25, s.window="periodic", robust=TRUE) %>%
forecast(method="naive", h = 20, level = 50) %>%
broom::tidy() %>%
rownames_to_column() %>%
janitor::clean_names()
这给了类似的东西
rowname point_forecast lo_50 hi_50
2016.058 some_double ... ...
2016.077 some_double ... ...
2016.096 some_double ... ...
在理想的情况下,我希望更多 tidy
. tidy
输出可能如下所示:
date value lo_50 hi_50 type
2016-01-04 2500 na na past
2016-01-11 2530 na na past
2016-01-18 2600 na na past
2016-01-25 some_double ... ... forecast
2016-02-01 some_double ... ... forecast
2016-02-08 some_double ... ... forecast
注意
-
rownames
现在是date
,它们在与给定数据相同的时间轴上继续 . -
过去的数据和预测数据是行绑定的
-
past
数据和forecast
数据的values
在同一列中 . 这样可以很容易地用ggplot2
绘图
我猜我不是唯一一个也喜欢使用 tidyverse
预测工作的人 . 你如何将预测输出转换为与我上面描述的类似的东西?
编辑
我想补充一点,我提供了几个星期的例子,但是如果有人有一个方法或工具将相同的想法推广到日子也会受到赞赏 .
1 回答
在搜索了一些工具和帖子之后,我发现这个business-science帖子回答了我的所有问题并给了我正在寻找的确切结果 .
关键函数是
tk_ts
,用于索引时间序列,sw_sweep(rename_index = "date")
用于获取预测数据并返回日期索引 .有关哪些
tidiers
用于不同的预测(ets,arima,stl,等)的更多信息,请参阅here .编辑
好像我说得太早了 . 我在从每周级别预测中检索日期时遇到一些问题,但这可能是由于我对软件包的经验不足 .