用ARIMA模型做需求預(yù)測


本文結(jié)構(gòu):

  • 時(shí)間序列分析咖熟?
  • 什么是ARIMA圃酵?
  • ARIMA數(shù)學(xué)模型?
  • input球恤,output 是什么辜昵?
  • 怎么用?-代碼實(shí)例
  • 常見問題咽斧?

時(shí)間序列分析堪置?

時(shí)間序列,就是按時(shí)間順序排列的张惹,隨時(shí)間變化的數(shù)據(jù)序列舀锨。
生活中各領(lǐng)域各行業(yè)太多時(shí)間序列的數(shù)據(jù)了,銷售額宛逗,顧客數(shù)坎匿,訪問量,股價(jià)雷激,油價(jià)替蔬,GDP,氣溫屎暇。承桥。。

隨機(jī)過程的特征有均值根悼、方差凶异、協(xié)方差等。
如果隨機(jī)過程的特征隨著時(shí)間變化挤巡,則此過程是非平穩(wěn)的剩彬;相反,如果隨機(jī)過程的特征不隨時(shí)間而變化矿卑,就稱此過程是平穩(wěn)的喉恋。
下圖所示,左邊非穩(wěn)定母廷,右邊穩(wěn)定瀑晒。


非平穩(wěn)時(shí)間序列分析時(shí),若導(dǎo)致非平穩(wěn)的原因是確定的徘意,可以用的方法主要有趨勢擬合模型、季節(jié)調(diào)整模型轩褐、移動(dòng)平均椎咧、指數(shù)平滑等方法。
若導(dǎo)致非平穩(wěn)的原因是隨機(jī)的,方法主要有ARIMA(autoregressive integrated moving average)及自回歸條件異方差模型等勤讽。


什么是ARIMA蟋座?

ARIMA (Auto Regressive Integrated Moving Average) 可以用來對時(shí)間序列進(jìn)行預(yù)測,常被用于需求預(yù)測和規(guī)劃中脚牍。

可以用來對付 ‘隨機(jī)過程的特征隨著時(shí)間變化而非固定’ 且 ‘導(dǎo)致時(shí)間序列非平穩(wěn)的原因是隨機(jī)而非確定’ 的問題向臀。不過,如果是從一個(gè)非平穩(wěn)的時(shí)間序列開始诸狭, 首先需要做差分券膀,直到得到一個(gè)平穩(wěn)的序列。

模型的思想就是從歷史的數(shù)據(jù)中學(xué)習(xí)到隨時(shí)間變化的模式驯遇,學(xué)到了就用這個(gè)規(guī)律去預(yù)測未來芹彬。

ARIMA(p,d,q)模型,其中 d 是差分的階數(shù)叉庐,用來得到平穩(wěn)序列舒帮。

AR是自回歸, p為相應(yīng)的自回歸項(xiàng)。

MA為移動(dòng)平均陡叠,q為相應(yīng)的移動(dòng)平均項(xiàng)數(shù)玩郊。


ARIMA數(shù)學(xué)模型?

ARIMA(p枉阵,d译红,q)模型是ARMA(p,q)模型的擴(kuò)展岭妖。

ARIMA(p临庇,d,q)模型可以表示為:



其中L 是滯后算子(Lag operator)昵慌,d in Z, d>0假夺。

AR:
當(dāng)前值只是過去值的加權(quán)求和。


MA:
過去的白噪音的移動(dòng)平均斋攀。


ARMA:
AR和MA的綜合已卷。


ARIMA:
和ARMA的區(qū)別,就是公式左邊的x變成差分算子淳蔼,保證數(shù)據(jù)的穩(wěn)定性侧蘸。


差分算子就是:


令 wt 為:


則 ARIMA 就可以寫成:



input,output 是什么鹉梨?

輸入歷史數(shù)據(jù)讳癌,預(yù)測未來時(shí)間點(diǎn)的數(shù)據(jù)。


怎么用存皂?-代碼實(shí)例

本文參考了:時(shí)間序列實(shí)例
另外推薦大家看這篇晌坤,36大數(shù)據(jù)上有一個(gè)python版講的不錯(cuò)逢艘,里面對穩(wěn)定性的定量檢驗(yàn)的講解比較詳細(xì):時(shí)間序列預(yù)測全攻略-附帶Python代碼

