自回歸模型,過去的觀察值和現(xiàn)在的干擾值的聯(lián)系組合預(yù)測(cè)
滑動(dòng)平均模型, 過去的感染治和現(xiàn)在的干擾值的線性組合預(yù)測(cè)
ARMA(Autoregressive–moving-average model)
Wiki
ARIMA(p,d,q) ,非平穩(wěn)序列經(jīng)過k階差分后變成平穩(wěn)序列運(yùn)用ARMA模型
繪制時(shí)序圖看看數(shù)據(jù)長(zhǎng)什么樣,猜測(cè)是平穩(wěn)還是非平穩(wěn)
ADF(Augmented Dickey-Fuller unit root test)單位根平穩(wěn)檢驗(yàn)
隨機(jī)序列(白噪聲)檢驗(yàn)
方法:Q統(tǒng)計(jì)量、LB統(tǒng)計(jì)量
繪制ACF(Autocorrelation)自相關(guān)圖,自相關(guān)系數(shù)
PACF(Partial Autocorrelation)偏自相關(guān)圖,
BIC信息量最小選擇p,q
p, q 階數(shù)一般不超過length/10
模型檢驗(yàn)和參數(shù)估計(jì)
ARIMA模型預(yù)測(cè)
拖尾:始終有非零取值,不會(huì)在k大于某個(gè)常數(shù)后就恒等于零(或在0附近隨機(jī)波動(dòng))
截尾:在大于某個(gè)常數(shù)k后快速趨于0為k階截尾
statsmodels
Time Series analysis
ARIMA
import statsmodels.api as smimport pandas as pddf = pd.DataFrame(data)#dataframex = #LOAD YOUR DATAindex = pd.Index(sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3'))#ordates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs)df = pd.DataFrame(X,colomns=['x'],index=index)#plotdf.plot(df)#ACFsm.tsa.acf(df)sm.graphics.tsa.plot_acf(df)#PACFsm.tsa.pacf(df)sm.graphics.tsa.plot_pacf(df)#ADFsm.tsa.adfuller(df.x) #df.loc[:,'x'] | df.iloc[:,0]#diff差分pd.diff()#diagnostic白噪聲檢驗(yàn), 返回stats和psm.stats.diagnostic.acorr_ljungbox(df, lags=1)#model#from statsmodels.tsa.arima_model import ARIMA #ARMAmodel = sm.tsa.ARIMA(df, order=(p,d,q))model = sm.tsa.ARMA()arma_res = model.fit(trend='nc', disp=-1)#BICmodel.bic#模型報(bào)告model.summary2()model.summary()model.tail()#擬合結(jié)果model.PRedict()#預(yù)測(cè)圖fig, ax = plt.subplots(figsize=(10,8))fig = arma_res.plot_predict(start='1999m6', end='2001m5', ax=ax)legend = ax.legend(loc='upper left')#預(yù)測(cè)接下來5個(gè)數(shù)model.forecast(5)新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注