【问题标题】:Converting time-series results to dates将时间序列结果转换为日期
【发布时间】:2018-03-22 12:23:10
【问题描述】:

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

注意

  1. rownames 现在是dates,它们在与给定数据相同的时间线上继续。

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

  3. past 数据和 forecast 数据的 values 位于同一列中。这使得使用ggplot2 进行绘图很容易

我猜我不是唯一一个也喜欢使用tidyverse 的预测人员。您如何将预测输出转换为类似于我上面描述的整洁的输出?

编辑

我想补充一点,我提供了一个星期的例子,但是如果有人有一种方法或工具可以将相同的想法推广到几天,那也将不胜感激。

【问题讨论】:

    标签: r forecasting tidyverse


    【解决方案1】:

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

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

    更多关于哪个tidiers 用于不同预测(ets、arima、stl 等)的信息,请参见here

    编辑

    看来我说得太早了。我在从每周水平预测中检索日期时遇到了一些问题,但这可能是由于我对软件包缺乏经验。

    【讨论】:

    • 仅供参考 - 商业科学人士在推特上非常活跃。如果您确定一个好的方法,请尝试并发布后续完整答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2017-05-17
    • 2021-08-26
    • 1970-01-01
    • 2021-10-05
    • 2017-05-14
    • 2021-12-27
    相关资源
    最近更新 更多