【问题标题】:Question with using time series in R for forecasting via example通过示例在 R 中使用时间序列进行预测的问题
【发布时间】:2020-07-20 04:43:46
【问题描述】:

我正在通过this example 工作。但是,当我开始调查 tk_ts 输出时,我认为它没有正确输入我输入的开始/结束数据,但是如果我希望它在 2019 年 12 月 31 日开始并结束,我不确定正确的输入是什么2020 年 7 月 17 日:

daily_cases2 <- as_tibble(countrydatescases) %>%
    mutate(Date = as_date(date)) %>%
    group_by(country, Date) %>%
    summarise(total_cases = sum(total_cases))

  daily_cases2$total_cases <- as.double(daily_cases2$total_cases)
  
  # Nest
  daily_cases2_nest <- daily_cases2 %>%
    group_by(country) %>%
    tidyr::nest()
  
# TS
  daily_cases2_ts <- daily_cases2_nest %>%
    mutate(data.ts = purrr::map(.x  = data, 
                         .f       = tk_ts, 
                         select   = -Date,
                         start    = 2019-12-31,
                         freq     = 1))

这是我仔细检查后得到的结果:

当我使用这些参数完成示例步骤时,问题也会出现在后续图表中:

我尝试过改变频率和启动参数,但它没有任何意义。有什么建议吗?

【问题讨论】:

  • 您想要每年 (freq=1)、每月 (freq=12) 还是每日 (freq=365) 系列?如果每年,那么您的 start 是错误的。如果每天,那么您的freq 错了,你的 start 也错了。

标签: r forecast


【解决方案1】:

您已经给出了开始和结束日期,但没有说您想要的频率。鉴于您希望该系列在 2019 年底开始并在 2020 年 7 月中旬结束,我猜您想要一个每日时间序列。在这种情况下,代码应该是:

daily_cases2_ts <- daily_cases2_nest %>%
    mutate(data.ts = purrr::map(.x  = data, 
                         .f       = tk_ts, 
                         select   = -Date,
                         start    = c(2019, 365),  # day 365 of year 2019
                         freq     = 365))          # daily series

【讨论】:

  • 感谢您的回复@Edward,当我这样做时,我得到的东西看起来像这样:imgur.com/a/G1eeYy9 这似乎不正确......
  • 您的时间序列实际上是从什么时候开始的?虽然您可以使用 end 参数过早地“子集”系列,但 start 参数必须指定 实际 开始。您不能使用它来子集(过滤)数据。所以如果你的数据不是在 2019 年底开始的,你必须先filter它。
  • 我将其用于具有不同开始日期的多个因素的数据框。这是否意味着我需要制作单独的 ts 对象?最大值/最小值是 12-31-2019 和 7-17-2020
  • 您的意思是最小/最大(不是最大/最小)。无需制作单独的 ts 对象。但现在听起来你需要一个多时间序列对象,类似于EuStockMarkets 数据集。
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 2019-02-10
  • 1970-01-01
  • 2018-12-23
  • 2021-11-09
  • 2017-11-11
  • 1970-01-01
  • 2017-08-28
相关资源
最近更新 更多