假設你有存儲在數據幀d
(每列是一個系列的),我們可以使用以下方法來獲取ACF最多落後36多個時間序列(nrow(d) >> 36
有道理!):
## for data frame `d`
acfs <- sapply(d, function (u) c(acf(u, lag.max = 36, plot = FALSE)$acf)[-1])
- R基函數
acf
就足夠了;設置爲lag.max = 36
和plot = FALSE
;
acf
返回一個列表,我們想要$acf
字段。請注意,這是一個3D箭頭,因此我們想要使用c()
將其平坦化爲矢量;
- 滯後0的ACF是1並且不重要,所以我們將其降低
[-1]
;
sapply
會返回一個矩陣,每列給每個系列的ACF。
如果你已經存儲在一個矩陣的時間序列(用普通的矩陣或一個以「MTS」類),我們使用apply
而不是sapply
:
## for matrix `d`
acfs <- apply(d, 2L, function (u) c(acf(u, lag.max = 36, plot = FALSE)$acf)[-1])
要生產的箱線圖,簡單地用途:
boxplot(acfs)
爲什麼$acf
是3D陣列。因爲acf
函數可以直接處理多個時間序列。嘗試:
## whether `d` is data frame or matrix, it is converted to "mts" inside `acf`
oo <- acf(d, lag.max = 36, plot = FALSE)$acf
問題是,在這種情況下,還會計算互相關(CCF)。
在x軸我想要1-36,不ts1
和ts2
。我需要按照時間序列的每個滯後分佈。如果你能解決你的答案非常好。
Ei?我誤解了你的問題嗎?那麼,在這種情況下,你的acfs
只是boxplot
轉置:
boxplot(t(acfs))
在X軸上,我想1-36,不TS1和TS2。所有列的每個滯後分佈。如果你能確定你的回答非常好。 – user3139545