0

我正在尝试创建一个装袋算法。为此,我需要从整个时间序列中绘制随机块。我创建了一个包含随机块绘制的索引向量,但是当我想将它应用于我的动物园时间序列时,我得到了

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 = 块大小,b = 块数(因此 m*b=n)。Ypretest 和 Xpretest 被初始化为 zoo(但我也尝试了各种其他类型,也没有成功)

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]

有什么建议么?

4

1 回答 1

1

这种带替换的重采样与 R 中的时间序列对象不完全兼容,在这种情况下,具有相同时间戳的观察可能会导致问题。鉴于您的机器学习算法适用于向量和矩阵,我会使用它们。您可以完全删除 zoo 对象,或者在 bagging 之前对其进行转换。

于 2013-02-13T08:30:09.577 回答