2017-01-29 12 views
-3

私は何年もこの問題に遭遇しました。多分私は何かを誤解しているか、何らかの理由でこれについて愚かであるだけです。私は、不規則な時系列でローリング平均を行うときに厄介な問題に出会った。パッケージや単純なスクリプトで利用できるメソッドの概要はここにあります:Calculating moving average in RR不規則な時系列からのローリング平均

私はそれらのいくつかを誤解しているかもしれませんが、私は不規則な時系列を扱う際の問題があります。例えば、zooパッケージのローリング手段の一般的な方法では、各データに固有の値が必要です。しかし、この場合、これはローリング平均ではありませんが、単位時間単位当たりの平均のローリング平均は、データポイントが平均に及ぼす影響が、より多くのものよりも小さくなります。

実際の移動平均は、集計ではなく計算されたポイントごとの分布で作業する必要があるようです。

次のデータフレームまたは不規則な値がある場合、どのようにして各値の移動平均メジャーを作成するのが最適でしょうか。

df <- data.frame(year = c(rep(2000,3),rep(2001,1),rep(2004,4),rep(2005,3),+ 
     rep(2006,3),rep(2007,1),rep(2008,2),rep(2009,6),rep(2010,8)),+ 
     value1=rnorm(31), value2=rnorm(31), value3=rnorm(31)) 

私は、最初の答えとして投稿しますサブセットを経由してそれを行うための簡単な方法を発見したが、これは限られた状況で動作し、それぞれの時間をカスタマイズする必要があります。私は一般的な解決策が何か不思議です。また、誰かが圧延平均計算の平均値と分布の平均値の平均を使用するプラクティスについてコメントすることができれば、それは余分に役立ちます。ありがとう!

答えて

0

ここで私が思いついた単純なサブセットがあります。誰でも同じ問題が見つかった場合に役立ちます:

df <- data.frame(year = c(rep(2000,3),rep(2001,1),rep(2004,4),rep(2005,3), + 
rep(2006,3),rep(2007,1),rep(2008,2),rep(2009,6),rep(2010,8)), + 
value1=rnorm(31), value2=rnorm(31), value3=rnorm(31)) 

rmeans <- data.frame() 
for (i in (min(df$year)+2):(max(df$year)-2)){ 
    rmeans <- rbind(rmeans, data.frame(year=i,as.data.frame.list(colMeans(df + 
[df$year>=(i-2)&df$year<(i+2),-c(1,2)])))) 
} 
関連する問題