首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过tidyverts包中的键创建时间序列交叉验证切片

通过tidyverts包中的键创建时间序列交叉验证切片
EN

Stack Overflow用户
提问于 2020-05-06 06:57:31
回答 1查看 454关注 0票数 0

有没有办法使用tidyverts包按键创建时间序列交叉验证集?我似乎不能把它弄对。下面是我的尝试的复印件。

该示例涉及为预测创建时间序列交叉验证(提前一步的切片)。key变量有两个不同的值,我希望有一个tsibble包含两个键的时间序列切片。当我试图行绑定两个tsibble时,我得到一个错误。

代码语言:javascript
复制
library(dplyr)
library(tibble)
library(tsibble)

# helper function
create_cv_slices <- function(data, forecast_horizon) {
  data %>%
    dplyr::slice(1:(nrow(data) - forecast_horizon)) %>%
    tsibble::stretch_tsibble(.init = nrow(data) - 2 * forecast_horizon, .step = 1)
}

# get data
raw_tsbl <- tibble::tribble(
  ~index,      ~key,    ~Revenue,     ~Claims,
  20160101, "series1",  11011836.1, 5386836.696,
  20160201, "series1", 11042641.16, 9967325.715,
  20160301, "series1", 11445687.52, 10947197.89,
  20160401, "series1", 11252943.11, 6980431.415,
  20160101, "series2",    12236155,    12526224,
  20160201, "series2",     8675364,     9812904,
  20160301, "series2",    10081130,     8423497,
  20160401, "series2",    14840111,     8079813
) %>%
  dplyr::mutate(index = tsibble::yearmonth(as.character(index))) %>%
  tsibble::as_tsibble(index = index, key = key)

keys <- unique(raw_tsbl$key)

# split & combine
tbl1 = raw_tsbl %>%
  dplyr::filter(key == keys[1]) %>%
  create_cv_slices(., forecast_horizon = 1) %>%
  tibble::as_tibble()

tbl2 = raw_tsbl %>%
  dplyr::filter(key == keys[2]) %>%
  create_cv_slices(., forecast_horizon = 1) %>%
  tibble::as_tibble()

dplyr::bind_rows(tbl1, tbl2) %>%
  tsibble::as_tsibble(index = index, key = key)
#> Error: A valid tsibble must have distinct rows identified by key and index.
#> Please use `duplicates()` to check the duplicated rows.

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 10:03:44

似乎使用bind_rows来组合tsibble是行不通的。使用bind_rows并在as_tsibble函数中设置validate = FALSE,可以创建一个tsibble,但它将tsibble显示为每日系列,而不是每月(这是它应该显示的)。但是,使用具有相同参数设置的rbind将创建所需的tsibble。

代码语言:javascript
复制
rbind(tbl1, tbl2) %>%
  tsibble::as_tsibble(index = index, key = c(key, .id), validate = F)

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61624458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档