我可以使用非常规时间步长对R中的动物园对象执行自相关/滞后分析吗?如果是这样,怎么样?
我在这里找到的唯一一篇文章涉及常规时间序列。我在不规则的时间步骤中进行了一系列观察。例如,(t,y) = (0,2668), (36.62,2723), (42,2723),...
其中
t
是以小时为单位的时间,y
是(分类*)观察。 ...... *从原始帖子编辑我想每天(滞后= 24)和每周(滞后= 168)寻找滞后相关性,以查看某些类别的观察是否在这些滞后间隔/附近重复。在R中有办法做到这一点吗?我为我的数据创建了一个zoo对象,但是无法找到有关如何执行此操作的任何文档。
答案 0 :(得分:2)
您可以使用aggregate
将数据转换为每日&每周间隔,然后用常规时间序列的任何函数计算自相关(比如acf
)。 e.g:
# 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
将z
转换为每日或每周数据,您可以将每天/每周的所有事件相加。它通过查看index(z) %/% 24
(或168)进行分组,这是观察时间的整数部分除以24(即发生的那一天)。
然后acf
函数计算自相关(lag
在矢量的索引上,而不是准时)。
我对统计数据并不是很了解,有一点我注意到,如果你这样做:
weekly.acf <- acf(z.daily,lag.max=7)[7]
您从z.weekly
计算自相关时会得到不同的答案,因为它与每日数据进行自相关,滞后为7而不是每周数据滞后1 - 所以我不确定我所做的是不是你想要的。