4

スプリアスジッター/エラーを回避するために時系列を平滑化したいと思います。言い換えれば、私はいくつかの非常に局所的なロバストな平滑化を行いたいのです。

zooパッケージでrollmeanとrollmedianに出くわしましたが、ベクターにNAが含まれているため、問題が発生しました。次に、それらの動物園の関数がrunnedを使用し、そこに問題があることをどこかで読みました。

==例==

median(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),na.rm = TRUE)
runmed(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),k=3)

na.rm = TRUE最初の行は2を返しますが、含まれていなければNAを返します。2行目は。を返しますError in runmed(c(1, 1, 1, 2, 2, 2, 7, NA, 1, 2, 3, 10, 10, 10), k = 3) : NA/NaN/Inf in foreign function call (arg 1)。行にna.rm引数を追加する方法はありません。

NAを処理するためにどのように実行されますか?ちなみに、rollmeanはNAまで正しいベクトルを返し、それ以降はすべての値に対してNAを返します。

4

2 に答える 2

6

使用するna.omit

runmed(na.omit(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10)),k=3)
# [1]  1  1  1  2  2  2  2  2  2  3 10 10 10
#attr(,"k")
#[1] 3

または、zooの関数の1つ(、、、、na.*など)を使用します。例:na.locfna.approxna.splinena.aggregate

runmed(na.locf(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10)),k=3)
#[1]  1  1  1  2  2  2  7  7  2  2  3 10 10 10
#attr(,"k")
#[1] 3
于 2012-08-27T23:01:34.307 に答える
1

caToolsパッケージrunquantileから参照してください。

于 2016-01-26T06:14:23.933 に答える