2011-08-05 57 views
4

我有數據的時間序列表示如下(不行和列)的註釋:如何繪製時間序列的互相關矩陣?

 L1 L2 L3 L4 
t=1 0 1 1 0 
t=2 0 1 1 1 
t=3 1 0 1 1 
t=4 0 1 1 0 

我讀成R此爲:

timeseries = read.table("./test", header=F) 

我爲L1使用繪圖時間序列

ts.plot(timeseries$V1) 

並繪製出的互相關函數爲:

ccf(timeseries$V1, timeseries$V2) 

現在,有人可以告訴我如何繪製一個互相關矩陣,顯示L1-L4的這個函數的輸出嗎?基本上,這樣的事情(在我的情況下,4×4地塊的矩陣):

enter image description here

+0

這是否應該發送交叉驗證? – wespiserA

+0

嗯..請問爲什麼?這是一個與'R'繪圖有關的問題,它有自己的語言。 – Legend

+0

你只是想找一種方式來繪製每一對列的每個'ccf'在一個圖上? – joran

回答

5

似乎有這樣做的另一種方式小事!

timeseries = read.table("./test", header=F) 
acf(timeseries) 

給了我一個相關圖的矩陣。當然,如果需要協方差,還有其他選項可以傳遞給acf

2

這樣做的一個微不足道的方式就是您的打印設備上創建地塊的矩陣,並把各ccf情節一個接一個:

M <- matrix(sample(0:1,40,replace = TRUE),nrow = 10) 

par(mfrow= c(4,4)) 
for (i in 1:4){ 
    for (j in 1:4){ 
     ccf(M[,i],M[,j]) 
    } 
} 

但是,如果你等了一下週圍,人誰更密切地知道時間序列包可能與很好地做到這一點多一點的函數來轉。

+0

+1太棒了!謝謝。我可能會等待半天。如果沒有其他事情發生,我會接受。謝謝。 – Legend

2

試試這個地方M是在joran的帖子:

pnl <- function(x, y = x) { par(new = TRUE); ccf(x, y) } 
pairs(as.data.frame(M), upper.panel = pnl, diag.panel = pnl, cex.labels = 1)