最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

多元時(shí)間序列滾動(dòng)預(yù)測:ARIMA、回歸、ARIMAX模型分析|附代碼數(shù)據(jù)

2023-04-26 18:52 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=22849

最近我們被客戶要求撰寫關(guān)于多元時(shí)間序列滾動(dòng)預(yù)測的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。

當(dāng)需要為數(shù)據(jù)選擇最合適的預(yù)測模型或方法時(shí),預(yù)測者通常將可用的樣本分成兩部分:內(nèi)樣本(又稱 "訓(xùn)練集")和保留樣本(或外樣本,或 "測試集")。然后,在樣本中估計(jì)模型,并使用一些誤差指標(biāo)來評(píng)估其預(yù)測性能。

如果這樣的程序只做一次,那么這被稱為 "固定原點(diǎn) "評(píng)估。然而,時(shí)間序列可能包含離群值,一個(gè)差的模型可能比更合適的模型表現(xiàn)得更好。為了加強(qiáng)對(duì)模型的評(píng)估,我們使用了一種叫做 "滾動(dòng)原點(diǎn) "的方法。

滾動(dòng)原點(diǎn)是一種預(yù)測方法,根據(jù)這種方法,預(yù)測原點(diǎn)被連續(xù)更新,預(yù)測是由每個(gè)原點(diǎn)產(chǎn)生的(Tashman 2000)。這種方法允許獲得幾個(gè)時(shí)間序列的預(yù)測誤差,從而更好地了解模型的表現(xiàn)。

相關(guān)視頻:Python和R語言使用指數(shù)加權(quán)平均(EWMA),ARIMA自回歸移動(dòng)平均模型預(yù)測時(shí)間序列

如何實(shí)現(xiàn)呢?

下圖描述了滾動(dòng)原點(diǎn)的基本思想。白色單元格對(duì)應(yīng)的是樣本內(nèi)數(shù)據(jù),而淺灰色單元格對(duì)應(yīng)的是前三步的預(yù)測。該圖中時(shí)間序列有25個(gè)觀測值,預(yù)測從8個(gè)原點(diǎn)開始產(chǎn)生,從原點(diǎn)15開始。模型在每次迭代中都被重新估計(jì),并產(chǎn)生預(yù)測結(jié)果。之后,在系列的末尾增加一個(gè)新的觀測值,這個(gè)過程繼續(xù)進(jìn)行。當(dāng)沒有更多的數(shù)據(jù)需要添加時(shí),這個(gè)過程就會(huì)停止。這可以被認(rèn)為是一個(gè)滾動(dòng)的原點(diǎn),有一個(gè)固定的保留樣本量。這個(gè)程序的結(jié)果是產(chǎn)生了8個(gè)一到三步的預(yù)測。在此基礎(chǔ)上,我們可以計(jì)算出誤差測量方法,并選擇表現(xiàn)最好的模型。

從8個(gè)原點(diǎn)產(chǎn)生預(yù)測的另一個(gè)選擇是,從原點(diǎn)17而不是15開始(見下圖)。在這種情況下,程序一直持續(xù)到原點(diǎn)22,即產(chǎn)生最后一個(gè)三步超前預(yù)測的時(shí)候,然后繼續(xù)以遞減的預(yù)測范圍進(jìn)行。因此,兩步預(yù)測從原點(diǎn)23產(chǎn)生,只有一步預(yù)測從原點(diǎn)24產(chǎn)生。因此,我們得到8個(gè)一步預(yù)測,7個(gè)兩步預(yù)測和6個(gè)三步預(yù)測。這可以被認(rèn)為是一個(gè)滾動(dòng)的原點(diǎn),有一個(gè)非固定的保留樣本量??捎糜谠谛颖镜那闆r下,當(dāng)我們沒有多余的觀測值的時(shí)候。

最后,在上述兩種情況下,我們的樣本量都在增加。然而對(duì)于某些研究目的,我們可能需要一個(gè)恒定的內(nèi)樣本。下圖展示了這樣一種情況。在這種情況下,在每次迭代中,我們?cè)谙盗械哪┪苍黾右粋€(gè)觀察值,并從系列的開始刪除一個(gè)觀察值(深灰色單元)。

R實(shí)現(xiàn):一元時(shí)間序列ARIMA案例

