開始使用免費開始

計算自我相關

自我相關(autocorrelation)或延遲相關用來評估時間序列是否依賴於其過去。對於長度為 n 的時間序列 x,我們會考慮彼此相隔 1 個時間單位的 n-1 組觀測配對。第一組為 (x[2],x[1]),下一組為 (x[3],x[2])。每一組皆為 (x[t],x[t-1]) 的形式,其中 t 是觀測索引,在此情況下我們將 t 從 2 變動到 n。x 的 lag-1 自我相關可以用這些 (x[t], x[t-1]) 配對的樣本相關係數來估計。

一般來說,我們可以手動建立這些觀測配對。先建立兩個向量 x_t0x_t1,長度皆為 n-1,讓每一列對應到一組 (x[t], x[t-1]) 配對。接著使用 cor() 函式估計 lag-1 自我相關。

所幸,acf() 指令提供了捷徑。對序列 x 使用 acf(..., lag.max = 1, plot = FALSE) 會自動計算 lag-1 自我相關。

最後要注意,兩種估計會略有差異,因為它們在計算樣本共變異數時使用的尺度略有不同:1/(n-1)1/n。雖然後者會產生有偏估計,但在時間序列分析中較常採用,而最終的自我相關估計只會相差一個 (n-1)/n 的倍數。

在這個練習中,你會同時練習手動與自動計算 lag-1 自我相關。時間序列 x 及其長度 n(150)已經載入。右側的圖顯示了該序列。

本練習屬於課程

R 的時間序列分析

檢視課程

練習說明

  • 建立兩個向量 x_t0x_t1,長度皆為 n-1,讓每一列對應到 (x[t], x[t-1]) 配對。
  • 使用已寫好的程式碼,確認 x_t0x_t1 確實形成 (x[t], x[t-1]) 配對。
  • 使用 plot() 檢視 x_t0x_t1 的散佈圖。
  • 使用 cor() 檢視 x_t0x_t1 的相關係數。
  • x 使用 acf() 自動計算 lag-1 自我相關。將 lag.max 參數設為 1(只產生 1 個延遲期),並將 plot 參數設為 FALSE
  • 使用已寫好的程式碼,確認差異倍數為 (n-1)/n

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Define x_t0 as x[-1]
x_t0 <- 

# Define x_t1 as x[-n]
x_t1 <- 

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
  
# Plot x_t0 and x_t1
plot(___, ___)

# View the correlation between x_t0 and x_t1
cor(___, ___)

# Use acf with x
acf(___, lag.max = ___, plot = ___)

# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n
編輯並執行程式碼