を使用aggregate
して、データを毎日および毎週の間隔に変換し、通常の時系列に対して実行する関数で自己相関を計算できます (たとえば、acf
)。例えば:
# make a data set to play with
library(zoo)
ts <- sort(runif(100)*168*3) # 100 observations over 3 weeks
ys <- runif(100) # y values
z <- zoo(ys, order.by=ts)
# ** convert to daily/weekly. ?aggregate.zoo
# NOTE: can use ts instead of index(z)
z.daily <- aggregate(z,index(z) %/% 24) # has 21 elements (one per day)
z.weekly <- aggregate(z,index(z) %/% 168) # has 3 elements (one per week)
# Now compute correlation, lag 1 (index in z.daily/weekly)
daily.acf <- acf(z.daily, lag.max=1)[1]
weekly.acf <- acf(z.weekly, lag.max=1)[1]
は、日別または週別のすべての発生を合計する日別または週別のデータにaggregate
変換します。観測時間の整数部分を 24 で割った値 (つまり、観測日) をz
調べる (または 168) ことによって、グループ化を行います。index(z) %/% 24
次に、acf
関数は自己相関を計算します (lag
時間ではなく、ベクトルのインデックス上にある)。
私は統計についてあまり詳しくありません。
weekly.acf <- acf(z.daily,lag.max=7)[7]
から自己相関を計算するときとは異なる答えが得られます。これは、遅れが 1 の週次データとは対照的に、遅れが 7 の毎日のz.weekly
データで自己相関を行っているためです。あなたが欲しいもの。