計算自我相關
自我相關(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_t0 與 x_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_t0與x_t1,長度皆為n-1,讓每一列對應到(x[t], x[t-1])配對。 - 使用已寫好的程式碼,確認
x_t0與x_t1確實形成(x[t], x[t-1])配對。 - 使用
plot()檢視x_t0與x_t1的散佈圖。 - 使用
cor()檢視x_t0與x_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