ARIMA模型運(yùn)用的基本流程有幾下幾步:

  1. 數(shù)據(jù)可視化,識別平穩(wěn)性骤菠。
  2. 對非平穩(wěn)的時(shí)間序列數(shù)據(jù)它改,做差分,得到平穩(wěn)序列商乎。
  3. 建立合適的模型央拖。
    平穩(wěn)化處理后,若偏自相關(guān)函數(shù)是截尾的鹉戚,而自相關(guān)函數(shù)是拖尾的鲜戒,則建立AR模型;
    若偏自相關(guān)函數(shù)是拖尾的崩瓤,而自相關(guān)函數(shù)是截尾的袍啡,則建立MA模型;
    若偏自相關(guān)函數(shù)和自相關(guān)函數(shù)均是拖尾的却桶,則序列適合ARMA模型境输。
  4. 模型的階數(shù)在確定之后,對ARMA模型進(jìn)行參數(shù)估計(jì)颖系,比較常用是最小二乘法進(jìn)行參數(shù)估計(jì)嗅剖。
  5. 假設(shè)檢驗(yàn),判斷(診斷)殘差序列是否為白噪聲序列嘁扼。
  6. 利用已通過檢驗(yàn)的模型進(jìn)行預(yù)測信粮。

使用ARIMA模型對裙子長度預(yù)測

1、加載數(shù)據(jù)

skirts <- scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat", skip=5)
str(skirts)
head(skirts)
boxplot(skirts)
length(skirts)

2趁啸、把數(shù)據(jù)轉(zhuǎn)化為是時(shí)間序列

skirts_ts <- ts(skirts, start=c(1886), frequency=1)

1)查看時(shí)間序列對應(yīng)的時(shí)間

skirts_ts 

2)畫出時(shí)間序列圖

plot.ts(skirts_ts)

從圖可知:女人裙子邊緣的直徑做成的時(shí)間序列數(shù)據(jù)强缘,從 1866 年到 1911 年在平均值上是不平穩(wěn)的

3、做差分得到平穩(wěn)序列

1)做時(shí)間序列的一階差分

skirts_diff <- diff(skirts_ts, differences = 1)
plot.ts(skirts_diff)

從一階差分的圖中可以看出不傅,數(shù)據(jù)仍是不平穩(wěn)的旅掂,繼續(xù)差分

2)做時(shí)間序列的二階差分

skirts_diff2 <- diff(skirts_ts, differences = 2)
plot.ts(skirts_diff2)

二次差分后的時(shí)間序列在均值和方差上看起來是平穩(wěn)了

4、找到合適的ARIMA模型

尋找 ARIMA(p,d,q)中合適的 p 值和 q

1)自相關(guān)圖ACF

acf(skirts_diff2, lag.max = 20)
acf(skirts_diff2, lag.max = 20, plot = F)

自相關(guān)圖顯示滯后1階自相關(guān)值基本沒有超過邊界值访娶,雖然5階自相關(guān)值超出邊界商虐,那么很可能屬于偶然出現(xiàn)的,而自相關(guān)值在其他上都沒有超出顯著邊界崖疤, 而且我們可以期望 1 到 20 之間的會(huì)偶爾超出 95%的置信邊界秘车。 自相關(guān)圖5階后結(jié)尾

2)偏相關(guān)圖PACF

pacf(skirts_diff2, lag.max = 20)
pacf(skirts_diff2, lag.max = 20, plot = F)

偏自相關(guān)值選1階后結(jié)尾
故我們的ARMIA模型為armia(1,2,5

3)使用auto.arima()函數(shù),自動(dòng)獲取最佳的ARIMA模型

library(forecast)
auto.arima(skirts_ts, ic=c("aicc", "aic", "bic"), trace = T)

Best model: ARIMA(1,2,0)

5劫哼、建立ARIMA模型:并對比arima(1, 2, 0)與arima(1, 2, 5)模型

1)arima(1, 2, 0)模型

(skirts_arima <- arima(skirts_ts, order = c(1, 2, 0)))

aic = 391.33

2)arima(1, 2, 5)模型

(skirts_arima <- arima(skirts_ts, order = c(1, 2, 5)))

aic = 381.6

AIC是赤池消息準(zhǔn)則SC是施瓦茨準(zhǔn)則叮趴,當(dāng)兩個(gè)數(shù)值最小時(shí),則是最優(yōu)滯后分布的長度权烧。我們進(jìn)行模型選擇時(shí)眯亦,AIC值越小越好咳蔚。所以arima(1, 2, 5)模型較好

