statsmodels.tsa.arima_model out-of-sample 滑窗預(yù)測

還是先來吐槽

時間序列模型arima 用python 實現(xiàn)的話是用statsmodels.tsa.arima_model 來做,樣本內(nèi)的擬合和預(yù)測都沒什么問題。但是樣本外的預(yù)測沒想到 竟然成了很大的問題。

問題

  • 無論是forecast 還是predict 在預(yù)測的時候都只能做到一步預(yù)測砚哆,如果進行多步預(yù)測擅羞,其實在后面幾步用的是擬合值而不是真實值,所以對于想要使用滑窗一步預(yù)測就很難受忿等。
  • 為什么這個接口對于這么簡單的功能卻這么蹩腳,主要是因為在arima model 進行預(yù)測的時候是必須依賴該數(shù)據(jù)之前的數(shù)的殘差崔挖。

解決問題

所以就第一個直觀的想法就是
能不能取出之前模型估計的參數(shù)贸街,然后根據(jù)喂進去新的數(shù)據(jù),再進行計算

查了很多資料狸相,終于在這個的基礎(chǔ)上使用_arma_predict_out_of_sample這個內(nèi)置函數(shù)薛匪,進行了改進,才得以搞定脓鹃。不過一定要注意的是逸尖,這個只能進行樣本外的一步預(yù)測。

實踐部分

生成數(shù)據(jù)
import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARMA #模型
from statsmodels.tsa.arima_model import _arma_predict_out_of_sample

## 生成隨機數(shù)  

data=np.random.rand(200)

df= pd.DataFrame({'data':data})
分割train_dataset 和test_dataset
length = len(df)

train_data = df.iloc[0:int(length/8)*7,:]

test_data = df.iloc[int(length/8)*7:,:]
生成模型
result = ARMA(train_data['data'],order=(2,1)).fit()

pred = result.predict()
最關(guān)鍵的部分 瘸右,提取參數(shù)
params = result.params

residuals = result.resid

p = result.k_ar

q = result.k_ma

k_exog = result.k_exog

k_trend = result.k_trend

steps = 1
樣本內(nèi)數(shù)據(jù)驗證
## 樣本內(nèi)測試
in_data = train_data.iloc[0:11,:]
in_resid = residuals.iloc[0:11]

a = _arma_predict_out_of_sample(params, steps, in_resid, \
                       p, q, k_trend, k_exog,\
                       endog = in_data['data'], exog=None, start=len(in_data))

test_pred=pred[8:13]
test_pred
a[0]##  會發(fā)現(xiàn)沒什么誤差

樣本外預(yù)測,滑窗式操作

new_resid =  residuals.tail(3).copy()

new_data = train_data.tail(3).copy()

for  i in range(len(test_data)):
    
    print(i)
    
    ## temp_data  應(yīng)該增加最后一行娇跟,減去第一行
    a = _arma_predict_out_of_sample(params, steps, new_resid, \
               p, q, k_trend, k_exog,\
               endog = new_data['data'], exog=None, start=len(new_data))
    
    tomorrow_index = test_data.index[i]

    temp_resid = test_data.loc[tomorrow_index,'data'] - a[0]
    
    new_resid[tomorrow_index] = temp_resid
    
    new_resid.drop(new_resid.index[0],inplace=True)
    
    new_data = new_data.append(test_data.iloc[i,:])
    
    new_data.drop(new_data.index[0],inplace=True)
    
    pred[tomorrow_index] = a[0]

_arma_predict_out_of_sample具體參數(shù)解讀

  • start 參數(shù)

未完待續(xù)......

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市太颤,隨后出現(xiàn)的幾起案子逞频,更是在濱河造成了極大的恐慌,老刑警劉巖栋齿,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苗胀,死亡現(xiàn)場離奇詭異襟诸,居然都是意外死亡,警方通過查閱死者的電腦和手機基协,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門歌亲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澜驮,你說我怎么就攤上這事陷揪。” “怎么了杂穷?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵悍缠,是天一觀的道長。 經(jīng)常有香客問我耐量,道長飞蚓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任廊蜒,我火速辦了婚禮趴拧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘山叮。我一直安慰自己著榴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布屁倔。 她就那樣靜靜地躺著脑又,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锐借。 梳的紋絲不亂的頭發(fā)上问麸,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音瞎饲,去河邊找鬼。 笑死炼绘,一個胖子當(dāng)著我的面吹牛嗅战,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俺亮,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼驮捍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脚曾?” 一聲冷哼從身側(cè)響起东且,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎本讥,沒想到半個月后珊泳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲁冯,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年色查,在試婚紗的時候發(fā)現(xiàn)自己被綠了薯演。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡秧了,死狀恐怖跨扮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情验毡,我是刑警寧澤衡创,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晶通,受9級特大地震影響璃氢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜录择,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一拔莱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隘竭,春花似錦塘秦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至菱皆,卻和暖如春须误,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仇轻。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工京痢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人篷店。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓祭椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疲陕。 傳聞我的和親對象是個殘疾皇子方淤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容