2017-02-26 76 views
0

我對ACF計算下面的公式,我我想知道我使用R中的功能ACF,但手動計算它下面的數據,然後繪製結果使用GGPLOT2計算ACF手動

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) 

enter image description here

其中k是時滯,μ是時間序列的均值(,Yt = 1,2,... .N)。考慮到時間滯後100小時,ACF在此計算時間序列。在我的最終輸出中,我想要有一個具有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

爲什麼你要手工做呢?你到目前爲止嘗試了什麼? – Sotos

+0

對功能進行一些修改,然後比較結果。用不同的步驟設置時間延遲Yt + k。 – kelamahim

+0

作爲一個開始,你可以看看'dplyr'軟件包提供的'滯後'功能。您將(可能)必須循環說1:100的滯後尺寸 – Sotos

回答

1

,如果你想你可以試試這個...

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 
} 
+0

謝謝你的努力,但它是不明確如何儲存超過k – kelamahim

+0

以上的響應,根據您的評論更新響應。 (但是一旦你完成了測試,那麼看到你使用上面評論中引用的現有功能將是一種壓倒性的優先選擇。 – greengrass62

+0

欣賞你的努力 – kelamahim