一、 ARIMA模型介紹
ARIMA模型,全稱自回歸移動平均模型(AutoRegressive Integrated Moving Average),是一個常用的時間序列預測模型。ARIMA模型將時間序列拆分為三個部分,包括自回歸(AR)部分,移動平均(MA)部分和差分(I)部分。
ARIMA模型採用歷史數據來推斷未來趨勢,因此在使用ARIMA模型前,需要考慮模型選擇和參數調整。
二、ARIMA模型參數p q d的含義
ARIMA模型有三個參數需要調節,分別為p、q和d。
p參數表示自回歸模型的階數。AR(Auto Regression)表示自回歸模型,其模型中的一個值是基於其前一個取值得到的。p參數決定了模型中自回歸項(AR項)的個數。
q參數表示移動平均模型的階數。MA(Moving Average)表示移動平均模型,其模型中的一個值是基於預測誤差得到的。q參數決定了模型中移動平均項(MA項)的個數。
d參數表示時間序列進行差分的次數。差分可以讓時間序列的平穩性提高,以便更好地應用ARIMA模型。d參數通常在1或2之間選擇,取決於時間序列的性質。
三、ARIMA模型參數選擇方法
ARIMA模型中的參數p、q和d需要根據數據選擇合適的取值。下面介紹幾種常用的方法:
1. 自相關圖和偏自相關圖
自相關圖(ACF圖)和偏自相關圖(PACF圖)是一種常用的選擇ARIMA模型參數的方法,它們能夠幫助我們判斷AR和MA模型中p和q參數的取值。
ACF圖是時間序列自相關係數的圖像,表示隨時間間隔的變化,時間序列自身的相關性。PACF圖是偏自相關係數的圖像,表示兩個時間點之間的特殊相關性。
import pandas as pd import statsmodels.api as sm from statsmodels.graphics.tsaplots import plot_acf, plot_pacf # 得到自相關圖和偏自相關圖 plot_acf(data) #自相關圖 plot_pacf(data) #偏自相關圖
2. 網格搜索法
網格搜索法(Grid Search)是一種常用的選擇ARIMA模型參數的方法,它能夠快速地搜索不同的p、q、d的取值組合,並評估每個組合的預測能力。
下面是以AIC為評估標準的網格搜索代碼示例:
import itertools import warnings warnings.filterwarnings("ignore") # 關閉警告信息 # 首先定義一個參數範圍的列表 p = range(0, 4) d = range(0, 2) q = range(0, 4) # 得到所有組合 pdq = list(itertools.product(p, d, q)) # 遍歷所有組合併評估其ARIMA模型的AIC值 aic = [] for param in pdq: try: model = sm.tsa.ARIMA(data, order=param) results = model.fit() aic.append(results.aic) print('ARIMA {} - AIC:{}'.format(param, results.aic)) except: continue # 找到AIC值最小的那個模型 best = pdq[aic.index(min(aic))] print('Best ARIMA:{} - AIC:{}'.format(best, min(aic)))
3. 自動ARIMA模型選擇
在statsmodels庫的最新版本中,已經提供了自動ARIMA模型選擇的功能。它能夠通過輸入時間序列數據和選擇標準,自動選擇最適合的ARIMA模型。
import pmdarima as pm model = pm.auto_arima(data, seasonal=False, trace=True) print('Best ARIMA:{} - AIC:{}'.format(model.order, model.aic()))
四、模型評估和預測
進行ARIMA模型參數選擇後,需要評估模型的擬合程度,並進行預測。
1. 模型擬合程度的評估
使用模型對訓練集進行預測,然後將預測結果與訓練集的實際值進行對比,得到擬合程度的評估指標,如RMSE、MAE和R^2等。
from sklearn.metrics import mean_squared_error # 模型訓練和預測 model = sm.tsa.ARIMA(data, order=(1, 1, 1)) results = model.fit() prediction = results.predict() # 計算預測誤差和評估指標 error = mean_squared_error(data, prediction) print('RMSE:{}'.format(np.sqrt(error)))
2. 預測未來值
使用訓練好的模型進行未來值預測,得到的結果可以用來制定相應的策略。
# 預測未來值(forecast) prediction = results.forecast(7) # 預測未來7天的數據
五、總結
本文介紹了ARIMA模型中參數p、q和d的含義和選擇方法,採用了自相關圖和偏自相關圖、網格搜索法和自動ARIMA模型選擇三種方法進行了實現。同時,本文還介紹了如何進行模型評估和預測。在ARIMA模型選擇時,我們需要結合實際情況選擇合適的方法,分析觀察時間序列的性質和特點,以獲得更好的模型效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303546.html