ARIMA時間序列模型-操作篇

2021-02-13 統計聯盟

上期我們介紹了ARIMA模型的理論,在理論的基礎上,本期將結合實例進行軟體操作,本期介紹ARIMA模型的SPSS操作,以方便大家對照用自己的數據:

如果數據有缺失,是無法做ARIMA的模型預測的,所以第一步是缺失值的填補。

點擊數據-定義日期,選擇對於的格式。

如果提供的格式沒有我們想要的,可以用語法自定義。如果我們定義年、周這樣數據,操作如下:文件-新建-語法。語法中CYCLE代表日期循環的起始,默認間隔為1,WEEK代表周次,52代表52周為一個周期。     

ARIMA序列分析的前提要求時間序列為零均值的平穩隨機序列。為此我們首先要做時間序列圖對原始的數據進行觀察。

我們得到的序列圖如下,觀察圖形可知時間序列具有明顯的上升性和季節性,對數據進行一次差分與季節性差分轉換,重新獲得新的時間序列圖。再次觀察可知轉換後的時間序列圖基本是一個白噪聲序列。

數據轉換:

數據轉化後時間序列圖:

對未轉換的數據做ACF與PACF圖。

當時間序列較長時可以增大延遲數便於觀察。

得到的ACF圖顯示在特定的節點均出現局部極大值,結合時間序列圖可初步判斷時間序列具有季節性,因此建立的模型應為混合模型(季節+非季節)。

對數據做一次季節性差分觀察得到的ACF與PACF圖。觀察可知ACF圖是拖尾的,而PACF圖是驟減的,初步確定季節性部分可能為AR模型p=1,參數為ARIMA(1,1,0)。

ACF圖:

PACF圖:

以ARIMA(1,1,0)進行建模,步驟如下:

step1:

step2:

切換到「統計量」,選擇需要保存的統計量,將「參數估計」與「顯示預測值」勾選。

step3:

切換到圖表,選擇圖形的選項。

step4:

點擊確定之後輸出結果如下圖:

結果1:參數匯報

結果2:參數檢驗

結果3:殘差ACF與PACF圖

模擬擬合的判斷:

(1)R方:

決定係數,即現有模型可以解釋原變量的多少變異。對於有趨勢有周期波動的序列而言,R方往往有點過於樂觀,因為只要把相應的趨勢解釋掉,可能就佔了相當大的變異解釋,比較客觀的平穩的R方,指的是平穩後的序列,我們的建模可以解釋多少信息。

(2) RMSE:

相當於回歸裡的殘差剩餘的離散程度,殘差的均方

(3)MAPE,MaxAPE:

相當於相對誤差和絕對誤差,相對於原始數據,我們的誤差有百分之多少,2.07%

(4)MAE,MaxAE:

平均的實測誤差,最大的絕對誤差

(5)正態化的BIC:

基於均分誤差的分數,可用於比較相同序列的不同模型的統計量。 

(6)模型統計量:

Ljung-Box的sig(P值)告訴我們這個序列是不是白噪聲,該例子中p值<0.05,h0為扣除模型後的殘差是白噪聲,拒絕H0,說明殘差還不是白噪聲,需要加入非季節的模型。

(7)ARIMA模型參數:

t檢驗的p值均小於0.05,說明我們構建的模型參數是有統計學意義的。

(8)殘差的ACF與PACF圖:

ACF圖與PACF圖均為仍不是白噪聲序列,其中ACF圖與PACF圖為拖尾,可初步判定非季節性部分為ARIMA(1,1,1)。

綜上所述,我們的季節模型經過嘗試構建,仍然有不足,仍含有非季節性部分,需要繼續添加非季節性部分。

重複(6)中的步驟,設置模型為ARIMA(1,1,1)(1,1,0)

得到結果如下:

結果1:參數匯報

結果2:參數檢驗

結果3:殘差ACF與PACF圖

結果4:模型擬合效果

結論:輸出的結果顯示Q統計量的p值>0.05,模型的參數均有意義,殘差圖與趨於白噪聲,模型的擬合效果較好,可認為我們創建的模型效果較好。

由觀察得到的模型不一定是最優模型,可能由於觀察的不確定性,有時候不能確定模型到底是拖尾的還是驟減的,可以假設多個可能的模型,然後去比較得到的結果。

例如我們在該例子中季節性部分可能是ARIMA(0,1,1),混合後的模型為ARIMA(1,1,1)(0,1,1),因此我們需要去比較兩個模型的哪個個好。可以選擇正態化的BIC較小的那個。

ARIMA(1,1,1)(0,1,1)得到的結果如下圖。在參數均有意義的前提下比較正態化的BIC,ARIMA(1,1,1)(1,1,0)為7.755,ARIMA(1,1,1)(0,1,1)為7.675,且平穩R方後者稍微高點,因此ARIMA(1,1,1)(0,1,1)較優。

我們可以去把所有可能的結果列出來,然後比較後選擇最優的模型。所以做ARIMA預測的過程是一個探索比較的過程,模型也沒有絕對的好壞。

