通过tidyverts包中的键创建时间序列交叉验证切片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过tidyverts包中的键创建时间序列交叉验证切片相关的知识,希望对你有一定的参考价值。
是否有使用tidyverts包通过密钥创建时间序列交叉验证集的方法?我似乎无法正确处理。下面是我尝试的代表。
该示例涉及为预测创建时间序列交叉验证(提前1步的切片)。键变量具有2个不同的值,我希望有一个包含两个键的时间序列切片的小消息。当我尝试对两个标签进行行绑定时,出现错误。
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.
谢谢。
看来,使用bind_rows组合小工具是行不通的。使用bind_rows并在validate = FALSE
函数中设置as_tsibble
,可以创建一个小插曲,但是它将小插曲显示为每日系列,而不是按月(应该是每月)。但是,将rbind与相同的参数设置一起使用,会创建所需的tsibble。
rbind(tbl1, tbl2) %>%
tsibble::as_tsibble(index = index, key = key, validate = F)
谢谢。
以上是关于通过tidyverts包中的键创建时间序列交叉验证切片的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样返回的样本列表长度为k个
R语言编写自定义K折交叉验证(k-fold crossValidation)函数使用使用bootstrap包中的crossval函数来交叉验证模型的R方指标验证模型的效能的可靠性和稳定性
R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样返回的样本列表长度为k×times个times为组内抽样次数
R语言使用e1071包中的svm函数构建支持向量机SVM模型使用tune.svm函数基于网格搜索(10折交叉验证)对RBF核函数的gamma参数和cost参数进行参数寻优使用最优参数构建最终模型