什么是自相關(guān)以及為什么它在時(shí)間序列分析中是有用的。
在時(shí)間序列分析中,我們經(jīng)常通過對(duì)過去的理解來預(yù)測(cè)未來。為了使這個(gè)過程成功,我們必須徹底了解我們的時(shí)間序列,找到這個(gè)時(shí)間序列中包含的信息。
自相關(guān)就是其中一種分析的方法,他可以檢測(cè)時(shí)間系列中的某些特征,為我們的數(shù)據(jù)選擇最優(yōu)的預(yù)測(cè)模型。
在這篇簡(jiǎn)短的文章中,我想回顧一下:什么是自相關(guān),為什么它是有用的,并介紹如何將它應(yīng)用到Python中的一個(gè)簡(jiǎn)單數(shù)據(jù)集。
自相關(guān)就是數(shù)據(jù)與自身的相關(guān)性。我們不是測(cè)量兩個(gè)隨機(jī)變量之間的相關(guān)性,而是測(cè)量一個(gè)隨機(jī)變量與自身變量之間的相關(guān)性。因此它被稱為自相關(guān)。
相關(guān)性是指兩個(gè)變量之間的相關(guān)性有多強(qiáng)。如果值為1,則變量完全正相關(guān),-1則完全負(fù)相關(guān),0則不相關(guān)。
對(duì)于時(shí)間序列,自相關(guān)是該時(shí)間序列在兩個(gè)不同時(shí)間點(diǎn)上的相關(guān)性(也稱為滯后)。也就是說我們是在用時(shí)間序列自身的某個(gè)滯后版本來預(yù)測(cè)它。
數(shù)學(xué)上講自相關(guān)的計(jì)算方法為:
其中N是時(shí)間序列y的長度,k是時(shí)間序列的特定的滯后。當(dāng)計(jì)算r_1時(shí),我們計(jì)算y_t和y_{t-1}之間的相關(guān)性。
y_t和y_t之間的自相關(guān)性是1,因?yàn)樗鼈兪窍嗤摹?/p>
使用自相關(guān)性來度量時(shí)間序列與其自身的滯后版本的相關(guān)性。這個(gè)計(jì)算讓我們對(duì)系列的特征有了一些有趣的了解:
季節(jié)性:假設(shè)我們發(fā)現(xiàn)某些滯后的相關(guān)性通常高于其他數(shù)值。 這意味著我們的數(shù)據(jù)中有一些季節(jié)性成分。 例如,如果有每日數(shù)據(jù),并且發(fā)現(xiàn)每個(gè) 7 滯后項(xiàng)的數(shù)值都高于其他滯后項(xiàng),那么我們可能有一些每周的季節(jié)性。
趨勢(shì):如果最近滯后的相關(guān)性較高并且隨著滯后的增加而緩慢下降,那么我們的數(shù)據(jù)中存在一些趨勢(shì)。 因此,我們需要進(jìn)行一些差分以使時(shí)間序列平穩(wěn)。
讓我們用一個(gè)Python示例,來看看他到底是如何工作的
我們將使用經(jīng)典的航空客運(yùn)量數(shù)據(jù)集:
https://www.kaggle.com/datasets/ashfakyeafi/air-passenger-data-for-time-series-analysis
# Import packagesimport plotly.express as pximport pandas as pd# Read in the datadata = pd.read_csv('AirPassengers.csv')# Plot the datafig = px.line(data, x='Month', y='#Passengers',labels=({'#Passengers': 'Passengers', 'Month': 'Date'}))fig.update_layout(template='simple_white', font=dict(size=18),title_text='Airline Passengers', width=650,title_x=0.5, height=400)
可視化可以看到有明顯的上升趨勢(shì)和年度季節(jié)性(按月索引的數(shù)據(jù)點(diǎn))。
這里可以使用statsmodels包中的plot_acf函數(shù)來繪制時(shí)間序列在不同延遲下的自相關(guān)圖,這種類型的圖被稱為相關(guān)圖:
# Import packagesfrom statsmodels.graphics.tsaplots import plot_acfimport matplotlib.pyplot as plt# Plot autocorrelationplt.rc('figure', figsize=(11,5))plot_acf(data['#Passengers'], lags=48)plt.ylim(0,1)plt.xlabel('Lags', fontsize=18)plt.ylabel('Correlation', fontsize=18)plt.xticks(fontsize=18)plt.yticks(fontsize=18)plt.title('Autocorrelation Plot', fontsize=20)plt.tight_layout()plt.show()
這里我們需要注意到以下幾點(diǎn):
在值0處的滯后與1的完全相關(guān),因?yàn)槲覀儗r(shí)間序列與它自身的副本相關(guān)聯(lián)。
在這篇文章中,我們描述了什么是自相關(guān),以及我們?nèi)绾问褂盟鼇頇z測(cè)時(shí)間序列中的季節(jié)性和趨勢(shì)。自相關(guān)還有其他用途。例如,我們可以使用預(yù)測(cè)模型殘差的自相關(guān)圖來確定殘差是否確實(shí)獨(dú)立。如果殘差的自相關(guān)不是幾乎為零,那么擬合模型可能沒有考慮到所有的信息,是可以改進(jìn)的。
聯(lián)系客服