R /时间序列:自相关函数(acf)的滞后单位是多少?

时间:2016-02-29 16:51:09

标签: r time-series xts

我有一个XTS时间序列对象,它在四年内显示每月第一天的值(代表整个月的总和)。

当我在其上运行stats::acf()函数时,我得到一个滞后(x轴)单位数十万的图。如果我的时间序列中只有48个值,那该怎么办?如果它是一个时间单位,那么哪一个,我该如何改变呢?

示例代码:

library(dplyr)
library(lubridate)
library(xts)

set.seed(100)

test <- data.frame(y = c(rep(2012, 12), rep(2013, 12), rep(2014, 12), rep(2015, 12)),
                   m = rep(seq(1, 12, 1), 4), d = rep(1, 48), value = runif(48, 0, 100))

test <- test %>%
  mutate(date = ymd(paste(y, m, d, sep = "-"))) %>% 
  select(date, value)

test <- xts(test$value, test$date)

acf(test)

enter image description here

1 个答案:

答案 0 :(得分:3)

从源代码中我们看到我们可以计算出这样的滞后:

sampleT <- as.integer(nrow(test))
nser <- as.integer(ncol(test))
lag.max <- floor(10 * (log10(sampleT) - log10(nser)))
x.freq <- frequency(test)
lag <- outer(0:lag.max, 1/x.freq)
#         [,1]
# [1,]       0
# [2,]   86400
# [3,]  172800
# [4,]  259200
# [5,]  345600
# [6,]  432000
# [7,]  518400
# [8,]  604800
# [9,]  691200
#[10,]  777600
#[11,]  864000
#[12,]  950400
#[13,] 1036800
#[14,] 1123200
#[15,] 1209600
#[16,] 1296000
#[17,] 1382400

时间单位是频率单位的倒数。要了解如何计算该值,您需要深入了解frequency.zoo的源代码,这些代码乍一看我很难理解。