将时间序列结果转换为日期

时间:2018-03-22 12:23:11

标签: r forecasting tidyverse

我使用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     ...     ...

在理想的情况下,我希望更多tidytidy输出可能如下所示:

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

请注意

  1. rownames现在是date,它们与给定数据在同一时间轴上继续。

  2. 过去的数据和预测数据是行绑定的

  3. values数据和past数据的forecast位于同一列中。这样可以轻松地使用ggplot2

  4. 进行绘图

    我猜我并不是唯一一个也喜欢使用tidyverse的预测人员。你如何将预测输出转换为与我上面描述的类似的东西?

    修改

    我想补充一点,我提供了几个星期的例子,但是如果有人有一个方法或工具可以将相同的想法概括为几天,也会受到赞赏。

1 个答案:

答案 0 :(得分:0)

在搜索了一些工具和帖子后,我发现这个business-science帖子回答了我的所有问题并给了我正在寻找的确切结果。

关键函数是tk_ts,用于索引时间序列,sw_sweep(rename_index = "date")用于获取预测数据并返回日期索引。

有关tidiers可用于不同预测(ets,arima,stl等)的更多信息,请here

修改

好像我说得太早了。我在从每周级别预测中检索日期时遇到了一些问题,但这可能是由于我对软件包的经验不足。