想要預測未來的數據,在創建模型的時候需要在「保存」與「選項」界面做如下配置,之後在數據視圖界面就能看到結果。

參數配置:

指定預測時間:

一般我們可以將已有的數據集分為分析集與驗證集,分析集用於建模,驗證集用於驗證。對於spss將驗證集與預測值同時選入序列圖後作圖比較二者的擬合程度,或者計算RMSE。可以手動計算RMSE,將驗證集與預測的數據集做差得到的殘差算RMSE。可新建語法輸入」FIT VARIABLES=殘差變量.」得到RMSE結果,比較不同模型的RMSE可知道哪個模型的預測效果更好。

語法輸入:

結果輸出:

1.張文彤.SPSS統計分析高級教程(第二版)

2.孫振球.醫學統計學(第四版)

https://blog.csdn.net/u010159842/article/details/53067828

ARIMA模型需要用戶根據自身數據不斷判斷和調整,是個不斷修正的過程,相對其它模型往往比較複雜和主觀,如果你暫時不能掌握也沒關係,歡迎您隨時與我們交流!

為方便聯盟內部成員交流,特建立微信交流群,由高校、科研院所、臨床醫生構成,由於群人數超過100,需要由工作人員拉你才能入群,工作人員二維碼如下,添加時請備註「申請入群」;此外現轉發我們指定的推文就可送SPSS、SAS、R軟體視頻教程一套,詳情請點擊下方閱讀全文。