R實(shí)現(xiàn)了對(duì)任何函數(shù)的滾動(dòng)原點(diǎn)估計(jì),有一個(gè)預(yù)定義的調(diào)用,并返回預(yù)期的值。

我們從一個(gè)簡單的例子開始,從正態(tài)分布生成序列。

x?<-?rnorm(100,100,10)

我們?cè)谶@個(gè)例子中使用ARIMA(0,1,1)。

predict(arima(x=data,order=c(0,1,1)),n.ahead=h

調(diào)用包括兩個(gè)重要元素:data和h。data指定了樣本內(nèi)值在我們要使用的函數(shù)中的位置。h將告訴我們的函數(shù),在選定的函數(shù)中指定了預(yù)測的范圍。在這個(gè)例子中,我們使用arima(x=data,order=c(0,1,1)),產(chǎn)生了一個(gè)想要的ARIMA(0,1,1)模型,然后我們使用predict(...,n. ahead=h),從該模型產(chǎn)生一個(gè)預(yù)測。

還需要指定函數(shù)應(yīng)該返回什么??梢允菞l件平均數(shù)(點(diǎn)預(yù)測),預(yù)測區(qū)間,模型的參數(shù)。然而,根據(jù)你使用的函數(shù)返回的內(nèi)容,滾動(dòng)預(yù)測返回的內(nèi)容有一些不同。如果它是一個(gè)矢量,那么滾動(dòng)預(yù)測將產(chǎn)生一個(gè)矩陣(列中有每個(gè)原點(diǎn)的值)。如果它是一個(gè)矩陣,那么就會(huì)返回一個(gè)數(shù)組。最后,如果它是一個(gè)列表,那么將返回一個(gè)列表的列表。

我們先從predict()函數(shù)中收集條件平均值。

我們可以使用滾動(dòng)原點(diǎn)從模型中產(chǎn)生預(yù)測結(jié)果。比方說,我們想要三步預(yù)測和8個(gè)原點(diǎn),所有其他參數(shù)的默認(rèn)值。

predro(x,?h?,?orig?)

該函數(shù)返回一個(gè)列表,其中包含我們要求的所有數(shù)值,再加上保留樣本的實(shí)際數(shù)值。我們可以根據(jù)這些值計(jì)算一些基本的誤差指標(biāo),例如,按比例的平均絕對(duì)誤差。

apply(abs(holdo?-?pred),1,mean)?/?mean(actual)

在這個(gè)例子中,我們使用apply()函數(shù),區(qū)分不同的預(yù)測期,并了解模型在每個(gè)預(yù)測期的表現(xiàn)。以類似的方式,我們可以評(píng)估其他一些模型的性能,并與第一個(gè)模型產(chǎn)生的誤差進(jìn)行比較。這些數(shù)字本身并不能說明什么,但如果我們把這個(gè)模型的表現(xiàn)與另一個(gè)模型進(jìn)行比較,那么我們就可以推斷出一個(gè)模型是否比另一個(gè)模型更適合數(shù)據(jù)。

我們還可以繪制來自滾動(dòng)原點(diǎn)的預(yù)測結(jié)果。

plot(Values1)

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

R語言用ARIMA模型,ARIMAX模型預(yù)測冰淇淋消費(fèi)時(shí)間序列數(shù)據(jù)

左右滑動(dòng)查看更多

01

02

03

04

在這個(gè)例子中,來自不同來源的預(yù)測結(jié)果是相互接近的。這是因?yàn)閿?shù)據(jù)是平穩(wěn)的,模型是相當(dāng)穩(wěn)定的。

如果我們看一下返回的矩陣,我們會(huì)注意到它們包含缺失值。

這是因?yàn)樵谀J(rèn)情況下,保留樣本被設(shè)置為非常數(shù)。內(nèi)樣本也被設(shè)置為非常數(shù),這就是為什么模型在每次迭代時(shí)都會(huì)對(duì)增加的樣本進(jìn)行重新估計(jì)。我們可用修改這一點(diǎn)。

predro(x,?h?,?ori?)

請(qǐng)注意,return2的值與return1的值不能直接比較,因?yàn)樗鼈兪怯刹煌钠瘘c(diǎn)生成的。這一點(diǎn)在我們繪圖時(shí)可以看出來。

plot(returned2)

如果你使用預(yù)測包中的函數(shù),可以用以下方式修改調(diào)用和返回值。

?"forecast(ets(data)?,level=95"?c("mean","lower","upper")

