[英]Autocorrelation irregular time series R
我必须计算不规则(即非等间隔)时间序列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
参数决定了 2 个系列之间的最大时移(lag),而不是要使用的点数(即,您将 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
正如@Ben Bolker建议在天文科学中找到此类数据一样,最近发表了一篇论文: https ://www.aanda.org/articles/aa/pdf/2019/07/aa35560-19.pdf。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.