時間序列分析中的自相關
什么是自相關以及為什么它在時間序列分析中是有用的。
在時間序列分析中,我們經常通過對過去的理解來預測未來。為了使這個過程成功,我們必須徹底了解我們的時間序列,找到這個時間序列中包含的信息。
自相關就是其中一種分析的方法,他可以檢測時間系列中的某些特征,為我們的數據選擇最優的預測模型。
在這篇簡短的文章中,我想回顧一下:什么是自相關,為什么它是有用的,并介紹如何將它應用到Python中的一個簡單數據集。
什么是自相關?
自相關就是數據與自身的相關性。我們不是測量兩個隨機變量之間的相關性,而是測量一個隨機變量與自身變量之間的相關性。因此它被稱為自相關。
相關性是指兩個變量之間的相關性有多強。如果值為1,則變量完全正相關,-1則完全負相關,0則不相關。
對于時間序列,自相關是該時間序列在兩個不同時間點上的相關性(也稱為滯后)。也就是說我們是在用時間序列自身的某個滯后版本來預測它。
數學上講自相關的計算方法為:
其中N是時間序列y的長度,k是時間序列的特定的滯后。當計算r_1時,我們計算y_t和y_{t-1}之間的相關性。
y_t和y_t之間的自相關性是1,因為它們是相同的。
為什么它有用?
使用自相關性來度量時間序列與其自身的滯后版本的相關性。這個計算讓我們對系列的特征有了一些有趣的了解:
季節性:假設我們發現某些滯后的相關性通常高于其他數值。這意味著我們的數據中有一些季節性成分。例如,如果有每日數據,并且發現每個 7 滯后項的數值都高于其他滯后項,那么我們可能有一些每周的季節性。
趨勢:如果最近滯后的相關性較高并且隨著滯后的增加而緩慢下降,那么我們的數據中存在一些趨勢。因此,我們需要進行一些差分以使時間序列平穩。
讓我們用一個Python示例,來看看他到底是如何工作的
Python示例
我們將使用經典的航空客運量數據集:
https://www.kaggle.com/datasets/ashfakyeafi/air-passenger-data-for-time-series-analysis
可視化可以看到有明顯的上升趨勢和年度季節性(按月索引的數據點)。
這里可以使用statsmodels包中的plot_acf函數來繪制時間序列在不同延遲下的自相關圖,這種類型的圖被稱為相關圖:
這里我們需要注意到以下幾點:
- 在每12步的滯后中有一個明顯的周期性模式。這是由于我們的數據是按月編制的,因此我們的數據具有每年的季節性。
- 隨著滯后量的增加,相關強度總體上呈緩慢下降趨勢。這在我們的數據中指出了一個趨勢,在建模時需要對其進行區分以使其穩定。
- 藍色區域表示哪些滯后在統計上顯著。因此在對該數據建立預測模型時,下個月的預測可能只考慮前一個值的~15個,因為它們具有統計學意義。
在值0處的滯后與1的完全相關,因為我們將時間序列與它自身的副本相關聯。
總結
在這篇文章中,我們描述了什么是自相關,以及我們如何使用它來檢測時間序列中的季節性和趨勢。自相關還有其他用途。例如,我們可以使用預測模型殘差的自相關圖來確定殘差是否確實獨立。如果殘差的自相關不是幾乎為零,那么擬合模型可能沒有考慮到所有的信息,是可以改進的。