多元時(shí)間序列ARIMA案例

當(dāng)你有一個(gè)模型和一個(gè)時(shí)間序列時(shí),滾動(dòng)預(yù)測的是一個(gè)方便的方法。但是如果你需要將不同的模型應(yīng)用于不同的時(shí)間序列呢?我們會(huì)需要一個(gè)循環(huán)。在這種情況下,有一個(gè)簡單的方法來使用滾動(dòng)預(yù)測。現(xiàn)在引入幾個(gè)時(shí)間序列。

對(duì)于這個(gè)例子,我們需要一個(gè)返回值的數(shù)組。

array(NA,c(3,2,3,8))

在這里,我們將有3個(gè)時(shí)間序列,2個(gè)模型和來自8個(gè)來源的3步超前預(yù)測。我們的模型將被保存在一個(gè)單獨(dú)的列表中。在這個(gè)例子中,我們將有ARIMA(0,1,1)和ARIMA(1,1,0)。

?list(c(0,1,1),?c(1,1,0))

我們從函數(shù)中返回相同的預(yù)測值,但我們需要改變調(diào)用方式,因?yàn)楝F(xiàn)在我們必須將這兩種不同的模型考慮在內(nèi)。

"predict(arima(data,Models[[i]])ahead=h)"

我們沒有直接指定模型,而是使用列表中的第i個(gè)元素。

我們還想從保留樣本中保存實(shí)際值,以便能夠計(jì)算誤差。

這個(gè)數(shù)組有3個(gè)時(shí)間序列和來自8個(gè)原點(diǎn)的3步超前預(yù)測的維度。

最后,我們可以寫一個(gè)循環(huán)并產(chǎn)生預(yù)測結(jié)果。

for(j?in?1:3)??for(i?in?1:2)predro(data,?h?,?or=8)

比較兩者在不同時(shí)間序列上的表現(xiàn)。

