9

みんな、通常あなたが次のようなことをするとき:

tmp = zoo(rnorm(100), 1:100)
rollapply(tmp, 10, function(x) quantile(x, 0.05), align="right")

当然rollapplyのことながら、10個の要素が使用可能になった瞬間から値の計算を開始します。

残念ながら、最初の10回の観測にできるだけ多くのデータを使用するものが必要です。基本的に、スライディングウィンドウを使用するのに十分なデータが得られるまでデータのウィンドウが大きくなります(例:1、1:2、1:3、1:4など)。 。少なくとも10個の要素ができるまで、通常どおりウィンドウをスライドさせます。

醜いforループよりもこれを行うためのより良い方法はありますか?

4

2 に答える 2

10

rollapplypartial=TRUE動物園では、例えばを指定することによってそれを行うことができます

> library(zoo)
> 
> rollapplyr(zoo(1:20), 3, sum, partial=TRUE)
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
 1  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57
于 2011-01-28T15:37:27.390 に答える
4

最初に9つのNAでシリーズを埋めてみませんか?「醜いforループ」よりも間違いなく優れています。

tmp = zoo(c(rep(NA,9), rnorm(100)), 1:109)
zoo(rollapply(tmp, 10, function(x) quantile(x, 0.05, na.rm = TRUE), 
              align="right"), 1:100)
于 2011-01-28T15:39:33.240 に答える