相關焦點

  • 利用ARIMA構建高性能時間序列模型(附Python代碼)
    簡記為ARIMA(p,d,q),名稱為差分整合移動平均自回歸模型。ARIMA的實際就是差分運算與ARMA模型的組合,這意義關係重大,這說明任何非平穩序列如果能夠通過適當階數的差分實現差分後平穩,就可以對差分序列進行ARMA擬合了。而ARMA模型的分析方法非常成熟,這意味著對差分平穩序列的分析也將是非常簡單、非常可靠的。
  • 時間序列模型matlab代碼 - CSDN
    你是否想要做時間序列分析,但卻不知道代碼怎麼寫?你是否不清楚時間序列分析各種模型該在什麼情況下使用?本文將針對以上兩個問題,帶你入門時間序列分析~等等!不止』入門『讀完這篇,你立即就能在R中寫出不同模型的相應代碼~先介紹以下我自己吧~我目前是Warner Bros.做Data Scientist,記得剛入職時,老闆就跟我說未來我的主要任務是用各種類型的時間序列模型做預測:預測好萊塢遊覽車未來三年每天的乘客數量、預測<Aquaman>, <Joker>,<Wonder
  • 用 Python 為時間序列預測創建 ARIMA 模型
    它是一類模型,它捕獲時間序列數據中的一套不同的標準時間結構。ARIMA模型的信息還可以參考這裡:https://www.statsmodels.org/devel/generated/statsmodels.tsa.arima_model.ARIMAResults.html在本教程中,您將了解如何使用Python為時間序列數據開發ARIMA模型。
  • [STATA] 時間序列模型 - ARIMA檢驗
    ,以及如何通過Stata軟體來進行不同時間序列模型的預測性分析。一、背景介紹時間序列模型是將一個或一組變量按照時間次序排列,用於解釋變量和相互關係的數學表達式,所得到的離散數字組成的序列集合。時間序列模型,可分為平穩時間序列和非平穩時間序列。平穩時間序列可以用來擬合回歸方程進行未來的預測,而非平穩的時間序列不能直接做回歸,會產生沒有實際意義的偽回歸。
  • R語言用多項式回歸和ARIMA模型預測電力負荷時間序列數據
    繪製電力消耗序列圖: 我們可以嘗試一個非常簡單的模型,其中日期Y_t的消耗量是時間,溫度(以多項式形式表示)以及工業生產指數IPI_t的函數。最後,我們可以忽略解釋變量,而直接嘗試建立時間序列模型。plot(elect[passe,"Load"],type="l")
  • R語言中的時間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價格
    本文將提供使用時域方法對R環境中的金融時間序列進行分析和建模的過程。第一部分涵蓋了平穩的時間序列。第二部分為ARIMA和ARCH / GARCH建模提供了指南。接下來,它將研究組合模型及其在建模和預測時間序列方面的性能和有效性。最後,將對時間序列分析方法進行總結。
  • R語言用ARIMA模型預測巧克力的興趣趨勢時間序列
    序列如下> report = read.csv(url,skip=6,header=FALSE,nrows=636)> plot(X,type="l") 每月建立一個ARIMA模型比每周建立一個容易。因此,我們將每月數據序列化,將預測與觀察結果進行比較。
  • ARIMA模型:全國考研人數預測
    本文選用R語言為基礎分析語言,選取1995-2020年全國碩士研究生報名人數,擬結合ARIMA模型對未來五年的研究生考試報名人數進行預測。ARIMA模型,又稱整合移動平均自回歸模型(移動也可稱作滑動),是時間序列預測分析的主要模型之一。
  • 獨家 | 利用Auto ARIMA構建高性能時間序列模型(附Python和R代碼)
    如果你熟悉時間序列及其常用方法(如移動平均、指數平滑和ARIMA),則可以直接跳到第4節。對於初學者,請從下面這一節開始,內容包括對時間序列和各種預測方法的簡要介紹。一、什麼是時間序列?ACF圖用於識別正確的『q』值,差分順序規定了對序列執行差分操作的次數,對數據進行差分操作的目的是使之保持平穩。像ADF和KPSS這樣的測試可以用來確定序列是否是平穩的,並有助於識別d值。
  • 迅速上手的時間序列分析教程
    模型以及stata操作實例(1)ARMA模型分析原理(2)ADL模型分析原理(3)stata實例操作第三部分  VAR模型以及stata操作實例>時間序列是指以固定時間為間隔的、由所觀察的值組成的序列。
  • 你可以迅速上手的時間序列分析教程
    模型以及stata操作實例(1)ARMA模型分析原理(2)ADL模型分析原理(3)stata實例操作第三部分  VAR模型以及stata操作實例時間序列是指以固定時間為間隔的、由所觀察的值組成的序列。根據觀測值的不同頻率,可將時間序列分成小時、天、星期、月份、季度和年等時間形式的序列。有時候,你也可以將秒鐘和分鐘作為時間序列的間隔,如每分鐘的點擊次數和訪客數等等。 為什麼我們要對時間序列進行分析呢?因為當你想對一個序列進行預測時,首先要完成分析這個步驟。
  • ARIMA模型預測CO2濃度時間序列-python實現
    第3步-ARIMA時間序列模型在時間序列預測中使用的最常見的方法是被稱為ARIMA模型。ARIMA是可以擬合時間序列數據的模型,以便更好地理解或預測序列中的未來點。有三種不同的整數(p,  d,  q)是用來參數化ARIMA模型。因此,ARIMA模型用符號表示 ARIMA(p, d, q)。
  • 時間序列預測模型-ARIMA原理及Python實現!
    2、時間序列平穩性2.1 平穩性平穩性就是要求經由樣本時間序列所得到的擬合曲線在未來一段時間內仍能順著現有的形態慣性地延續下去。平穩性要求序列的均值和方差不發生明顯變化。嚴平穩嚴平穩表示的分布不隨時間的改變而改變。
  • R語言時間序列分析
    :阿虎定量筆記方法簡介時間序列是按時間順序的一組數字序列。循環波動的周期可能會持續一段時間,但與趨勢不同,它不是朝著單一方向的持續變動,而是漲落相同的交替波動;- 不規則波動:是時間序列中除去趨勢、季節變動和周期波動之後的隨機波動。不規則波動通常總是夾雜在時間序列中,致使時間序列產生一種波浪形或震蕩式的變動。
  • R語言時間序列函數大全(收藏!)
    )) #包timeSeries#規則的時間序列,數據在規定的時間間隔內出現tm = ts(x,start = c(2010,1), frequency=12 ) #12為按月份,4為按季度,1為按年度zm = zooreg(x,start = c(2010,1), frequency=12 ) #包zooxm
  • 時間序列基礎
    時間序列時間序列是通過以往數據對未來預測的一種方法區別於回歸,時間序列必須以時間為索引
  • 【R函數學習】R語言時間序列函數整理
    【數據處理】#具體說明見文檔1#轉成時間序列類型x = rnorm(2)charvec = c(「2010-01-01」,」2010-02-01」)zoo(x,as.Date(charvec)) #包zooxts(x, as.Date(charvec)) #包xtstimeSeries(x,as.Date
  • Python用ARIMA和SARIMA模型預測銷量時間序列數據
    p=21573介紹ARIMA模型是時間序列預測中一種常用的統計方法。指數平滑和ARIMA模型是時間序列預測中應用最為廣泛的兩種方法,它們是解決這一問題的補充方法。指數平滑模型是基於對數據趨勢和季節性的描述,而ARIMA模型則是為了描述數據的自相關性。在討論ARIMA模型之前,我們先來討論平穩性的概念和時間序列的差分技術。
  • 【時間序列】自回歸模型
    >本篇主要講解AR,ARMA,ARIMA等傳統時間序列模型,包括具體代碼操作。並附講時間序列的一些基礎知識點,如果有基礎的可以直接跳到模型部分。1. 時間序列的平穩性1.1 自協方差、自相關函數自相關函數(autocorrelation function)ACF。自相關函數是指不同時點的變量之間的相關性。1.2 平穩性定義平穩可以理解為性質平移不變。時間序列分幾種情況,第一種是純白噪音序列,這個時候就沒有分析的必要了。
  • 時間序列分析-ARIMA python實現
    時間序列分析是根據系統觀察得到的時間序列數據,通過曲線擬合和參數估計來建立數學模型的理論和方法。