我有以下计算ACF的等式,我不想在r中使用函数ACF,而是手动计算以下数据,然后使用ggplot2绘制结果
data<-rweibull(168,2,3)
time<-seq(from=as.POSIXct("2014-01-01 00:00"),to=as.POSIXct("2014-01-07 23:00"),by="hour")
df<-data.frame(time,data)
其中k是时滞,μ是时间序列的平均值(,Yt = 1,2,... .N)。此处计算ACF的时间序列,考虑到100小时的时滞。在我的最终输出中,我想要一个包含100个值的向量。在等式中,我不知道如何在R中设置方程的Yt + k部分100个时间滞后。任何帮助,将不胜感激。
现在我有了代码,但我不知道如何设置代码以在一个向量中获得100个滞后结果。
x <- data - mean(data)
sum(x[1:99] * x[2:100]) / sum(x^2)# TIME LAG OF 100
答案 0 :(得分:2)
如果你想要......你可以试试这个......
data<-rweibull(168,2,3)
time<-seq(from=as.POSIXct("2014-01-01 00:00"),to=as.POSIXct("2014-01-07 23:00"),by="hour")
df<-data.frame(time,data)
x <- data - mean(data)
maxLag<-100
acfResults<- data.frame(k=c(1:maxLag), acf=NA, stringsAsFactors = FALSE)
for (k in 1: maxLag) {
N <-nrow(df)-k
acf<- sum(x[1:N]*x[(1+k):(N+k)]) / sum(x^2)
acfResults[k,1] <-k
acfResults[k,2] <-acf
}