常用的預(yù)測(cè)方法(如回歸分析),需要較大的樣本锯仪,如果樣本較小,常造成較大的誤差趾盐,使預(yù)測(cè)目標(biāo)失效庶喜⌒±埃灰度預(yù)測(cè)模型(Gray Forecast Model)是通過(guò)利用少量的、不完全的信息久窟,建立數(shù)學(xué)模型并做出預(yù)測(cè)的一種預(yù)測(cè)方法秩冈。本文將對(duì)這種預(yù)測(cè)模型進(jìn)行詳細(xì)介紹。由于部分公式書(shū)寫(xiě)麻煩斥扛,本文直接插入了公式圖片入问。
1. 灰度系統(tǒng)理論
灰度系統(tǒng)理論是由華中理工大學(xué)鄧聚龍教授于1982年提出并發(fā)展而成的解決灰色系統(tǒng)的理論和方法,該方法將一般的系統(tǒng)論稀颁、信息論和控制論的觀點(diǎn)與數(shù)學(xué)方法結(jié)合在一起芬失。首先看一下灰度理論中的幾個(gè)概念。
1.1 灰度系統(tǒng)
灰度系統(tǒng)是指“部分信息已知峻村,部分未知”的“小樣本”麸折,“貧信息”的不確定性系統(tǒng)。系統(tǒng)中各因素間有不確定的關(guān)系粘昨。
作為兩個(gè)極端垢啼,如果系統(tǒng)中信息完全確定,則成為白色系統(tǒng)张肾;相反芭析,信息完全不確定的系統(tǒng)為黑色系統(tǒng),只能通過(guò)它與外界的聯(lián)系來(lái)加以觀測(cè)研究吞瞪。區(qū)別白色和黑色系統(tǒng)的重要標(biāo)志是系統(tǒng)中各因素之間是否具有確定關(guān)系馁启。
1.2 灰度系統(tǒng)的特點(diǎn)
灰色系統(tǒng)可以充分利用已知信息尋求系統(tǒng)的運(yùn)動(dòng)規(guī)律,使用灰色數(shù)學(xué)處理不確定量芍秆,使之量化惯疙,因此,灰色系統(tǒng)理論能夠處理貧信息或小樣本的系統(tǒng)妖啥。
2. 灰色預(yù)測(cè)方法
灰度預(yù)測(cè)法是對(duì)灰色系統(tǒng)進(jìn)行預(yù)測(cè)的方法霉颠。通過(guò)關(guān)聯(lián)分析和數(shù)據(jù)處理來(lái)尋找系統(tǒng)變動(dòng)的規(guī)律,生成有較強(qiáng)規(guī)律性的數(shù)據(jù)序列荆虱。然后用來(lái)預(yù)測(cè)兩種不同的目標(biāo)蒿偎,一種是預(yù)測(cè)某時(shí)刻的特征量來(lái)預(yù)測(cè)未來(lái)發(fā)展趨勢(shì)。另一種是固定特征量閾值怀读,通過(guò)分析特征量出現(xiàn)時(shí)刻的規(guī)律诉位,預(yù)測(cè)未來(lái)達(dá)到閾值的時(shí)間點(diǎn)。
2.1 灰色預(yù)測(cè)類型
(1) 數(shù)列預(yù)測(cè)菜枷。用觀察到的反映預(yù)測(cè)對(duì)象特征的時(shí)間序列構(gòu)造灰色預(yù)測(cè)模型苍糠,預(yù)測(cè)未來(lái)某一時(shí)刻的特征量,或達(dá)到某一特征量的時(shí)間啤誊。
(2) 災(zāi)變或異常值預(yù)測(cè)椿息。利用灰度模型預(yù)測(cè)異常值出現(xiàn)的特定時(shí)間歹袁。
(3) 季節(jié)災(zāi)變或異常值預(yù)測(cè)。預(yù)測(cè)災(zāi)變或異常值發(fā)生在一年內(nèi)哪個(gè)時(shí)間區(qū)間或季節(jié)內(nèi)寝优。
(4) 拓?fù)漕A(yù)測(cè)条舔。將原始數(shù)據(jù)做曲線,在曲線上按照閾值尋找發(fā)生的所有時(shí)間點(diǎn)乏矾,并以該時(shí)間點(diǎn)構(gòu)成的序列構(gòu)建預(yù)測(cè)模型孟抗,建立模型預(yù)測(cè)該閾值的時(shí)間點(diǎn)。
(5) 系統(tǒng)預(yù)測(cè)钻心。 通過(guò)對(duì)系統(tǒng)行為特征指標(biāo)建立一組相關(guān)聯(lián)的灰度預(yù)測(cè)模型凄硼,預(yù)測(cè)系統(tǒng)中眾多變量間的相互協(xié)調(diào)關(guān)系的變化。
下面我們對(duì)具體的集中預(yù)測(cè)模型進(jìn)行介紹捷沸。
3. GM(1,1)模型
3.1 數(shù)據(jù)/數(shù)列生成
我們獲取到的未作處理的數(shù)據(jù)被稱為原始數(shù)列摊沉,按照某種要求經(jīng)過(guò)處理后生成的數(shù)列為生成數(shù)列,我們可以從中發(fā)現(xiàn)原始數(shù)列中沒(méi)有表現(xiàn)出的內(nèi)在規(guī)律痒给。
常用的數(shù)據(jù)處理方法有累加生成说墨、累減生成、均值生成苍柏。
(1) 累加生成
通過(guò)依次累加某時(shí)刻之前的數(shù)據(jù)得到新的數(shù)列尼斧,記為AGO(Accumulating Ceneration Operator)。
設(shè)x^(0)為原始序列试吁,既有
![][1]
[1]: http://latex.codecogs.com/svg.latex?$x{(0)}=[x{(0)}(1),x{(0)}(2),...,x{(0)}(n)]$
按照下列公式生成新的累加數(shù)列:
![][2]
[2]: http://latex.codecogs.com/svg.latex?$x{(1)}(k)=\sum_{i=1}{k}x^{(0)}(i);k=1,2,...,n$
則稱x(1)為x(0)的一次累加生成數(shù)列:
![][3]
[3]: http://latex.codecogs.com/svg.latex?$x{(1)}=[x{(1)}(1),x{(1)}(2),...,x{(1)}(n)]$
類似的有r次累加生成:
![][4]
[4]: http://latex.codecogs.com/svg.latex?$x{(r)}(k)=\sum_{i=1}{k}x^{(r-1)}(i);k=1,2,...,n$
(2)累減生成
對(duì)原始數(shù)列的數(shù)據(jù)依次作前后兩個(gè)數(shù)據(jù)相減的運(yùn)算棺棵,記為IAGO(Inverse Accumulating Ceneration Operator)。累減生成可以將累加生成序列還原成非生成序列熄捍。
我們?cè)O(shè)x^(1)為原始序列烛恤,則有
![][5]
[5]: http://latex.codecogs.com/svg.latex?$x{(1)}=[x{(1)}(1),x{(1)}(2),...,x{(1)}(n)]$
如果令:
![][6]
[6]: http://latex.codecogs.com/svg.latex?$x{(0)}(k)=x{(1)}(k)-x^{(1)}(k-1)$
則可生成一次累減序列x^(0):
![][7]
[7]: http://latex.codecogs.com/svg.latex?$x{(0)}=[x{(0)}(1),x{(0)}(2),...,x{(0)}(n)]$
更一般地,有:
![][8]
[8]: http://latex.codecogs.com/svg.latex?$x{(r-1)}(k)=x{(r)}(k)-x^{(r)}(k-1)$
均值生成序列分為鄰均值生成和非鄰均值生成兩種余耽,就暫時(shí)不在本文詳細(xì)介紹了缚柏,以后再補(bǔ)充。
3.2模型建立
給定觀測(cè)數(shù)據(jù)序列
![][9]
[9]: http://latex.codecogs.com/svg.latex?$x{(0)}=[x{(0)}(1),x{(0)}(2),...,x{(0)}(n)]$
經(jīng)過(guò)一次累加后宾添,得到序列:
![][10]
[10]: http://latex.codecogs.com/svg.latex?$x{(1)}=[x{(1)}(1),x{(1)}(2),...,x{(1)}(n)]$
設(shè)x^(1)滿足一階常微分方程
![][11]
[11]: http://latex.codecogs.com/svg.latex?${dx{(1)}}/{dt}+ax{(1)}=u$
其中a是發(fā)展灰數(shù)或發(fā)展系數(shù),u為內(nèi)生控制灰數(shù)或灰作用量柜裸,是對(duì)系統(tǒng)的常定輸入缕陕。該方程滿足當(dāng)初始條件為:
![][12]
[12]: http://latex.codecogs.com/svg.latex?$when:t=t_{0},x{(1)}=x{(1)}(t_0)$
則有解為:
![][13]
[13]: http://latex.codecogs.com/svg.latex?$x{(1)}(t)=[x{(1)}(t_0)-u/a]e^{-a(t-t_0)}+u/a$
對(duì)等間距取樣的離散值,則有
![][19]
[19]: http://latex.codecogs.com/svg.latex?$when:t_0=1\\x{(1)}(k+1)=[x{(1)}(1)-u/a]e^{-ak}+u/a$
由于x(1)對(duì)t求導(dǎo)涉及x(1)的兩個(gè)時(shí)刻值,因此疙挺,x^(1)(i)取前后兩個(gè)時(shí)刻的平均代替更合理扛邑。即有:
![][14]
[14]: http://latex.codecogs.com/svg.latex?$1/2[x{(r)}(i)+x{(r)}(i-1)],(i=2,3,...,N)$
寫(xiě)成矩陣表達(dá)的形式為:
![][15]
[15]: http://latex.codecogs.com/svg.latex?$\begin{bmatrix}x{(0)}(2)\x{(0)}(3)\...\x{(0)}(N)\end{bmatrix}=\begin{bmatrix}-1/2[x{(1)}(2)+x{(1)}(1)]&1\-1/2[x{(1)}(3)+x{(1)}(2)]&1\...\-1/2[x{(1)}(N)+x^{(1)}(N-1)]&1\end{bmatrix}\begin{bmatrix}a\u\end{bmatrix}$
如果用符號(hào)代表上式的向量或矩陣,則有
![][16]
[16]: http://latex.codecogs.com/svg.latex?$y=BU$
其中铐然,
![][17]
[17]: http://latex.codecogs.com/svg.latex?$U=[a,u]{T}\\y=[x{(0)}(2),x{(0)}(3),...,x{(0)}(N)]{T}\\B=\begin{bmatrix}-1/2[x{(1)}(2)+x{(1)}(1)]&1\-1/2[x{(1)}(3)+x{(1)}(2)]&1\...\-1/2[x{(1)}(N)+x^{(1)}(N-1)]&1\end{bmatrix}$
利用最小二乘法估計(jì)上式蔬崩,可得:
![][18]
[18]: http://latex.codecogs.com/svg.latex?\hat{U}=\begin{bmatrix}\hat{a}\\hat{u}\end{bmatrix}=(B{T}B){-1}B^{T}y
將上式得到的估計(jì)值a和u帶入求離散解的公式恶座,得到時(shí)間響應(yīng)方程
![][20]
[20]: http://latex.codecogs.com/svg.latex?\hat{x{(1)}}(k+1)=[x{(1)}(1)-\frac{\hat{u}}{\hat{a}}]e^{-\hat{a}k}+\frac{\hat{u}}{\hat{a}}
當(dāng)k=1,2,...,N-1時(shí),由上式計(jì)算得到的結(jié)果是擬合值沥阳,當(dāng)k>=N時(shí)跨琳,結(jié)果為預(yù)測(cè)值。這是相對(duì)于一次累加序列的擬合值桐罕,用后減運(yùn)算還原脉让,就可得原始序列的擬合值和預(yù)測(cè)值。
3.3 精度檢驗(yàn)
(1) 殘差檢驗(yàn):預(yù)測(cè)得到的一次累加序列進(jìn)行累減計(jì)算功炮,得到原始序列估計(jì)值溅潜,再計(jì)算其與原始序列的絕對(duì)殘差序列和相對(duì)殘差序列。
殘差:
![][21]
[21]: http://latex.codecogs.com/svg.latex?E(k)=x{(0)}(k)-\hat{x{(0)}}(k),k=2,3,...N;
相對(duì)殘差:
![][22]
[22]: http://latex.codecogs.com/svg.latex?e(k)=[x{(0)}(k)-\hat{x{(0)}}(k)]/x^{(0)}(k),k=2,3,...N;
(2) 后驗(yàn)差檢驗(yàn):分別計(jì)算
原始序列x^(0)的均值:
![][23]
[23]: http://latex.codecogs.com/svg.latex?\bar{X}=\frac{1}{N}\sum_{k=1}{N}x{(0)}(k)
原始序列x^(0)的方差:
![][24]
[24]: http://latex.codecogs.com/svg.latex?S_1=\sqrt{\frac{1}{N}\sum_{k=1}{N}[x{(0)}(k)-\bar{X}]^2}
殘差的均值:
![][25]
[25]: http://latex.codecogs.com/svg.latex?\bar{E}=\frac{1}{N-1}\sum_{k=2}^{N}E(k)
殘差的方差:
![][26]
[26]: http://latex.codecogs.com/svg.latex?S_2=\sqrt{\frac{1}{N-1}\sum_{k=2}{N}[E(k)-\bar{E}]2}
后驗(yàn)差比值:
![][27]
[27]: http://latex.codecogs.com/svg.latex?C=\frac{S_2}{S_1}
小誤差概率:
![][28]
[28]: http://latex.codecogs.com/svg.latex?P=P{|E(k)-\bar{E}|<0.6745S_1}
對(duì)比精度等級(jí)對(duì)照表薪伏,如下表所示滚澜。
![][29]
[29]: http://latex.codecogs.com/svg.latex?\begin{array}{c|lcr}level&\text{P}&\text{C}&\text{Level}\\hline1&{\textgreater0.95}&{\textless0.35}&Good\2&{\textgreater0.80}&{\textless0.45}&Qualified\3&{\textgreater0.70}&{\textless0.5}&Barely-passing\4&\leq0.70&\geq0.65&Unqualified\end{array}
評(píng)價(jià)模型的指標(biāo)C越小越好,P越大越好嫁怀,一般按照Max{P的level,C的level}來(lái)確定模型的精度級(jí)別设捐。
(3) 關(guān)聯(lián)度檢驗(yàn)
關(guān)聯(lián)度分析時(shí)根據(jù)因素之間發(fā)展態(tài)勢(shì)的相似或相異程度,分析事物動(dòng)態(tài)關(guān)聯(lián)的特征和程度眶掌。后期再作補(bǔ)充挡育。
由于灰度預(yù)測(cè)模型是給予一階常微分方程建立的,故被稱為一階一元灰色模型朴爬,記為GM(1,1)即寒。特別注意,原始數(shù)據(jù)中如果有負(fù)數(shù)召噩,需要先進(jìn)行“數(shù)據(jù)整體提升”處理母赵,再做一次累加,避免累加時(shí)正負(fù)抵消具滴。
4. GM(1,1)殘差模型
如果用原始時(shí)間序列建立的GM(1,1)模型檢驗(yàn)不合格或精度不理想時(shí)凹嘲,要對(duì)建立的模型進(jìn)行殘差修正,可以提高模型的預(yù)測(cè)精度构韵。
我們?cè)O(shè)
![][30]
[30]: http://latex.codecogs.com/svg.latex?\varepsilon{(0)}=(\varepsilon{(0)}(1),\varepsilon{(0)}(2),...,\varepsilon{(0)}(n))
其中周蹭,我們稱
![][31]
[31]: http://latex.codecogs.com/svg.latex?\varepsilon(k)=x{(0)}(k)-\hat{x}{(1)}(k)
為X^(1)的殘差序列。若存在k0滿足如下條件
![][32]
[32]: http://latex.codecogs.com/svg.latex?1.\forall{k}\gek_0,\varepsilon^{(0)}(k)\textless0or*\varepsilon^{(0)}\textgreater0;\\****2.when:n-k_0\ge4;
則稱
![][33]
[33]: http://latex.codecogs.com/svg.latex?(|\varepsilon{(0)}(k_0)|,|\varepsilon{(0)}(k_0+1)|,...,|\varepsilon^{(0)}(n)|)
為可建模殘差尾段疲恢,仍記為
![][34]
[34]: http://latex.codecogs.com/svg.latex?(\varepsilon{(0)}(k_0),\varepsilon{(0)}(k_0+1),...,\varepsilon^{(0)}(n))
對(duì)其進(jìn)行一次累加凶朗,得到序列
![][35]
[35]: http://latex.codecogs.com/svg.latex?(\varepsilon{(1)}(k_0),\varepsilon{(1)}(k_0+1),...,\varepsilon^{(1)}(n))
利用GM(1,1)建模后的時(shí)間響應(yīng)式為:
![][36]
[36]: http://latex.codecogs.com/svg.latex?\varepsilon{(1)}(k+1)=(\varepsilon{(0)}(k_0)-\frac{\hat{u}}{\hat{a}})e^{[-a(k-k_0)]}+\frac{\hat{u}}{\hat{a}},{k}\ge{k_{0}}
則殘差尾段的模擬序列為:
![][37]
[37]: http://latex.codecogs.com/svg.latex?\hat{\varepsilon}{(0)}=(\hat{\varepsilon}{(0)}(k_0),\hat{\varepsilon}{(0)}(k_0+1),...,\hat{\varepsilon}{(0)}(n))
其中
![][39]
[39]: http://latex.codecogs.com/svg.latex?\hat{\varepsilon}{(0)}(k+1)=-\hat{a}(\hat{\varepsilon}{(0)}(k_0)-\frac{\hat{u}}{\hat{a}})e^{[-\hat{a}(k-k_0)]},k\ge{k_0}
如果用上式修正X^(1),則稱修正后的時(shí)間響應(yīng)式為
![][38]
[38]: http://latex.codecogs.com/svg.latex?\hat{\varepsilon}{(1)}(k+1)=\left{\begin{array}{ll}(x{(0)}(1)-\frac{u}{a})e{-ak}+\frac{u}{a},k\textless{k_0};(1)\\(x{(0)}(1)-\frac{u}{a})e{-ak}+\frac{u}{a}\pm\hat{a}(\varepsilon{(0)}(k_0)-\frac{\hat{u}}{\hat{a}})e^{[-\hat{a}(k-k_0)]},k\ge{k_0};(2)\end{array}\right.
因此為殘差修正GM(1,1)模型显拳,簡(jiǎn)稱殘差GM(1,1)
5. GM(n,h)模型
GM(n,h)模型是微分方程模型棚愤,可用于對(duì)描述對(duì)象做長(zhǎng)期、連續(xù)、動(dòng)態(tài)的反映宛畦。從原則上講瘸洛,某一灰色系統(tǒng)無(wú)論內(nèi)部機(jī)制如何,只要能將系統(tǒng)原始數(shù)據(jù)表示為原始時(shí)間序列次和,并保證值非負(fù)反肋,則可用GM模型對(duì)系統(tǒng)表示和預(yù)測(cè)。