sve*_*ven 1 r time-series r-caret
使用插入符号中的时间分割及其参数,如何使用xyz行拆分数据,每行的长度为12?
理想情况下,还要考虑60-20-20火车测试-验证比率。
我应该这样设置吗:
initialWindow = 12,horizon = 12,fixedWindow = TRUE?
我已经阅读了文档,但是对我来说仍然不清楚。
您可以使用样例向量尝试发生的情况1:100。如果进行设置window = 12,fixedWindow = T则训练集将始终有12行。horizon指定将包含在测试集中的后续观察值的大小。如果将其设置为12,并且您不希望多次预测任何行,则必须skip将其设置为(horizon-1)。
例如,可以通过将前20%initialWindow的大小设置为60%,然后在前半部分运行模型,slices然后将后半部分slices用作最后20%,来实现60-20-20的分区。
我不知道您是否已经尝试在插入符号的train功能中使用时间片。无论如何,您都可以使用createTimeSlices()函数尝试不同的设置:
library(caret)
dat <- 1:100
slices <- createTimeSlices(dat, initialWindow = 12, horizon = 1,
skip = 0, fixedWindow = T)
slices # 88 test and train sets
# [...]
slices <- createTimeSlices(y = dat, initialWindow = 12, horizon = 12,
skip = 11, fixedWindow = T)
slices
# 7 test and train sets, observations 97 - 100 not in any test set
$train
$train$Training01
[1] 1 2 3 4 5 6 7 8 9 10 11 12
$train$Training13
[1] 13 14 15 16 17 18 19 20 21 22 23 24
$train$Training25
[1] 25 26 27 28 29 30 31 32 33 34 35 36
$train$Training37
[1] 37 38 39 40 41 42 43 44 45 46 47 48
$train$Training49
[1] 49 50 51 52 53 54 55 56 57 58 59 60
$train$Training61
[1] 61 62 63 64 65 66 67 68 69 70 71 72
$train$Training73
[1] 73 74 75 76 77 78 79 80 81 82 83 84
$test
$test$Testing01
[1] 13 14 15 16 17 18 19 20 21 22 23 24
$test$Testing13
[1] 25 26 27 28 29 30 31 32 33 34 35 36
$test$Testing25
[1] 37 38 39 40 41 42 43 44 45 46 47 48
$test$Testing37
[1] 49 50 51 52 53 54 55 56 57 58 59 60
$test$Testing49
[1] 61 62 63 64 65 66 67 68 69 70 71 72
$test$Testing61
[1] 73 74 75 76 77 78 79 80 81 82 83 84
$test$Testing73
[1] 85 86 87 88 89 90 91 92 93 94 95 96
Run Code Online (Sandbox Code Playgroud)