DF
次のようなデータフレームがあります。
ID Area time
1 1 182.685 1
2 2 182.714 1
3 3 182.275 1
4 4 211.928 1
5 5 218.804 1
6 6 183.445 1
...
1 1 184.334 2
2 2 196.765 2
3 3 186.435 2
4 4 213.322 2
5 5 214.766 2
6 6 172.667 2
..などにID = 6
。各IDに自己相関関数を適用します。つまりID = 1
、時間1とID = 1
時間2を比較します。
たとえばacf()
私のデータフレームに適用する最も簡単な方法は何ですか?
使おうとすると
autocorr = aggregate(x = DF$Area, by = list(DF$ID), FUN = acf)
奇妙なオブジェクトを取得します。
前もって感謝します!
各IDに自己相関関数を適用したい
OK、いいので、相互相関は必要ありません。これにより、作業がはるかに簡単になります。
私は奇妙なオブジェクトを取得します
acf
たくさんのものを返します。つまり、物のリストを返します。ACF値のみに関心があると思うので、次のものが必要です。
FUN = function (u) c(acf(u, plot = FALSE)$acf)
また、使用することaggregate
はお勧めできません。あなたはよいでしょうsplit
とsapply
。
## so your data frame is called `x`
oo <- sapply(split(x$Area, x$ID), FUN = function (u) c(acf(u, plot = FALSE)$acf) )
あなたはバランスの取れたデータを持っている場合は、それぞれの観測値の数と同じ数を持っている場合、すなわち、ID
、oo
確かにマトリックスに簡素化されます。バランスの取れたデータがない場合は、のlag.max
引数を明示的に制御することをお勧めしますacf
。デフォルトでacf
は、観測数に基づいてこの値を自動決定します。
ここで、ラグ0からラグ7が必要だとすると、次のように設定できます。
oo <- sapply(split(x$Area, x$ID),
FUN = function (u) c(acf(u, plot = FALSE, lag.max = 7)$acf) )
したがって、結果oo
は8行の行列になります(ラグの場合は行、の場合は列ID
)。この結果を保持するためにデータフレームを使用するのは良いことではありませんが、データフレームが必要な場合は、次のようにしてください。
data.frame(oo)
マトリックスまたはデータフレームのいずれかのデータを使用すると、さらに分析を行うのが簡単になります。
の完全な説明についてはacf
、複数のACFの箱ひげ図を作成するをお読みください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加