[STATA] 時間序列模型 - ARIMA檢驗

2021-03-02 託尼老師之大數據

  ___  ____  ____  ____  ____ (R)
 /__    /   ____/   /   ____/
___/   /   /___/   /   /___/   13.1
  Statistics/Data Analysis           

此次系列文章的主題是通過Stata軟體來分析時間序列的平穩和非平穩關係,以及如何通過Stata軟體來進行不同時間序列模型的預測性分析。

Stata軟體介紹:(https://www.stata.com/)

Stata is the solution for your data science needs. Obtain and manipulate data. Explore. Visualize. Model. Make inferences. Collect your results into reproducible reports.

一、背景介紹

時間序列模型是將一個或一組變量按照時間次序排列,用於解釋變量和相互關係的數學表達式,所得到的離散數字組成的序列集合。時間序列模型,可分為平穩時間序列和非平穩時間序列。平穩時間序列可以用來擬合回歸方程進行未來的預測,而非平穩的時間序列不能直接做回歸,會產生沒有實際意義的偽回歸。(不平穩的時間序列數據可能會帶來t檢驗失敗、自回歸係數估計值有偏向的等問題)

首先,判斷一個時間序列是不是平穩,主要有三個評價指標:

1. 均值是與t無關的函數

2. 方差是與t無關的函數 (即方差齊性)

3. 協方差是與t無關的函數。(協方差用于衡量兩個變量的總體誤差。當兩個變量是相同的情況時,協方差體現為方差。)

(圖片來源:https://blog.csdn.net/qq_40006058/article/details/80191168)

對於單獨的非平穩時間序列,需要通過分來將非平穩時間序列變為平穩時間序列。如果對於兩個非平穩時間序列,它們的某些線性組合是平穩的,那麼這兩個非平穩時間序列則存在協整關係,我們便可以基於協整關係去探索序列之間的長期均衡關係了。

二、統計學模型

驗證時間序列的模型有:

AR - Auto Regression, 自回歸模型。自回歸模型AR(p),p-自回歸階數;AR可以解決當前數據與後期數據之間的關係;

MA - Moving Average,移動平均模型。移動平均模型MA(q),q-移動平均階數;MA則可以解決隨機變動也就是噪聲的問題;

ARMA - Auto Regression and Moving Average,自回歸移動平均模型。自回歸移動平均模型是與自回歸和移動平均模型兩部分組成;(以上三類模型可以直接應用於平穩時間序列模型)

ARIMA - Auto Regression Integreate Moving Average,差分自回歸移動平均模型。同前面的三種模型,ARIMA模型也是基於平穩的時間序列的或者差分化後是穩定的,另外前面的幾種模型都可以看作ARIMA的某種特殊形式。表示為ARIMA(p, d, q)。p為自回歸階數,q為移動平均階數,d為時間成為平穩時所做的差分次數。(前面三種模型,d=0,即平穩時間序列模型不需要做差分)

ARCH - Auto Regressive Conditional Heteroskedasticity, 自回歸條件異方差模型,用來解決傳統計量經濟學對時間序列變量的第二個假設(變異數恆定)所引起的問題;

GARCH - Generalized Auto Regressive Conditional Heteroskedasticity, 廣義自回歸條件異方差模型,GARCH模型是一個專門針對金融數據所量體定做的回歸模型。和普通回歸模型相比,GARCH對誤差的方差進行了進一步的建模,特別適用于波動性的分析和預測,這樣的分析對投資者的決策能起到非常重要的指導作用;

VAR - Vector Auto Regression, 向量自回歸模型, 描述在同一個樣本期間內的n個變量(內生變量)可以作為他們過去值的線性函數;VAR模型的方法是通過將變量作為一個系統來預測,被稱為「多變量時間序列」,即向量自回歸;

受限因變量模型:通俗的講,是由於某種原因無法觀察到被解釋變量的全部值。在實際中,還會經常遇到因變量受到某種限制的情況,這種情況下,取得樣本數據來自總體的一個子集,可能不能完全反映總體。例如,小時工資、住房價格和名義利率都必須大於零。這時需要建立的經濟計量模型稱為受限因變量模型(limited dependent variable model )。

斷尾回歸模型

截取回歸模型

樣本選擇模型

三、Stata實證分析

ARIMA模型實踐

ARIMA模型分析時間序列的基本步驟為:將原始數據的時間序列可視化,觀察平穩與非平穩分布 - 通過單位根檢驗,判斷時間序列是否為平穩 - 通過ADF找到最優參數,建立ARIMA模型 - 進行預測

打開Stata/MP 13.1軟體,初始界面如下:

打開實例數據wp1,stata默認的數據文件後綴為.dta

打開data-editor,查看導入的數據。wpi - wholesales price index - 批發價格指數,Lnwpi - wpi的對數。

要檢測時間數據,需要首先定義數據為時間序列,在command中輸入命令:tsset t

將原始數據的時間序列進行可視化處理,作圖觀察時間序列的趨勢:

line wpi t

直觀看此時間序列為非平穩時間序列分布;但是需要通過驗證才可以得出相應結論。

通過觀察自相關圖與偏相關圖,最主要的目的還是確定序列的ARMA(p,q)模型的具體形式。

一般拿到數據後,先看你數據是否存在協整關係,存在就用平穩數據,不存在只能嘗試差分後處理。差分的目的是消除序列的不平穩性,使其波動曲線更平穩。通過一階插分和二階插分的時序,來進行ADF單位根檢驗,進而判斷後面的序列是否平穩。

對原始數據進行單位根檢驗:dfuller ln_wpi

Z test都大於檢驗各檢驗臨界值,且p-value>0.05

所以原序列是非平穩時間序列;

對一階差分後的數據進行單位根檢驗:dfuller d.ln_wpi

Z-test都小於各檢驗臨界值,且p-value<0.05

所以一階差分後,序列變為平穩時間序列;

對時序進行二階差分的單位根檢驗:dfuller d2.ln_wpi

結果顯示,二階差分的時序為平穩時間序列。

(* 滯後幾階與幾階差分的含義不同:滯後二階是指取前兩期的值;二階差分就是,後一期一階差分減去前一期一階差分。)

一階差分就是離散函數中連續相鄰兩項之差。繪製一階差分圖:

line d.wpi t,yline(0)

(yline(0)表示在y=0處做一條直線)

繪製二階插分圖:line d2.wpi t,yline(0)

可以看出二階差分的時序圖,直觀上已經接近於一個平穩時間序列了。

AC圖確定的是p,PAC圖確定的是q。判斷ARIMA模型的傳統方法是通過ACF(自相關圖)和PACF(偏自相關圖), 看ACF和PACF快速衰減的位置,看不同階數對應快速衰減到標準差之內的位置。觀察ACF和PACF的模式,主要看圖形分布上是否有如下兩個特徵:

截尾:到了某個位置,係數突然變化,像被「截斷」了一樣;

拖尾:就是係數整體是一個單調漸變的趨勢,但都不為0;

若ACF拖尾,PACF截尾,用AR算法;

若ACF截尾,PACF拖尾,用MA算法;

若ACF,PACF都是拖尾,用ARMA算法;不平穩用ARIMA算法;

如果,ACF和PACF的模式不明顯,則需要嘗試不同的參數值,然後通過赤池信息準則來判斷。

繪製一階差分的自相關圖:ac d.wpi

(AC - Autocorrelation)

繪製一階差分的偏自相關:pac d.wpi

(PAC - Partial Autocorrelation)

根據圖示,ACF的特徵類似於拖尾,PACF則沒有明顯的特徵模式。當ACF,PACF沒有明顯特徵時,需要通過赤池信息來判斷。

赤池信息準則:通過AIC作為衡量統計模型擬合優良性的一種標準。它建立在熵的概念基礎上,可以權衡所估計模型的複雜度和此模型擬合數據的優良性。根據不同參數組合的AIC值來判斷模型的好壞,AIC越小越好。

(AIC實際上是對樣本內誤差(in sample error)的估計量,即在訓練樣本的基礎上,保持自變量不變,觀察到一組新的y', 然後計算模型在這個新樣本中得到誤差的期望值。)

通過單位根檢驗判斷此時間序列是否為平穩時間序列:dfuller ln_wpi,lag(3) trend regress (此處假設滯後3期,lag(3)。正常做法是要進行多次滯後項的驗證,然後去評判擬合回歸的顯著性效果。)

ADF(Augmented Dickey-Fuller) 單位根檢驗 (unit root test) 的原假設為:H0:p=1, 備擇假設為:H1:p<1. (p=1表明存在單位根,原時間序列為非平穩時間序列)

ADF檢驗的邏輯:如果序列平穩,則不會存在單位根;如果序列不平穩,則可以通過差分變換,檢驗差分後的序列是否平穩。

ADF原假設H0為存在單位根(非平穩),對於一個平穩的時間序列數據,就要在給定的置信水平上顯著,拒絕原假設。

拒絕原假設的判別條件:1>統計量顯著小於3個置信度(1%,5%,10%)的臨界統計值時;2>Z統計量的P-value接近0。

\]

通過單位根檢驗結果可以看到在1%,5%,10%顯著性水平下的臨界值分別為1%-critical value=-4.033, 5%-critical value=-3.447, 10%-critical value=-3.147,Z檢驗統計量值為-2.25。而ADF是左側單邊檢驗,只要Z檢驗統計量值大於各臨界值,則不能拒絕原假設H0(即p=1),原序列為非平穩時間序列。且p-value=0.4617,不能顯著拒絕原假設。

回歸係數的解讀:

L1 - 表示回歸係數;

LD,L2D和L3D - 分別代表了滯後1-3階滯後項對應的係數;LD滯後項p值為0,L2D滯後項p值為0.036,兩項在5%顯著性水平上都非常顯著;L3D滯後項的p值為0.145,在5%顯著性水平上顯著性一般;

_trend - 時間趨勢項;p值為0.024,時間趨勢在5%水平上很顯著;

_cons - 常數項;

在Stata中,ARIMA模型被看做帶有ARIMA擾動項的結構模型,ARIMA模型公式中本質上使用的是MLE(最大似然估計),對於序列ln_wpi,通過判斷為非平穩時間序列,所以ARIMA(p,d,q)模型中,d=1。ARIMA(p,1,q)中的 自回歸階數p 和 移動平均階數q 通過信息準則來確定,假定模型為ARIMA(1,1,1),在Stata中輸入如下命令:

arima ln_wpi,airma(1,1,1)

estat ic

再分別求出ARIMA(2,1,1),ARIMA(1,1,2),ARIMA(2,1,2)的結果:

ARIMA(2,1,1)

ARIMA(1,1,2)

ARIMA(2,1,2)

可以看出ARIMA(1,1,1)中的AIC和BIC最小,p=1,q=1,d=1為ARIMA模型最優參數。擬合模型後,需要對殘差序列檢驗是否為白噪聲,輸入:

predict r,residual

數據集中生成了新的殘差序列r:

一個標準的檢驗流程中,需要比較不同預測方法得到的預測結果的殘差。正常情況下,殘差應該為平穩序列。

我們對得到的殘差列進行單位根檢驗:

dfuller r

根據z-test和p-value,殘差為平穩時間序列;

繪製殘差圖如下,也可以直觀的看出是一個平穩的時間序列。

line r t,yline(0)

係數顯著性檢驗通過後,要進行模型的有效性檢驗,也就是檢驗殘差性是否為白噪聲:

用Q統計量進行白噪聲(white noise)檢驗:

wntestq r

wntestb r

通過白噪聲檢驗的結果,可知模型的有效性擬合效果較好。

下面開始模型的預測:

生成未差分的wpi時間序列y:preidct y,y

生成差分後的wpi序列xb:predict xb,xb

比對ARIMA模型生成的預測值和原始值的擬合線對比:

line ln_wpi y t, yline(0)

(紅色為預測值擬合線,黑色為原始值擬合線)

樣本外預測,首先添加預測值的空白填充位置:

tsappend,add(4)

對差分後序列的預測:predict y_hat

對原序列wpi的預測:predict yy_hat,y

(在STATA中,ARIMA模型只能預測未來1期的數值。)

將預測值與原始值的擬合曲線進行比較:line ln_wpi yy_hat t, yline(0)

可以看出紅色擬合線對應的多出一期的預測值已經體現。

下一篇將總結時間序列模型之ARCH和GARCH模型,在STATA中的使用方法和規範。

「筆人自認才疏學淺,僅略知皮毛,更兼時間和精力所限,文中錯謬之處在所難免,若蒙讀者諸君不吝告知,將不勝感激。」

相關焦點

  • 迅速上手的時間序列分析教程
    >時間序列是指以固定時間為間隔的、由所觀察的值組成的序列。根據觀測值的不同頻率,可將時間序列分成小時、天、星期、月份、季度和年等時間形式的序列。有時候,你也可以將秒鐘和分鐘作為時間序列的間隔,如每分鐘的點擊次數和訪客數等等。 為什麼我們要對時間序列進行分析呢?因為當你想對一個序列進行預測時,首先要完成分析這個步驟。
  • 利用ARIMA構建高性能時間序列模型(附Python代碼)
    簡記為ARIMA(p,d,q),名稱為差分整合移動平均自回歸模型。ARIMA的實際就是差分運算與ARMA模型的組合,這意義關係重大,這說明任何非平穩序列如果能夠通過適當階數的差分實現差分後平穩,就可以對差分序列進行ARMA擬合了。而ARMA模型的分析方法非常成熟,這意味著對差分平穩序列的分析也將是非常簡單、非常可靠的。
  • 你可以迅速上手的時間序列分析教程
    模型以及stata操作實例(1)ARMA模型分析原理(2)ADL模型分析原理(3)stata實例操作第三部分  VAR模型以及stata操作實例時間序列是指以固定時間為間隔的、由所觀察的值組成的序列。除此之外,時間序列的預測也具有極大商業價值,如企業的供求量、網站的訪客量以及股票價格等,都是極其重要的時間序列數據。早期的單變量時間序列模型有較少的參數卻可以得到非常精確的預測,因此隨著Box and Jenkins(1984)等奠基性的研究,時間序列方法得到迅速發展。從單變量時間序列到多元時間序列模型,從平穩過程到非平穩過程,時間序列分析方法被廣泛應用於經濟、氣象和過程控制等領域。
  • R語言中的時間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價格
    本文將提供使用時域方法對R環境中的金融時間序列進行分析和建模的過程。第一部分涵蓋了平穩的時間序列。第二部分為ARIMA和ARCH / GARCH建模提供了指南。接下來,它將研究組合模型及其在建模和預測時間序列方面的性能和有效性。最後,將對時間序列分析方法進行總結。
  • 用 Python 為時間序列預測創建 ARIMA 模型
    它是一類模型,它捕獲時間序列數據中的一套不同的標準時間結構。ARIMA模型的信息還可以參考這裡:https://www.statsmodels.org/devel/generated/statsmodels.tsa.arima_model.ARIMAResults.html在本教程中,您將了解如何使用Python為時間序列數據開發ARIMA模型。
  • 時間序列模型matlab代碼 - CSDN
    你是否想要做時間序列分析,但卻不知道代碼怎麼寫?你是否不清楚時間序列分析各種模型該在什麼情況下使用?本文將針對以上兩個問題,帶你入門時間序列分析~等等!幸運的是,老闆是個比較技術咖的人,他教會了我很多實際操作上的東西,結合我過去七個月做過的各種時間序列模型,決定好好總結一下時間序列常見模型各自的適用場合、特徵等理論知識,更重要的是,每個模型在R裡的具體代碼實現以及操作步驟,希望能幫助到需要使用R來做時間序列的朋友們~時間序列數據是在一段時間內作為時間間隔序列收集的數據點。
  • ARIMA模型:全國考研人數預測
    本文選用R語言為基礎分析語言,選取1995-2020年全國碩士研究生報名人數,擬結合ARIMA模型對未來五年的研究生考試報名人數進行預測。ARIMA模型,又稱整合移動平均自回歸模型(移動也可稱作滑動),是時間序列預測分析的主要模型之一。
  • 時間序列基礎
    時間序列時間序列是通過以往數據對未來預測的一種方法區別於回歸,時間序列必須以時間為索引
  • R語言用多項式回歸和ARIMA模型預測電力負荷時間序列數據
    繪製電力消耗序列圖: 我們可以嘗試一個非常簡單的模型,其中日期Y_t的消耗量是時間,溫度(以多項式形式表示)以及工業生產指數IPI_t的函數。最後,我們可以忽略解釋變量,而直接嘗試建立時間序列模型。plot(elect[passe,"Load"],type="l")
  • R語言用ARIMA模型預測巧克力的興趣趨勢時間序列
    序列如下> report = read.csv(url,skip=6,header=FALSE,nrows=636)> plot(X,type="l") 每月建立一個ARIMA模型比每周建立一個容易。因此,我們將每月數據序列化,將預測與觀察結果進行比較。
  • ARIMA時間序列模型-操作篇
    ARIMA序列分析的前提要求時間序列為零均值的平穩隨機序列。為此我們首先要做時間序列圖對原始的數據進行觀察。我們得到的序列圖如下,觀察圖形可知時間序列具有明顯的上升性和季節性,對數據進行一次差分與季節性差分轉換,重新獲得新的時間序列圖。
  • matlab模型檢驗 - CSDN
    時間序列模型,可分為平穩時間序列和非平穩時間序列。平穩時間序列可以用來擬合回歸方程進行未來的預測,而非平穩的時間序列不能直接做回歸,會產生沒有實際意義的偽回歸。(不平穩的時間序列數據可能會帶來t檢驗失敗、自回歸係數估計值有偏向的等問題)首先,判斷一個時間序列是不是平穩,主要有三個評價指標:1.
  • 時間序列預測模型-ARIMA原理及Python實現!
    2、時間序列平穩性2.1 平穩性平穩性就是要求經由樣本時間序列所得到的擬合曲線在未來一段時間內仍能順著現有的形態慣性地延續下去。平穩性要求序列的均值和方差不發生明顯變化。嚴平穩嚴平穩表示的分布不隨時間的改變而改變。
  • R語言時間序列函數大全(收藏!)
    同上library(timeSeires) #同上library(urca) #進行單位根檢驗library(tseries) #arma模型library(fUnitRoots) #進行單位根檢驗library(FinTS) #調用其中的自回歸檢驗函數library(fGarch) #GARCH模型library
  • 【R函數學習】R語言時間序列函數整理
    【包】library(zoo) #時間格式預處理library(xts) #同上library(timeSeires) #同上library(urca) #進行單位根檢驗library(tseries) #arma模型library(fUnitRoots)
  • 時間序列VAR模型知識匯總
    VAR模型對於相互聯繫的時間序列變量系統是有效的預測模型,同時,向量自回歸模型也被頻繁地用於分析不同類型的隨機誤差項對系統變量的動態影響。如果變量之間不僅存在滯後影響,而不存在同期影響關係,則適合建立VAR模型,因為VAR模型實際上是把當期關係隱含到了隨機擾動項之中。單位根檢驗是序列的平穩性檢驗,如果不檢驗序列的平穩性直接OLS容易導致偽回歸。
  • stata中的自相關檢驗(LM檢驗、Q檢驗、DW檢驗)操作及其分析
    ,它有多種檢驗方法,包括圖示法、BG檢驗、Q檢驗、DW檢驗等,這裡介紹如何使用stata進行Lm檢驗、Q檢驗、DW檢驗等的檢驗,並對結果如何進行分析與判斷。選取美國汽油需求數據gasoline.dta作為示例,其樣本有52個,數據展示如下:這裡建立如下回歸模型:
  • 用Stata搞實證之面板模型入門
    如果是橫截面數據,那解決異方差問題還算簡單,但是大部分容易獲得的經濟數據都是時間序列數據,而時間序列數據的多重共線性處理又十分棘手。本科的計量書裡一般都會說,逐步回歸剔除一下就好了,但是這樣會使得你能用的變量數量大打折扣,有些奇葩導師總會要你必須加一些他們想要的變量,不能讓你去掉。
  • Python用ARIMA和SARIMA模型預測銷量時間序列數據
    p=21573介紹ARIMA模型是時間序列預測中一種常用的統計方法。指數平滑和ARIMA模型是時間序列預測中應用最為廣泛的兩種方法,它們是解決這一問題的補充方法。指數平滑模型是基於對數據趨勢和季節性的描述,而ARIMA模型則是為了描述數據的自相關性。在討論ARIMA模型之前,我們先來討論平穩性的概念和時間序列的差分技術。
  • 【乾貨分享】PVAR模型的stata操作流程(附操作文件)
    運用stata軟體做PVAR模型,需要運用到許多個命令,為了簡便,我們不需要在每一次打開軟體操作的時候,都在Command窗口裡輸入一遍命令,而是將這些命令存入一個do文件,每次在操作前都打開這個do文件,再執行其中的命令。