我必须计算不规则(即非等距)时间序列的自相关value(time)
time[hr] value
1 3
2 5
3 7
5 9
7 16
12 17
13 19
16 25
19 27
21 30
使用acf
函数可以仅指定滞后(即点数)
acf(df$value,lag.max = 10,type = "correlation",plot = FALSE, na.action = na.pass)
但是就我而言,这并不对应于确定的时间间隔。
我想要的是计算指定时间间隔的自相关函数(例如 3 hr
)。
有什么帮助吗?
谢谢
最佳答案
为了澄清,lag.max
参数确定两个系列之间的最大时间偏移(滞后),而不是要使用的点数(即,您正在比较 x_t 与 x_t-h ; lag.max
是 h) 的最大值。在您的示例中,总共有 10 个数据点,因此如果您假设至少需要 3 个数据点来估计它们的相关性,则最多 lag.max=7
。
听起来也许您有来自连续时间函数的样本,但 ACF 是在离散时间间隔上定义的。因此,要使用 acf()
,您需要首先用 NA
填写未观察到的时间,此时时间滞后将以小时为单位表示(即,你想要什么)。
假设上面的数据位于 data.frame df
中,那么
df2 <- data.frame(time=seq(min(df$time), max(df$time)), value=NA)
df2[df$time,"value"] <- df$value
acf(df2$value, lag.max=10, type="cor", plot=FALSE, na.action=na.pass)
# Autocorrelations of series ‘df2$value’, by lag
#
# 0 1 2 3 4 5 6 7 8 9 10
# 1.000 0.716 0.665 0.415 0.166 0.194 0.046 0.007 0.029 0.008 -0.041
关于r - 自相关不规则时间序列 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26869961/