6、預(yù)測:預(yù)測5年后裙子的邊緣直徑

(skirts_forecast <- forecast.Arima(skirts_arima, h=5, level = c(99.5)))
plot.forecast(skirts_forecast)

7搔驼、檢驗(yàn)

觀察 ARIMA 模型的預(yù)測誤差是否是平均值為 0 且方差為常數(shù)的正態(tài)分布,同時(shí)也要觀察連續(xù)預(yù)測誤差是否自相關(guān)

1)檢驗(yàn)預(yù)測誤差的自相關(guān)性

tsdiag(skirts_arima)

下面第一個(gè)圖表代表估計(jì)模型誤差的繪圖侈询。圖中豎線的長度比較相似舌涨,都處在穩(wěn)定范圍之內(nèi),即估計(jì)的模型沒產(chǎn)生不符合要求的誤差分布扔字。

第二張繪圖囊嘉,顯示估計(jì)的模型沒造成誤差之間的任何關(guān)系。這是符合數(shù)據(jù)生成時(shí)每個(gè)數(shù)據(jù)都是獨(dú)立的這個(gè)前提的革为。由此可見扭粱,這ACF圖符合檢測要求。

第三張圖震檩,也就是Ljung-Box 指標(biāo)琢蛤。這個(gè)指標(biāo)可對每一個(gè)時(shí)間序列的延遲進(jìn)行顯著性的評估。判定技巧是抛虏,P-value點(diǎn)的高度越高博其,我們的模型越可信。

acf(skirts_forecast$residuals, lag.max = 20)
Box.test(skirts_forecast$residuals, lag=20, type = "Ljung-Box")

p-value = 0.9871
相關(guān)圖顯示出在滯后1-20階中樣本自相關(guān)值都沒有超出顯著置信邊界迂猴,而且Ljung-Box檢驗(yàn)的p值為0.99慕淡,所以我們推斷在滯后1-20階(lags1-20)中沒明顯證據(jù)說明預(yù)測誤差是非零自相關(guān)的。

Acf檢驗(yàn)說明:殘差沒有明顯的自相關(guān)性沸毁,Ljung-Box測試顯示:所有的P-value>0.05峰髓,說明殘差為白噪聲。

2)判斷預(yù)測誤差是否是平均值為零且方差為常數(shù)的正態(tài)分布
做預(yù)測誤差的時(shí)間曲線圖和直方圖(具有正態(tài)分布曲線)

預(yù)測誤差的均值是否為0

plot.ts(skirts_forecast$residuals)

自定義判斷預(yù)測誤差的方差是正態(tài)分布的函數(shù)

plotForecastErrors <- function(forecasterrors){
  #畫預(yù)測誤差的直方圖
  hist(forecasterrors, col="red", freq = F)
  #畫方差是預(yù)測誤差數(shù)據(jù)的方差息尺,平均值是0的正態(tài)分布數(shù)據(jù)的線
  mysd <- sd(forecasterrors)
  mynorm <- rnorm(10000, mean = 0, sd = mysd)
  myhist <- hist(mynorm, plot = F)
  points(myhist$mids, myhist$density, type="l", col="blue", lwd=2)
}
plotForecastErrors(skirts_forecast$residuals)

下圖顯示時(shí)間序列的直方圖顯示預(yù)測誤大致是正態(tài)分布的且平均值接近于0携兵。因此,把預(yù)測誤差看作平均值為0方差為服從零均值掷倔、方差不變的正態(tài)分布是合理的眉孩。

既然依次連續(xù)的預(yù)測誤差看起來不是相關(guān),而且服從零均值勒葱、方差不變的正態(tài)分布浪汪,那么對于裙子直徑的數(shù)據(jù),ARIMA(1,2,5)看起來是可以提供非常合適預(yù)測的模型凛虽。


常見問題死遭?

1.ARIMA建模的步驟

  1. 觀察數(shù)據(jù)是否是時(shí)間序列數(shù)據(jù),是否有seasonal等因素凯旋。
  2. transform:Box-correlation呀潭,保證variance是uniform的钉迷。如果用box-cor還不能穩(wěn)定,還要繼續(xù)深入挖掘钠署。
  3. ACF/PACF 是為了找到 MA 和 AR 的order糠聪。
  4. d=0-stationarity,1谐鼎,2-non stationarity
  5. 白噪音check:確定這個(gè)模型是optimize的舰蟆,mean=0,平方差=1.
  6. 誤差是白噪音的時(shí)候狸棍,model就ok了身害,就可以預(yù)測了


