Могу ли я выполнить автокорреляционный анализ / анализ отставания для объекта зоопарка в R с нерегулярными временными шагами?Если так, то как? - PullRequest
1 голос
/ 23 января 2012

Могу ли я выполнить автокорреляционный анализ / анализ запаздывания на объекте зоопарка в R с нерегулярными временными шагами? Если да, то как?

Единственный другой пост, который я смог найти здесь, касался обычных временных рядов. У меня есть последовательность наблюдений, сделанных с нерегулярными временными шагами. Например, (t,y) = (0,2668), (36.62,2723), (42,2723),..., где

  • t - время в часах, а
  • y - (категорическое *) наблюдение. ... * отредактировано из оригинального сообщения

Я хотел бы искать корреляции лагов ежедневно (лаг = 24) и еженедельно (лаг = 168), чтобы увидеть, повторяются ли определенные категории наблюдений в / около этих интервалов лагов. Есть ли способ сделать это в R? Я создал объект зоопарка для своих данных, но не смог найти никакой документации о том, как это сделать.

1 Ответ

2 голосов
/ 23 января 2012

Вы можете использовать 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 преобразует z в ежедневные или еженедельные данные, где вы суммируете все вхождения за каждый день / неделю.Он выполняет группировку, просматривая index(z) %/% 24 (или 168), который является целой частью часа наблюдения, деленной на 24 (т. Е. Днем, когда это происходит).

Затем функция acf вычисляет автокорреляцию(с lag по индексам вектора, а не по времени).

Я не особо разбираюсь в статистике, и я заметил одну вещь: если вы сделаете:

weekly.acf <- acf(z.daily,lag.max=7)[7]

вы получаете ответ, отличный от того, когда вычисляете автокорреляцию из z.weekly, потому что он выполняет автокорреляцию с данными ежедневно с задержкой 7, в отличие от еженедельных данных с задержкой 1 - такЯ не уверен, что то, что я делаю, действительно то, что вы хотите.

...