exp(mean(log(apply(Holdout?-?Fore??/?apply(abs(Holdout?-?Fore?))

?

因此,根據(jù)這些結(jié)果,可以得出結(jié)論,在我們的三個(gè)時(shí)間序列上,ARIMA(0,1,1)平均來說比ARIMA(1,1,0)更準(zhǔn)確。

線性回歸和ARIMAX案例

我們的最后一個(gè)例子,我們創(chuàng)建數(shù)據(jù)框并擬合線性回歸。

請(qǐng)注意,在這個(gè)例子中,lm()函數(shù)中實(shí)現(xiàn)的回歸依賴于數(shù)據(jù)框架,不使用預(yù)測范圍。

predict(lm(y~x1+x2+x3,xre),newdat

此外,函數(shù)predict.lm()返回的是一個(gè)帶有數(shù)值的矩陣,而不是一個(gè)列表。最后調(diào)用滾動(dòng)預(yù)測。

pred(y,?h?,?ori??)

在這種情況下, 我們需要在調(diào)用的數(shù)據(jù)參數(shù)中提供因變量, 因?yàn)樵摵瘮?shù)需要提取holdout的值.

predict(lm(?xreg?,new?=xreg?" predro(?$y,?h?,?or??)plot(?Return)

作為最后一個(gè)例子,我們考慮以下數(shù)據(jù)的ARIMAX模型。

并相應(yīng)地修改調(diào)用。

ourCall?<-?"predict(arima(x=data,?order=c(0,1,1),?xreg=xreg[counti,]),?n.ahead=h,?newxreg=xreg[counto,])"

考慮到現(xiàn)在我們處理的是ARIMA,我們需要同時(shí)指定數(shù)據(jù)和h。此外,xreg與之前的例子不同,因?yàn)樗F(xiàn)在不應(yīng)該包含因變量。

如果你使用ETSX模型,調(diào)用可以簡化為:

?"es(x=dat,?xreg,?h=h"

最后,上面提到的所有例子都可以并行完成,特別是當(dāng)數(shù)據(jù)非常多且樣本量很大時(shí)。

參考文獻(xiàn)

Davydenko, Andrey, and Robert Fildes. 2013. “Measuring Forecasting Accuracy: The Case of Judgmental Adjustments to Sku-Level Demand Forecasts.”?International Journal of Forecasting?29 (3). Elsevier B.V.: 510–22.?https://doi.org/10.1016/j.ijforecast.2012.09.002.

Petropoulos, Fotios, and Nikolaos Kourentzes. 2015. “Forecast combinations for intermittent demand.”?Journal of the Operational Research Society?66 (6). Nature Publishing Group: 914–24.?https://doi.org/10.1057/jors.2014.62.

本文摘選?《?R語言多元時(shí)間序列滾動(dòng)預(yù)測:ARIMA、回歸、ARIMAX模型分析?》?,點(diǎn)擊“閱讀原文”獲取全文完整資料。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

【視頻】時(shí)間序列分析:ARIMA-ARCH / GARCH模型分析股票價(jià)格
時(shí)間序列GARCH模型分析股市波動(dòng)率
PYTHON用GARCH、離散隨機(jī)波動(dòng)率模型DSV模擬估計(jì)股票收益時(shí)間序列與蒙特卡洛可視化
極值理論 EVT、POT超閾值、GARCH 模型分析股票指數(shù)VaR、條件CVaR:多元化投資組合預(yù)測風(fēng)險(xiǎn)測度分析
Garch波動(dòng)率預(yù)測的區(qū)制轉(zhuǎn)移交易策略
金融時(shí)間序列模型ARIMA 和GARCH 在股票市場預(yù)測應(yīng)用
時(shí)間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價(jià)格
R語言風(fēng)險(xiǎn)價(jià)值:ARIMA,GARCH,Delta-normal法滾動(dòng)估計(jì)VaR(Value at Risk)和回測分析股票數(shù)據(jù)
R語言GARCH建模常用軟件包比較、擬合標(biāo)準(zhǔn)普爾SP 500指數(shù)波動(dòng)率時(shí)間序列和預(yù)測可視化
Python金融時(shí)間序列模型ARIMA 和GARCH 在股票市場預(yù)測應(yīng)用
MATLAB用GARCH模型對(duì)股票市場收益率時(shí)間序列波動(dòng)的擬合與預(yù)測R語言GARCH-DCC模型和DCC(MVT)建模估計(jì)
Python 用ARIMA、GARCH模型預(yù)測分析股票市場收益率時(shí)間序列
R語言中的時(shí)間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價(jià)格
R語言ARIMA-GARCH波動(dòng)率模型預(yù)測股票市場蘋果公司日收益率時(shí)間序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模擬進(jìn)行股價(jià)預(yù)測
R語言時(shí)間序列GARCH模型分析股市波動(dòng)率
R語言ARMA-EGARCH模型、集成預(yù)測算法對(duì)SPX實(shí)際波動(dòng)率進(jìn)行預(yù)測
matlab實(shí)現(xiàn)MCMC的馬爾可夫轉(zhuǎn)換ARMA - GARCH模型估計(jì)
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模擬進(jìn)行股價(jià)預(yù)測
使用R語言對(duì)S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略
R語言用多元ARMA,GARCH ,EWMA, ETS,隨機(jī)波動(dòng)率SV模型對(duì)金融時(shí)間序列數(shù)據(jù)建模
R語言股票市場指數(shù):ARMA-GARCH模型和對(duì)數(shù)收益率數(shù)據(jù)探索性分析
R語言多元Copula GARCH 模型時(shí)間序列預(yù)測
R語言使用多元AR-GARCH模型衡量市場風(fēng)險(xiǎn)
R語言中的時(shí)間序列分析模型:ARIMA-ARCH / GARCH模型分析股票價(jià)格
R語言用Garch模型和回歸模型對(duì)股票價(jià)格分析
GARCH(1,1),MA以及歷史模擬法的VaR比較
matlab估計(jì)arma garch 條件均值和方差模型R語言POT超閾值模型和極值理論EVT分析


多元時(shí)間序列滾動(dòng)預(yù)測:ARIMA、回歸、ARIMAX模型分析|附代碼數(shù)據(jù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
余江县| 定日县| 高淳县| 鄂尔多斯市| 谷城县| 蓝田县| 莲花县| 遂昌县| 横山县| 贵州省| 若尔盖县| 海兴县| 旅游| 金乡县| 拉孜县| 花莲县| 沈丘县| 亳州市| 大名县| 峨眉山市| 兴业县| 宜宾市| 宁强县| 玉林市| 临武县| 兰西县| 两当县| 青阳县| 门头沟区| 塘沽区| 温泉县| 额敏县| 鱼台县| 静乐县| 安义县| 绥阳县| 闸北区| 长治县| 南阳市| 五指山市| 安福县|