【发布时间】:2016-06-12 19:31:53
【问题描述】:
我有一个 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)
【问题讨论】:
-
acf为您提供延迟天数的 acf。每天有 86,400 秒,您的日期列采用 POSIXct 格式,即自 1970 年 1 月 1 日以来的秒数。 -
这似乎是合理的。将延迟除以一天中的秒数得出大致整数。另请参阅下面对 Roland 答案的评论。
-
虽然在第二个,这似乎仍然很奇怪。被 86400 整除将得出滞后以天为单位的结论。但数据只显示每个月的第一天。 lag 不需要显示月份吗?
-
是的,我同意。
xts似乎忽略了frequency参数。例如,当我执行test <- xts(test$value, test$date, frequency=30.5*86400)(或frequency的任何其他值)时,我得到相同的acf图。此外,frequency(test)给出相同的结果,无论我在创建testxts 对象时使用什么frequency。 -
此外,当我在
mutate语句中使用as.POSIXct而不是ymd时,我得到一个acf图表,其滞后时间以小时为单位,而不是几天。我对xts不太熟悉,我不确定它为什么会这样或如何改变它。
标签: r time-series xts