結合案例,談談如何進行時間序列分析
在數據分析的過程中,我們時常需要利用多種分析方式來進行業務盤點,其中,時間序列分析可以讓我們對以往的數據點進行評判,并輔助關于未來的預測和結果分析。那么,你知道如何進行時間序列分析嗎?本篇文章里,作者便結合實際案例進行了解讀,一起來看。
2021年剛剛結束,小毛的便利店整體銷量還不錯,年末盤點時發現由于某種熱銷飲料庫存大約缺少100箱,導致流失了部分營業額,因此小毛希望通過對歷史年份銷售數據的整理,對2022年進貨量和銷售額進行預測,合理制定2022年度購銷計劃,使2022年營業額邁向更高的臺階。小毛看著滿眼的銷售數據陷入了沉思……
在上面案例中,小毛的問題是通過歷史銷售數據來預測未來銷售數據,在統計學領域,可以使用時間序列分析來解答他的問題。時間序列簡單的說就是各時間點上形成的數值序列,通過觀察歷史數據的變化規律預測未來的值。在這里需要強調一點的是,時間序列分析并不是關于時間的回歸,它主要是研究自身的變化規律的。接下來,筆者就跟你淺談一下時間序列分析。
一、時間序列分析的定義
1. 概念
首先,時間序列定義為在一定時間間隔內按時間順序測量的某個數量。
時間序列分析是指將歷史數據分解為四部分來看——趨勢、周期、時期和不穩定因素,然后綜合這些因素,提出預測。時間序列分為平穩序列和非平穩序列兩大類。平穩序列是不存在趨勢只存在隨機性的序列,非平穩序列則是包含趨勢、季節性和隨機性的序列。
從最廣泛的形式來說,時間序列分析是關于推斷過去一系列數據點發生了什么,并試圖預測未來會發生什么。時間序列分析試圖了解過去并預測未來。
2. 分類
通常,時間序列通常包含以下類型:
- 趨勢:趨勢是時間序列中一致的方向性運動。這些趨勢將是確定性的或隨機的。時間序列在長時間內呈現出來的長期上升或下降的變動。
- 季節性變化:許多時間序列都包含季節性變化。在代表業務銷售或氣候水平的系列中尤其如此。我們經??吹缴唐返募竟澬宰兓?,特別是那些與生長季節或年度溫度變化有關的商品(例如天然氣)。
- 序列依賴性:時間序列(尤其是金融序列)最重要的特征之一就是序列相關性。當時間上相互靠近的時間序列觀測值傾向于相互關聯時,就會發生這種情況。
二、時間序列分析的步驟
時間序列預測的步驟是:
在開始平穩性檢驗步驟之前,我首先想和大家分享的是平穩性檢驗的目的。平穩性檢驗為了確定沒有隨機趨勢或確定趨勢,否則將會產生“偽回歸”問題.偽回歸是說,有時數據的高度相關僅僅是因為二者同時隨時間有向上或向下的變動趨勢, 并沒有真正聯系.這樣數據中的趨勢項,季節項等無法消除, 從而在殘差分析中無法準確進行分析。
1. 平穩性檢驗
1)圖示法
平穩性指的是期望不變,方差恒定,協方差不隨時間改變,協方差只依賴于K這個時間跨度,不依賴于時間點t本身。
給定這些假設前提的目的是便于后續技術上的處理。根據時序圖粗略來判斷序列是否平穩,平穩時序圖的特征為圍繞均值不斷波動,而非平穩時序圖表現為在不同時間段具有不同的均值。圖a為平穩時序圖,圖b為非平穩時序圖。
然而僅依靠圖像判斷時間序列的平穩性,肯定是不精確的,因此需要進行單位根檢驗(DF檢驗和ADF檢驗)進一步判斷。
2)單位根檢驗
① DF檢驗
(原假設 H0:序存在單位根 ,即參數δ=0)
檢驗時間序列的平穩性,一般可通過檢驗帶有截距項的一階自回歸模型:
對上式可通過進行普通最小二乘法的t檢驗完成(t檢驗的原假設:H0:βj=0。即若P值<0.05,則拒絕原假設,證明δ≠0,序列平穩。
② ADF檢驗
因DF檢驗假設ut為白噪聲,序列為一階自回歸的模型,但實際上隨機干擾項并非為白噪聲序列,且序列并非為一階自回歸生成,因此用普通最小二乘法進行估計的t統計量會受到無關參數的影響,導致DF檢驗無效。如果時間序列包含有明顯的隨時間變化的某種趨勢,DF檢驗必須保證能夠剔除這種趨勢,否則時間趨勢的成分會進入ut,導致ut非白噪聲序列,進而偏離了最初的假設。因此形成了ADF檢驗。ADF檢驗是由下面3個模型完成:
其中t為時間變量,代表序列隨時間變化的趨勢。
模型的檢驗原理同DF檢驗,即t檢驗;檢驗順序為(3)、(2)、(1);三個模型全部檢驗通過,才能證明該序列是平穩時間序列。
2. 時間序列常見的三種模型
序列通過平穩性檢驗后,就可以建立時間序列模型了,當序列不平穩時,對序列進行差分或者取對數處理。對時序數據進行差分處理,例如在R語言的“diff”函數可確定(P值<0.05,則拒絕原假設,序列不存在單位根,經1階差分后,序列平穩)。
對一個時間序列預處理后檢驗出該序列為平穩時間序列說明該模型有提取信息的價值,就要進行下一步的模型建立來擬合該模型然后做出預測。下面介紹擬合時間序列的三個重要模型。
1)AR(p)模型
自回歸模型(Autoregressive model,簡稱AR模型),用同一變數例如x的之前各期,亦即x1至xt-1來預測本期xt的表現,并假設它們為一次線性關系。因為這是從回歸分析中的線性回歸發展而來,只是不用x預測y,而是用x預測 x(自己);所以叫做自回歸。
AR(p)模型簡記形式如下:
其中p為自回歸階數。Φ0=0稱為中心化AR(p)模型。p階自回歸模型的自相關系數拖尾,偏自相關系數p階截尾。
2)MA(q)模型
MA模型(moving average model)移動平均模型,簡記形式如下:
其中q為移動平均的階數。q階移動平均模型自相關系數q階截尾,偏自相關系數拖尾。
3)ARMA(p,q)模型
自回歸滑動平均模型(Autoregressive moving average model,簡稱:ARMA模型)。是研究時間序列的重要方法,由自回歸模型(簡稱AR模型)與移動平均模型(簡稱MA模型)為基礎“混合”構成。它比AR模型法與MA模型法估計更精確,但其參數估算比較繁瑣。ARMA(p,q)模型簡記形式如下:
當q=0時,ARMA(p,q)模型就退化成了AR(p)模型;
當p=0時,ARMA(p,q)模型就退化成了MA(q)模型;
ARMA(p,q)模型具有自相關系數不截尾,偏自相關系數也不截尾的性質。
3. 模型的選擇與定階
了解了時間序列的三種常見模型后,應該如何選擇模型并確定模型的階數呢?通常使用ACF與PACF圖判定法。
說到時間序列分析,一定離不開自相關函數(auto-correlation function,ACF)和偏自相關函數(Partial auto-correlation function,PACF),ACF可以提供具有滯后值的任何序列的自相關值。
簡單來說,它描述了該序列的當前值與其過去的值之間的相關程度。時間序列可以包含趨勢,季節性,周期性和殘差等成分。ACF在尋找相關性時會考慮所有這些成分。直觀上來說,ACF 描述了一個觀測值和另一個觀測值之間的自相關,包括直接和間接的相關性信息。
PACF可以提供殘差(在去除了之前的滯后已經解釋的影響之后仍然存在)與下一個滯后值的相關性。因此,如果殘差中有任何可以由下一個滯后建模的隱藏信息,我們可能會獲得良好的相關性,并且在建模時我們會將下一個滯后作為特征。
討論完兩個重要函數后,就成功了一半,接下來就是選擇模型和確定階數了,由此引入兩個詞:截尾和拖尾。截尾是指時間序列的自相關函數(ACF)或偏自相關函數(PACF)在大于某個常數k后快速趨于0為k階截尾;拖尾是ACF或PACF始終有非零取值,不會在k大于某個常數后就恒等于零(或在0附近隨機波動)。趨于0在實際分析過程中通常被處理為在2倍標準差之內。
以上面兩張圖為例,ACF拖尾,PACF一階截尾,因此可以選擇AR(1)模型進行擬合,說到模型擬合,各位統計學前輩早已為我們總結好以下規律:
4. 模型的確定與檢驗
通過以上內容,大家對時間序列的三種模型有了初步了解。那么應該如何確定最優模型呢?通常有以下幾點:
- 同一種模型,在盡可能描述數據信息的前提下選擇低階模型,階數越高,模型會越復雜。
- 高階AR(p)、MA(q)模型與較低階ARMA(p,q)模型之間選擇較低階ARMA(p,q)模型。
- 合適模型的殘差應滿足均值為零的正態分布,而且任何滯后階數的殘差相關系數都為零。
接下來分享的是殘差檢驗的方法:
方法一:通過繪制正態分布的QQ來檢驗:圖像近似為過原點的一條直線,則殘差服從正態分布且均值為零。該步驟可通過R語言的“qqnormt”函數實現。如下圖:
方法二:通過R語言的“Box.test”函數實現該檢驗,若P>0.05,接受原假設,即任何滯后階數的殘差都不相關,殘差檢驗通過。
三、示例分享
回到開頭的例子,當小毛同學拿到數據后首先應該繪制銷售額隨時間變化的曲線,觀察數據的整體趨勢,如果有季節性趨勢,應該利用差分或者移動平均的方法消除季節因素,接下來在消除增長趨勢,然后利用單位根檢驗來檢驗數據的平穩性,最后利用數據的ACF和PACF函數確定階數和模型。
其實在這一步有一種偷懶的辦法就是利用R語言中的auto.arima”函數可自動篩選出p,q,但還是希望大家能夠了解背后的邏輯。模型確定好之后可以利用R語言中的forecast函數預測未來N期的銷量,至此小毛的預測工作終于可以告一段落了。
本次分享到此結束,歡迎大家批評指正~
專欄作家
一個數據人的自留地,公眾號:一個數據人的自留地。人人都是產品經理專欄作家,《數據產品經理修煉手冊》作者。
本文原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!