拓端數據tecdat:Python | ARIMA時間序列模型預測航空公司的乘客數量


原文鏈接:http://tecdat.cn/?p=20742 

 

時間序列 被定義為一系列按時間順序索引的數據點。時間順序可以是每天,每月或每年。

以下是一個時間序列示例,該示例說明了從1949年到1960年每月航空公司的乘客數量。

 

時間序列預測

時間序列預測是使用統計模型根據過去的結果預測時間序列的未來值的過程。


 

一些示例

  • 預測未來的客戶數量。
  • 解釋銷售中的季節性模式。
  • 檢測異常事件並估計其影響的程度。
  • 估計新推出的產品對已售出產品數量的影響。

時間序列的組成部分:

代碼:航空公司乘客的ETS分解數據集:

 

  1.  
    # 導入所需的庫
  2.  
     
  3.  
    import numpy as np
  4.  
     
  5.  
     
  6.  
     
  7.  
     
  8.  
    # 讀取AirPassengers數據集
  9.  
     
  10.  
    airline = pd.read_csv('data.csv',
  11.  
     
  12.  
                           index_col ='Month',
  13.  
     
  14.  
                           parse_dates = True)
  15.  
     
  16.  
     
  17.  
     
  18.  
    # 輸出數據集的前五行
  19.  
     
  20.  
    airline.head()
  21.  
     
  22.  
     
  23.  
     
  24.  
    # ETS分解
  25.  
     
  26.  
     
  27.  
    # ETS圖
  28.  
     
  29.  
    result.plot()

 輸出:

ARIMA時間序列預測模型

ARIMA代表自回歸移動平均模型,由三個階數參數 (p,d,q)指定。

ARIMA模型的類型

自動ARIMA

“ auto_arima” 函數 可幫助我們確定ARIMA模型的最佳參數,並返回擬合的ARIMA模型。

代碼:ARIMA模型的參數分析

 

  1.  
     
  2.  
    # 忽略警告
  3.  
     
  4.  
    import warnings
  5.  
     
  6.  
    warnings.filterwarnings("ignore")
  7.  
     
  8.  
     
  9.  
     
  10.  
    # 將自動arima函數擬合到AirPassengers數據集
  11.  
     
  12.  
    autoarima(airline['# Passengers'], start_p = 1, start_q = 1,
  13.  
     
  14.  
                              max_p = 3, max_q = 3, m = 12,
  15.  
     
  16.  
     
  17.  
     
  18.  
                              stepwise = True          # 設置為逐步
  19.  
     
  20.  
     
  21.  
     
  22.  
    # 輸出摘要
  23.  
     
  24.  
    stepwise_fit.summary()

 

輸出:

代碼:將ARIMA模型擬合到AirPassengers數據集

 

  1.  
    # 將數據拆分為訓練/測試集
  2.  
     
  3.  
     
  4.  
    test = iloc[len(airline)-12:] # 設置一年(12個月)進行測試
  5.  
     
  6.  
     
  7.  
     
  8.  
    # 在訓練集上擬合一個SARIMAX(0,1,1)x(2,1,1,12)
  9.  
     
  10.  
     
  11.  
     
  12.  
    SARIMAX(Passengers, 
  13.  
     
  14.  
                    order = (0, 1, 1), 
  15.  
     
  16.  
                    seasonal_order =(2, 1, 1, 12
  17.  
     
  18.  
     
  19.  
     
  20.  
    result.summary()

輸出:

代碼:ARIMA模型對測試集的預測

  1.  
     
  2.  
     
  3.  
    # 針對測試集的一年預測
  4.  
     
  5.  
    predict(start, end,
  6.  
     
  7.  
     
  8.  
     
  9.  
     
  10.  
    #繪圖預測和實際值
  11.  
     
  12.  
    predictions.plot
  13.  
     

 

輸出:

代碼:使用MSE和RMSE評估模型

  1.  
    # 加載特定的評估工具
  2.  
    # 計算均方根誤差
  3.  
     
  4.  
    rmse(test["# Passengers"], predictions)
  5.  
     
  6.  
     
  7.  
     
  8.  
    # 計算均方誤差
  9.  
     
  10.  
    mean_squared_error(test["# Passengers"], predictions)

 

輸出:

代碼:使用ARIMA模型進行預測

  1.  
     
  2.  
    # 在完整數據集上訓練模型
  3.  
     
  4.  
     
  5.  
    result = model.fit()
  6.  
     
  7.  
     
  8.  
     
  9.  
    # 未來3年預測
  10.  
    result.predict(start = len(airline), 
  11.  
     
  12.  
                              end = (len(airline)-1) + 3 * 12, 
  13.  
     
  14.  
     
  15.  
     
  16.  
     
  17.  
    # 繪制預測值
  18.  
    forecast.plot(legend = True)

 

輸出:

 

  • 趨勢:趨勢顯示了長時間序列數據的總體方向。趨勢可以是增加(向上),減少(向下)或水平(平穩)。
  • 季節性:季節性成分在時間,方向和幅度方面表現出重復的趨勢。一些例子包括由於炎熱的天氣導致夏季用水量增加,或每年假期期間航空公司乘客人數增加。
  • 周期性成分: 這些是在特定時間段內沒有穩定重復的趨勢。周期是指時間序列的起伏,通常在商業周期中觀察到。這些周期沒有季節性變化,但通常會在3到12年的時間范圍內發生,具體取決於時間序列的性質。
  • 不規則變化: 這些是時間序列數據中的波動,當趨勢和周期性變化被刪除時,這些波動變得明顯。這些變化是不可預測的,不穩定的,並且可能是隨機的,也可能不是隨機的。
  • ETS分解
    ETS分解用於分解時間序列的不同部分。ETS一詞代表誤差、趨勢和季節性。
  • AR(p)自回歸 –一種回歸模型,利用當前觀測值與上一個期間的觀測值之間的依存關系。自回歸(AR(p))分量是指在時間序列的回歸方程中使用過去的值。
  • I(d) –使用觀測值的差分(從上一時間步長的觀測值中減去觀測值)使時間序列穩定。差分涉及將序列的當前值與其先前的值相減d次。
  • MA(q)移動平均值 –一種模型,該模型使用觀測值與應用於滯后觀測值的移動平均值模型中的殘留誤差之間的相關性。移動平均成分將模型的誤差描述為先前誤差項的組合。 q 表示要包含在模型中的項數。
  • ARIMA:非季節性自回歸移動平均模型
  • SARIMA季節性ARIMA
  • SARIMAX:具有外生變量的季節性ARIMA

     

最受歡迎的見解

1.在python中使用lstm和pytorch進行時間序列預測

2.python中利用長短期記憶模型lstm進行時間序列預測分析

3.使用r語言進行時間序列(arima,指數平滑)分析

4.r語言多元copula-garch-模型時間序列預測

5.r語言copulas和金融時間序列案例

6.使用r語言隨機波動模型sv處理時間序列中的隨機波動

7.r語言時間序列tar閾值自回歸模型

8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類

9.python3用arima模型進行時間序列預測

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM