Heim > Artikel > Backend-Entwicklung > Erfahren Sie, wie Sie ARIMA-Modelle mit dem Statistikmodellmodul von Python anpassen
Kostenlose Lernempfehlung: Python-Video-Tutorial
Notwendige Pakete und Module importieren
from scipy import statsimport pandas as pdimport matplotlib.pyplot as pltimport statsmodels.api as smfrom statsmodels.tsa.arima.model import ARIMAfrom statsmodels.graphics.tsaplots import plot_predict plt.rcParams['font.sans-serif']=['simhei']#用于正常显示中文标签plt.rcParams['axes.unicode_minus']=False#用于正常显示负号
1. Lesen Sie die Daten und zeichnen Sie das Diagramm
data=pd.read_csv('数据/客运量.csv',index_col=0)data.index = pd.Index(sm.tsa.datetools.dates_from_range('1949', '2008'))#将时间列改为专门时间格式,方便后期操作data.plot(figsize=(12,8),marker='o',color='black',ylabel='客运量')#画图
#Dabei verwendete Passagierfluss-Zeitreihendaten Artikel: https://download.csdn.net/download/weixin_45590329/14143811
#Das Zeitreihenliniendiagramm sieht wie folgt aus: Offensichtlich weisen die Daten einen steigenden Trend auf. Es wird zunächst davon ausgegangen, dass die Daten nicht stabil sind 2. Stationaritätstest
sm.tsa.adfuller(data,regression='c')sm.tsa.adfuller(data,regression='nc')sm.tsa.adfuller(data,regression='ct')Führen Sie drei ADF-Einheitswurzeltests durch, wie in einigen Ergebnissen gezeigt, und stellen Sie fest, dass die Reihe nicht stationär ist
3. Führen Sie eine Differenzverarbeitung erster Ordnung für die Daten durch
diff=data.diff(1)diff.dropna(inplace=True)diff.plot(figsize=(12,8),marker='o',color='black')#画图Machen Erstellen Sie nach der Differenz erster Ordnung der Daten ein Liniendiagramm und beurteilen Sie zunächst, dass es stationär ist.
4. Führen Sie einen Stationaritätstest für die Differenzdaten erster Ordnung durch ist stationär
5. Bestimmen Sie die ARIMA-Reihenfolge (p, d, q) Modell
6. Parameterschätzung
sm.tsa.adfuller(diff,regression='c')sm.tsa.adfuller(diff,regression='nc')sm.tsa.adfuller(diff,regression='ct')7. Modelltest
fig = plt.figure(figsize=(12,8))ax1 = fig.add_subplot(211)fig = sm.graphics.tsa.plot_acf(diff.values.squeeze(), lags=12, ax=ax1)#自相关系数图1阶截尾,决定MA(1)ax2 = fig.add_subplot(212)fig = sm.graphics.tsa.plot_pacf(diff, lags=12, ax=ax2)#偏相关系数图1阶截尾,决定AR(1)
8. Vorhersage
model = ARIMA(data, order=(1, 1, 1)).fit()#拟合模型model.summary()#统计信息汇总#系数检验params=model.params#系数tvalues=model.tvalues#系数t值bse=model.bse#系数标准误pvalues=model.pvalues#系数p值#绘制残差序列折线图resid=model.resid#残差序列fig = plt.figure(figsize=(12,8))ax = fig.add_subplot(111)ax = model.resid.plot(ax=ax)#计算模型拟合值fit=model.predict(exog=data[['TLHYL']])
Python-Tutorial
(Video)
Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie ARIMA-Modelle mit dem Statistikmodellmodul von Python anpassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!