2.決定ARIMA參數(shù)的方法

d是差分的階數(shù),幾階后就可以保證穩(wěn)定:


modelfit草戈,計(jì)算出來的參數(shù)是 1塌鸯,1,1 唐片,但可能 2丙猬,1,1 預(yù)測效果更好牵触,那就用后者淮悼。


或者用AIC比較倆模型。


推薦閱讀:

這一篇實(shí)例也不錯(cuò):python時(shí)間序列分析

AR和MA的定義揽思,有圖比較:

關(guān)于ACF袜腥,PACF可以看Duke的材料:

關(guān)于AIC,BIC:aic-bic-vs-crossvalidation

理論簡介的不錯(cuò):

需求預(yù)測與分倉規(guī)劃:

一個(gè)課程:Time Series Forecasting Theory | AR, MA, ARMA, ARIMA


歷史技術(shù)博文鏈接匯總

我是 不會(huì)停的蝸牛 Alice
85后全職主婦
喜歡人工智能钉汗,行動(dòng)派
創(chuàng)造力羹令,思考力,學(xué)習(xí)力提升修煉進(jìn)行中
歡迎您的喜歡损痰,關(guān)注和評論福侈!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卢未,隨后出現(xiàn)的幾起案子肪凛,更是在濱河造成了極大的恐慌,老刑警劉巖辽社,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伟墙,死亡現(xiàn)場離奇詭異,居然都是意外死亡滴铅,警方通過查閱死者的電腦和手機(jī)戳葵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汉匙,“玉大人拱烁,你說我怎么就攤上這事生蚁。” “怎么了戏自?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵邦投,是天一觀的道長。 經(jīng)常有香客問我擅笔,道長尼摹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任剂娄,我火速辦了婚禮,結(jié)果婚禮上玄呛,老公的妹妹穿的比我還像新娘阅懦。我一直安慰自己,他們只是感情好徘铝,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布耳胎。 她就那樣靜靜地躺著,像睡著了一般惕它。 火紅的嫁衣襯著肌膚如雪怕午。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天淹魄,我揣著相機(jī)與錄音郁惜,去河邊找鬼。 笑死甲锡,一個(gè)胖子當(dāng)著我的面吹牛兆蕉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缤沦,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼虎韵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缸废?” 一聲冷哼從身側(cè)響起包蓝,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎企量,沒想到半個(gè)月后测萎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梁钾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年绳泉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姆泻。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡零酪,死狀恐怖冒嫡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情四苇,我是刑警寧澤孝凌,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站月腋,受9級特大地震影響蟀架,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榆骚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一片拍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妓肢,春花似錦捌省、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喊废,卻和暖如春祝高,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背污筷。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工工闺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓣蛀。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓斤寂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揪惦。 傳聞我的和親對象是個(gè)殘疾皇子遍搞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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

  • 1 概念 ARIMA模型,全稱為自回歸積分滑動(dòng)平均模型(Autoregressive Integrated ...
    風(fēng)逝流沙閱讀 41,113評論 1 48
  • 1. 說明 ?ARMA回歸滑動(dòng)平均模型(Autoregressive Moving Average Model,簡...
    xieyan0811閱讀 3,985評論 0 11
  • 目錄 平穩(wěn)序列 判斷樣本的平穩(wěn)性 時(shí)間序列模型 參數(shù)選擇 實(shí)驗(yàn)代碼 1. 平穩(wěn)序列 時(shí)間序列是一列觀測值的集合, ...
    胡拉哥閱讀 11,462評論 0 23
  • 作者/蓋是那么美 致@布茶 予獨(dú)愛蓮之出淤泥而不染器腋,濯清漣而不妖溪猿,中通外直,不蔓不枝纫塌,香遠(yuǎn)益清诊县,亭亭凈植,可遠(yuǎn)觀而...
    蓋是那么美閱讀 757評論 13 15
  • #day 最后一天# 先說一下今天的練習(xí)吧措左,一下子把聲調(diào)加進(jìn)去依痊,我發(fā)現(xiàn)文章的前幾段還是可以做到的,但是越到文章的后...
    賀笙閱讀 165評論 0 0