我正在尝试创建一个套袋算法。 为此我需要从整个时间序列中绘制随机块。 我创建了一个包含随机块绘制的索引向量,但是 当我想在我的动物园时间序列中应用它时,我得到了
In zoo(rval, index(x)[i]) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
错误。因为采样使用替换,我得到具有相同时间戳的多个条目。我以某种方式尝试将数据转换为不包含时间戳的矩阵,但实际上并没有成功。我也在控制台中手动尝试了同样的事情,我没有得到动物园对象的警告,但我真的不想解决错误消息或类似的事情。
这将是所讨论代码的一部分:n =样本大小,m = blocksize,b =块数(因此m * b = n)。 Ypretest和Xpretest被初始化为动物园(但我也尝试了其他各种类型,也没有成功)
if (n%%m == 0) {
b <- n/m
while(tail(blockvector,n=1)+m < n) {
blockvector <- c(blockvector,tail(blockvector,n=1)+m)
}
randomvector <- sample(blockvector, b, replace=T)
for(i in 1:b) {
blockindex <- c(blockindex, randomvector[i]:(randomvector[i]+m-1))
}
Ypretest <- Y[blockindex]
Xpretest <- X[blockindex]
有什么建议吗?
答案 0 :(得分:1)
这种替换的重新采样与R中的时间序列对象并不完全兼容,其中具有相同时间戳的观察可能会导致问题。鉴于您的机器学习算法工作向量和矩阵,我会使用它们。您可以完全删除动物园对象,或者在装袋之前将其转换。