我使用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
,它们与给定数据在同一时间轴上继续。
过去的数据和预测数据是行绑定的
values
数据和past
数据的forecast
位于同一列中。这样可以轻松地使用ggplot2
我猜我并不是唯一一个也喜欢使用tidyverse
的预测人员。你如何将预测输出转换为与我上面描述的类似的东西?
我想补充一点,我提供了几个星期的例子,但是如果有人有一个方法或工具可以将相同的想法概括为几天,也会受到赞赏。
答案 0 :(得分:0)
在搜索了一些工具和帖子后,我发现这个business-science帖子回答了我的所有问题并给了我正在寻找的确切结果。
关键函数是tk_ts
,用于索引时间序列,sw_sweep(rename_index = "date")
用于获取预测数据并返回日期索引。
有关tidiers
可用于不同预测(ets,arima,stl等)的更多信息,请here。
好像我说得太早了。我在从每周级别预测中检索日期时遇到了一些问题,但这可能是由于我对软件包的经验不足。