拓端tecdat:Python | ARIMA時間序列模型預測航空公司的乘客數量
原文鏈接:http://tecdat.cn/?p=20742
原文出處:拓端數據部落公眾號
時間序列?被定義為一系列按時間順序索引的數據點。時間順序可以是每天,每月或每年。
以下是一個時間序列示例,該示例說明了從1949年到1960年每月航空公司的乘客數量。

時間序列預測
時間序列預測是使用統(tǒng)計模型根據過去的結果預測時間序列的未來值的過程。
?
一些示例
預測未來的客戶數量。
解釋銷售中的季節(jié)性模式。
檢測異常事件并估計其影響的程度。
估計新推出的產品對已售出產品數量的影響。
時間序列的組成部分:
代碼:航空公司乘客的ETS分解數據集:
# 導入所需的庫
import numpy as np
# 讀取AirPassengers數據集
airline = pd.read_csv('data.csv',
???????????????????????index_col ='Month',
???????????????????????parse_dates = True)
# 輸出數據集的前五行
airline.head()
# ETS分解
# ETS圖
result.plot()
?輸出:


ARIMA時間序列預測模型
ARIMA代表自回歸移動平均模型,由三個階數參數?(p,d,q)指定。
ARIMA模型的類型
自動ARIMA
“ auto_arima”?函數 可幫助我們確定ARIMA模型的最佳參數,并返回擬合的ARIMA模型。
代碼:ARIMA模型的參數分析
# 忽略警告
import warnings
warnings.filterwarnings("ignore")
# 將自動arima函數擬合到AirPassengers數據集
autoarima(airline['# Passengers'], start_p = 1, start_q = 1,
??????????????????????????max_p = 3, max_q = 3, m = 12,
??????????????????????????stepwise = True????????? # 設置為逐步
# 輸出摘要
stepwise_fit.summary()
輸出:

代碼:將ARIMA模型擬合到AirPassengers數據集
# 將數據拆分為訓練/測試集
test = iloc[len(airline)-12:] # 設置一年(12個月)進行測試
# 在訓練集上擬合一個SARIMAX(0,1,1)x(2,1,1,12)
SARIMAX(Passengers,?
????????????????order = (0, 1, 1),?
????????????????seasonal_order =(2, 1, 1, 12
result.summary()
輸出:

代碼:ARIMA模型對測試集的預測
# 針對測試集的一年預測
predict(start, end,
#繪圖預測和實際值
predictions.plot
輸出:

代碼:使用MSE和RMSE評估模型
# 加載特定的評估工具
# 計算均方根誤差
rmse(test["# Passengers"], predictions)
# 計算均方誤差
mean_squared_error(test["# Passengers"], predictions)
輸出:


代碼:使用ARIMA模型進行預測
# 在完整數據集上訓練模型
result = model.fit()
# 未來3年預測
result.predict(start = len(airline),?
??????????????????????????end = (len(airline)-1) + 3 * 12,?
# 繪制預測值
forecast.plot(legend = True)
輸出:

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