python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列
1. 平穩(wěn)簡(jiǎn)介
“平穩(wěn)”是處理時(shí)間序列數(shù)據(jù)時(shí)遇到的最重要的概念之一:平穩(wěn)序列是指其特性-均值、方差和協(xié)方差不隨時(shí)間而變化的序列。
讓我們用一個(gè)直觀的例子來理解這一點(diǎn)。考慮以下三個(gè)圖形:
在第一幅圖中,我們可以清楚地看到,均值隨時(shí)間而變化(增加),呈現(xiàn)上升的趨勢(shì)。因此,這是一個(gè)非平穩(wěn)序列。平穩(wěn)序列不應(yīng)該呈現(xiàn)出隨時(shí)間變化的趨勢(shì)。
第二幅圖顯然看不到序列的趨勢(shì),但序列的變化是一個(gè)時(shí)間的函數(shù)。正如前面提到的,平穩(wěn)序列的方差必須是一個(gè)常數(shù)。
再來看第三幅圖,隨著時(shí)間的增加,序列傳播后變得更近,這意味著協(xié)方差是時(shí)間的函數(shù)。
上述三個(gè)例子均是非平穩(wěn)時(shí)間序列?,F(xiàn)在來看第四個(gè)圖:
在這張圖中,均值、方差和協(xié)方差都是常數(shù),這就是平穩(wěn)時(shí)間序列。
再想一想,上面的哪一幅圖預(yù)測(cè)未來會(huì)更容易呢?第四個(gè)圖,對(duì)吧?大多數(shù)統(tǒng)計(jì)模型都要求序列是平穩(wěn)的,這樣才能進(jìn)行有效和精確的預(yù)測(cè)。
因此,總的來說,平穩(wěn)時(shí)間序列是一個(gè)不依賴時(shí)間變化 (即均值、方差和協(xié)方差不隨時(shí)間變化)的時(shí)間序列。在下一節(jié)中,我們將介紹各種檢測(cè)給定序列是否平穩(wěn)的方法。
2. 加載數(shù)據(jù)
在本節(jié)和后續(xù)幾節(jié)中,將介紹檢測(cè)時(shí)間序列數(shù)據(jù)的平穩(wěn)性的方法,以及如何處理非平穩(wěn)序列。同時(shí),本文還提供了相應(yīng)的Python代碼。大家可以到:AirPassengers下載文中使用的數(shù)據(jù)集。
在繼續(xù)分析數(shù)據(jù)集之前,首先加載和預(yù)處理數(shù)據(jù)。
好了,看來可以繼續(xù)了!
3. 檢驗(yàn)平穩(wěn)的方法
下一步是確定給定的序列是否是平穩(wěn)的,并對(duì)它做相應(yīng)的處理。本節(jié)將介紹一些常見的方法,利用這些方法來檢測(cè)序列是否平穩(wěn)。
目視檢驗(yàn)
看一下我們?cè)谏弦还?jié)中使用的圖形,僅需通過目測(cè)圖形,便能夠識(shí)別出序列的均值和方差是否隨時(shí)間變化。同樣,通過繪制數(shù)據(jù)圖形,便能確定該序列的屬性是否隨時(shí)間而變化。
顯然,通過作圖,可以看到序列的趨勢(shì)(變化的均值),然而,這種目視檢測(cè)方法得到的結(jié)果可能不準(zhǔn)確。最好是用一些統(tǒng)計(jì)檢驗(yàn)方法來驗(yàn)證觀測(cè)結(jié)果。
統(tǒng)計(jì)檢驗(yàn)
可以利用統(tǒng)計(jì)檢驗(yàn)來代替目視檢驗(yàn):比如單位根平穩(wěn)檢驗(yàn)。單位根表名給定序列的統(tǒng)計(jì)特性(均值,方差和協(xié)方差)不是時(shí)間的常數(shù),這是平穩(wěn)時(shí)間序列的先決條件。下面是它的數(shù)學(xué)解釋:
假設(shè)我們有一個(gè)時(shí)間序列:
其中yt是t時(shí)刻的數(shù)據(jù)值,ε t 是誤差項(xiàng)。需要利用yt-1的值來計(jì)算yt,即:
如果利用所有的觀察值,yt 的值將是:
假設(shè)在上述方程中a的值為1(單位),則預(yù)測(cè)值將等于yt-n 和從t-n到t的所有誤差之和,這意味著方差將隨著時(shí)間的推移而增大,這就是時(shí)間序列中的單位根。眾所周知,平穩(wěn)時(shí)間序列的方差不能是時(shí)間的函數(shù)。單元根檢驗(yàn)通過檢查a=1的值來檢查序列中是否存在單位根。以下是兩個(gè)最常用的單位根平穩(wěn)檢測(cè)方法:
ADF(增補(bǔ)迪基-福勒)檢驗(yàn)
The Dickey Fuller test is one of the most popular statistical tests. It can be used to determine the presence of unit root in the series, and hence help us understand if the series is stationary or not. The null and alternate hypothesis of this test are:
迪基-福勒(Dickey Fuller)檢驗(yàn)是最流行的統(tǒng)計(jì)檢驗(yàn)方法之一,可以用它來確定序列中單位根的存在,從而幫助判斷序列是否是平穩(wěn)。這一檢驗(yàn)的原假設(shè)與備擇假設(shè)如下:
原假設(shè):序列有一個(gè)單位根(a=1的值)
備擇假設(shè):該序列沒有單位根。
如果不能拒絕原假設(shè),則該序列是非平穩(wěn)的,這意味著序列可以是線性的,也可以是差分平穩(wěn)的(將在下一節(jié)中更多地了解差分平穩(wěn))。
Python代碼:
ADF檢驗(yàn)結(jié)果:ADF檢驗(yàn)的統(tǒng)計(jì)量為1%,p值為5%,臨界值為10%,置信區(qū)間為10%。我們對(duì)本序列的檢驗(yàn)結(jié)果如下:
平穩(wěn)性檢驗(yàn):如果檢驗(yàn)統(tǒng)計(jì)量小于臨界值,我們可以拒絕原假設(shè)(也就是序列是平穩(wěn)的)。當(dāng)檢驗(yàn)統(tǒng)計(jì)量大于臨界值時(shí),不能拒絕原假設(shè)(這意味著序列不是平穩(wěn)的)。
在上面的例子中,檢驗(yàn)統(tǒng)計(jì)量>臨界值,這意味著序列不是平穩(wěn)的。這證實(shí)了我們最初在目視檢測(cè)中觀察的結(jié)果。
KPSS(科瓦特科夫斯·基菲利普·斯施密特·辛)檢驗(yàn)
KPSS檢驗(yàn)是另一種用于檢查時(shí)間序列的平穩(wěn)性 (與迪基-福勒檢驗(yàn)相比稍遜一籌) 的統(tǒng)計(jì)檢驗(yàn)方法。KPSS檢驗(yàn)的原假設(shè)與備擇假設(shè)與ADF檢驗(yàn)的原假設(shè)與備擇假設(shè)相反,常造成混淆。
KPSS檢驗(yàn)的作者將原假設(shè)定義為趨勢(shì)平穩(wěn),并將備擇假設(shè)定義為單位根序列。我們將在下一節(jié)詳細(xì)了解趨勢(shì)平穩(wěn)。現(xiàn)在,來看一下KPSS檢驗(yàn)的實(shí)現(xiàn),并查看KPSS檢驗(yàn)的結(jié)果。
原假設(shè):序列是趨勢(shì)平穩(wěn)的。
備擇假設(shè):序列有一個(gè)單位根(序列是非平穩(wěn)的)。
Python代碼:
KPSS檢驗(yàn)結(jié)果:KPSS檢驗(yàn)-檢驗(yàn)統(tǒng)計(jì)量、p-值和臨界值和置信區(qū)間分別為1%、2.5%、5%和10%。對(duì)于航空乘客數(shù)據(jù)集的檢驗(yàn)結(jié)果如下:
平穩(wěn)性檢驗(yàn):如果檢驗(yàn)統(tǒng)計(jì)量大于臨界值,則拒絕原假設(shè)(序列不是平穩(wěn)的)。如果檢驗(yàn)統(tǒng)計(jì)量小于臨界值,則不能拒絕原假設(shè)(序列是平穩(wěn)的)。對(duì)于航空乘客數(shù)據(jù)集來說,在所有置信區(qū)間,檢驗(yàn)統(tǒng)計(jì)量的值都大于臨界值,因此可以說該序列是不平穩(wěn)的。
在為時(shí)間序列數(shù)據(jù)集準(zhǔn)備模型之前,通常會(huì)同時(shí)進(jìn)行兩種檢驗(yàn)。有一次,這兩種檢驗(yàn)顯示出相互矛盾的結(jié)果:其中一個(gè)檢驗(yàn)結(jié)果表明該序列是平穩(wěn)的,而另一個(gè)則表明該序列是非平穩(wěn)的!我困惑了好幾個(gè)小時(shí),想弄清楚這是怎么回事。后來才知道,序列的平穩(wěn)性有多種類型。
綜上所述,ADF檢驗(yàn)有線性平穩(wěn)或差分平穩(wěn)的備擇假設(shè),而KPSS檢驗(yàn)則是識(shí)別序列的趨勢(shì)平穩(wěn)。
4. 平穩(wěn)的種類
通過了解不同類型的平穩(wěn),來解釋上述檢驗(yàn)的結(jié)果。
嚴(yán)格平穩(wěn):嚴(yán)格平穩(wěn)序列滿足平穩(wěn)過程的數(shù)學(xué)定義。嚴(yán)格平穩(wěn)序列的均值、方差和協(xié)方差均不是時(shí)間的函數(shù)。我們的目標(biāo)是將一個(gè)非平穩(wěn)序列轉(zhuǎn)化為一個(gè)嚴(yán)格平穩(wěn)序列,然后對(duì)它進(jìn)行預(yù)測(cè)。
趨勢(shì)平穩(wěn):沒有單位根但顯示出趨勢(shì)的序列被稱為趨勢(shì)平穩(wěn)序列。一旦去除趨勢(shì)之后,產(chǎn)生的序列將是嚴(yán)格平穩(wěn)的。在沒有單位根的情況下,KPSS檢測(cè)將該序列歸類為平穩(wěn)。這意味著序列可以是嚴(yán)格平穩(wěn)的,也可以是趨勢(shì)平穩(wěn)的。
差分平穩(wěn):通過差分可以使時(shí)間序列成為嚴(yán)格平穩(wěn)的時(shí)間序列。ADF檢驗(yàn)也稱為差分平穩(wěn)性檢驗(yàn)。
應(yīng)用兩種檢驗(yàn)總會(huì)更優(yōu)些,通過兩種檢驗(yàn)之后,可以確定這個(gè)序列是否是平穩(wěn)的。下面,來看一下應(yīng)用兩種平穩(wěn)檢驗(yàn)后的可能結(jié)果:
結(jié)果1:兩種檢驗(yàn)均得出結(jié)論:序列是非平穩(wěn)的->序列是非平穩(wěn)的
結(jié)果2:兩種檢驗(yàn)均得出結(jié)論:序列是平穩(wěn)的->序列是平穩(wěn)的
結(jié)果3:KPSS =平穩(wěn);ADF =非平穩(wěn)->趨勢(shì)平穩(wěn),去除趨勢(shì)后序列嚴(yán)格平穩(wěn)
結(jié)果4:KPSS =非平穩(wěn);ADF =平穩(wěn)->差分平穩(wěn),利用差分可使序列平穩(wěn)。5. 時(shí)間序列的平穩(wěn)化
在熟悉了平穩(wěn)性的概念及其不同的類型之后,接下來可以對(duì)序列進(jìn)行平穩(wěn)化操作。請(qǐng)記住,為了建立時(shí)間序列預(yù)測(cè)模型,必須首先將任何非平穩(wěn)序列轉(zhuǎn)換為平穩(wěn)序列。
差分化
在該方法中,計(jì)算序列中連續(xù)項(xiàng)的差值。執(zhí)行差分操作通常是為了消除均值的變化。從數(shù)學(xué)角度,差分可以寫成:
yt‘ = yt – y(t-1)
其中yt 是t時(shí)刻的數(shù)值。
對(duì)序列差分化后,繪制出結(jié)果:
季節(jié)性差分
在季節(jié)性差分中,不計(jì)算連續(xù)值之間的差異,而是計(jì)算觀察值與同一季節(jié)的先前觀察值之間的差異。例如,星期一的觀察值將與上星期一的觀察值相減。從數(shù)學(xué)角度,它可以寫成:
yt‘ = yt – y(t-n)
變換
變換用于對(duì)方差為非常數(shù)的序列進(jìn)行平穩(wěn)化。常用的變換方法包括冪變換、平方根變換和對(duì)數(shù)變換。對(duì)飛機(jī)乘客數(shù)據(jù)集進(jìn)行快速對(duì)數(shù)轉(zhuǎn)換和差分:
可以看出,這個(gè)圖形比先前的圖形有了很大的改善。通過對(duì)這個(gè)序列進(jìn)行平方根或冪變換,看看是否得出了更好的結(jié)果。歡迎在下面的評(píng)論里分享你的發(fā)現(xiàn)!
尾注
本文介紹了檢驗(yàn)時(shí)間序列平穩(wěn)性的不同方法。但并不止步于此,下一步是對(duì)得到的序列應(yīng)用一個(gè)預(yù)測(cè)模型??梢詤⒖家韵挛恼聛順?gòu)建這樣的模型:給初學(xué)者的時(shí)間序列預(yù)測(cè)綜合指南(Beginner’s Guide to Time Series Forecast)。
如果對(duì)本文有任何問題或反饋,可以在下面的評(píng)論部分與我聯(lián)系。
還可以在Analytics Vidhya的Android應(yīng)用程序上閱讀這篇文章
總結(jié)
以上是生活随笔為你收集整理的python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【电机控制入门】——电机控制书籍推荐
- 下一篇: 利用python调用PSS/E进行电力系