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 の timeseries オブジェクトと完全に互換性があるわけではなく、同じタイムスタンプを持つ観測が問題を引き起こす可能性があります。あなたの機械学習アルゴリズムがベクトルと行列で機能することを考えると、私はそれらを使用します。Zoo オブジェクトを完全に削除することも、バギングの直前に変換することもできます。

于 2013-02-13T08:30:09.577 に答える