R 不同视界的滚动原点交叉验证?
我拥有2010-2016年期间的时间序列培训数据集,下表列出了观察次数。我想在R中执行滚动原点交叉验证,初始折叠使用2010年的观察值作为培训,2011年作为测试。第二部分使用2010年和2011年的daa作为培训,2012年作为测试等。 我尝试过不同的功能,例如R 不同视界的滚动原点交叉验证?,r,time-series,cross-validation,R,Time Series,Cross Validation,我拥有2010-2016年期间的时间序列培训数据集,下表列出了观察次数。我想在R中执行滚动原点交叉验证,初始折叠使用2010年的观察值作为培训,2011年作为测试。第二部分使用2010年和2011年的daa作为培训,2012年作为测试等。 我尝试过不同的功能,例如滚动原点和插入符号列车控制,但遗憾的是,它似乎只适用于1个预测地平线值和1个跳过值。我非常感谢任何帮助,尤其是代码示例 2010 2011 2012 2013 2014 2015 2016 614 617 599 677 881 121
滚动原点
和插入符号列车控制
,但遗憾的是,它似乎只适用于1个预测地平线值和1个跳过值。我非常感谢任何帮助,尤其是代码示例
2010
2011
2012
2013
2014
2015
2016
614
617
599
677
881
1215
1208
设x为数据,y[i]为x[i]年。然后计算u[i]作为第i个唯一年份中最后一个数据点的索引,并迭代训练集和测试集中最后一个点的索引。在下面的代码中,我们返回每个迭代的训练和测试数据,但您可以用所需的任何计算替换标记为##的行
y <- c(2000, 2000, 2000, 2001, 2001, 2002)
x <- 11:16
u <- unique(findInterval(y, y)) # 3, 5, 6
# input is last index of training and test sets in x
f <- function(itrain, itest) {
train <- x[ seq(1, itrain)]
test <- x[ seq(itrain+1, itest) ]
list(train = train, test = test) ##
}
L <- Map(f, itrain = head(u, -1), itest = tail(u, -1))
names(L) <- y[ u[-1] ]
str(L)
非常感谢你!这工作完美无瑕。你知道我如何将此列表转换为可在中使用的折叠,即插入符号、tidymodels等?如果我们运行上述操作,除了使用x干杯来帮助!
List of 2
$ 2001:List of 2
..$ train: int [1:3] 11 12 13
..$ test : int [1:2] 14 15
$ 2002:List of 2
..$ train: int [1:5] 11 12 13 14 15
..$ test : int 16