我需要使用交叉验证方法对R中的预测模型进行回测。
因此,我应该从数据集中的5个观测值中选择4个用于训练目的,而将其余的1个用于测试。
现在,假设x是由100个观测值组成的总数据集,我知道您可以x1通过键入以下内容来选择R中的一个子样本:
x1 <- x[1:80, ]
Run Code Online (Sandbox Code Playgroud)
这样,我从数据集中的第五个观测值中选择了前四个。
我应该怎么做才能选择第五个子样本中的第二个,即观察值[1:20]和[40:100]?
任何提示将不胜感激。如果问题不清楚,请在评论中告诉我。
您可以使用插入符号包具有很多有用的功能来进行预测建模。该createDataPartition功能可以很好地创建测试和训练分区,但是它是随机的。有没有保证每个值将在训练/测试集出现正好4倍,因为如果你手动分割使用这将是:x[1:80],x[c(1:20,41:100)],x[c(1:40,61:100)],x[c(1:20,81:100)],x[21:100]。
这是一个使用示例createDataPartition:
set.seed(1001)
x<- sample(1:1000, 100)
library(caret)
folds <- createDataPartition(x, times=5, p = 4/5) # p = percentage of data to include
# times = number of partitions
Run Code Online (Sandbox Code Playgroud)
folds包含来自的值的索引x,因此您可以像这样使用它:
x[folds[[1]]] # first training set
x[-folds[[1]]] # first test set
x[folds[[2]]] # second training set
x[-folds[[2]]] # second test set
# and so on
Run Code Online (Sandbox Code Playgroud)