0

データセットから誤ったデータ値を削除しています。今まで私は次の方法でそれをやっていた:

z [、1]が私の時系列変数であると仮定します。eisはその中のそれぞれの要素です。
std_d is sd(abs( diff(z[,1], lag=1) ))

e1-e2> std_d... remove e2.
e1-e3> std_d...remove e3
e1-e4<std_d...move on to e4
e4-e5 <std_d..move on e5
e5-e6>std_d...remove e6
e5-e7<std_d...move on e7

私は次のコードを使用してこれを行っています:

   zx <- as.numeric(coredata(z[,1]))
 coredata(z[,1]) <- Reduce(function(y,xx){ 
                          if( abs(tail(y[!is.na(y)], 1) - xx) > std_d ) {
                                    c(y,NA)} else { 
                                    c(y,xx)} }, 
                              zx )

私の質問は:

std_d、つまりラグ差の標準偏差から「移動標準偏差」に切り替えたい。たとえば、e20をチェックする場合、std_dは次のようになります-> lag = 1で、前の15要素と後の15要素の差の標準偏差。

動物園でロールミーンを使うことを考えていました。しかし、私はそれを上記の関数に適合させることができませんでした。どのようにそれを行うことができますか?

あなたの時間と配慮していただきありがとうございます。サンプルデータは次のとおりです。

           "timestamp" "mesured_distance" "IFC_Code" "from_sensor_to_river_bottom"
   "1" "2012-06-04 21:30:09-05" 4818 995 5030
   "2" "2012-06-04 21:15:11-05" 4820 995 5030
   "3" "2012-06-04 21:00:10-05" 4818 995 5030
   "4" "2012-06-04 20:45:10-05" 4817 995 5030
   "5" "2012-06-04 20:30:09-05" 8816 995 5030
   "6" "2012-06-04 20:15:09-05" 4816 995 5030
   "7" "2012-06-04 20:00:08-05" 4811 995 5030
   "8" "2012-06-04 19:45:07-05" 15009 995 5030
   "9" "2012-06-04 19:30:07-05" 4810 995 5030
   "10" "2012-06-04 19:15:09-05" 4795 995 5030
4

1 に答える 1

1

おそらく...データがない場合はテストされていません:

zx <- as.numeric(coredata(z[,1]))
coredata(z[,1]) <- Reduce(function(y,xx){ 
                          if( length(y) <15) {c(y,xx) } else {
                          if( abs(tail(y[!is.na(y)], 1) - xx) > std(tail( y, 15) ) {
                                    c(y,NA)} else { 
                                    c(y,xx)}                                       } 
                                          }, 
                              zx )

テストせずに、パレンとブレースが適切に一致したかどうかを確認できません

于 2012-06-06T03:14:30.270 に答える