彭乃馳,黨 婷
(云南大學(xué)旅游文化學(xué)院 信息科學(xué)與技術(shù)系,云南 麗江 674199)
建立合適的數(shù)學(xué)模型精準(zhǔn)預(yù)測(cè)CPI對(duì)于相關(guān)部門(mén)制定宏觀(guān)經(jīng)濟(jì)調(diào)控政策具有重要的參考意義。目前,在中國(guó)知網(wǎng)上可以檢索到的CPI預(yù)測(cè)的文獻(xiàn)高達(dá)130余篇,預(yù)測(cè)模型高達(dá)十余種,如神經(jīng)網(wǎng)絡(luò)、SARIMA、ARCH、VAR、GM等,但尚無(wú)公認(rèn)的最優(yōu)的預(yù)測(cè)模型。黃鷹翔[1]實(shí)證表明SARIMA能較好地預(yù)測(cè)CPI的變化情況。石春娟[2]通過(guò)實(shí)證說(shuō)明了小波分解和ANFIS模型在CPI預(yù)測(cè)中的有效性。王宇等[3]利用BP神經(jīng)網(wǎng)絡(luò)對(duì)我國(guó)CPI進(jìn)行預(yù)測(cè),效果比較理想。本文以云南省CPI數(shù)據(jù)為例,利用小波分析去除CPI數(shù)據(jù)中的噪聲,并在CPI預(yù)測(cè)中有較好效果的BP神經(jīng)網(wǎng)絡(luò)及SARIMA模型的基礎(chǔ)上,建立小波分析的BP-SARIMA預(yù)測(cè)模型。本文通過(guò)對(duì)云南省1995年1月至2016年12月CPI的預(yù)測(cè)和檢驗(yàn),驗(yàn)證該模型在CPI預(yù)測(cè)中的有效性。
小波分析的思想是用小波序列的迭加來(lái)逼近某一信號(hào)。小波分析在時(shí)間序列預(yù)測(cè)中的應(yīng)用主要是基于小波分析中的多分辨率分析理論。多分辨率分析是通過(guò)改變伸縮及平移尺度得到信號(hào)的近似及細(xì)節(jié)部分,在不同分辨率下顯示信號(hào)的特征,實(shí)現(xiàn)對(duì)信號(hào)不同時(shí)間尺度和空間局部特征的分析。采用小波方法可有效消除時(shí)間序列中的噪聲[4]。小波分析實(shí)現(xiàn)的關(guān)鍵是小波函數(shù)及分解層數(shù)的選擇,實(shí)際應(yīng)用中可根據(jù)數(shù)據(jù)及不同小波函數(shù)的特點(diǎn)來(lái)選擇。小波分析的過(guò)程可大體分為分解、去噪與重構(gòu)三步。
設(shè)時(shí)間序列數(shù)據(jù)為 f(n),則 f(n)的多分辨率分解可以表示為:
其中 ?j0,k(2j0n-k),φj,k(2jn-k)分別是尺度函數(shù) ?(t)和母小波函數(shù) φ(t)的伸縮和平移函數(shù)簇。 cj0,k,dj,k分別是在伸縮尺度 j0,j,平移尺度k上的展開(kāi)系數(shù)。Nt是時(shí)間序列的點(diǎn)數(shù)。
BP神經(jīng)網(wǎng)絡(luò)于1986年提出后,至今已在多方面廣泛應(yīng)用[5-7]。它是一種多層前饋神經(jīng)網(wǎng)絡(luò),其特點(diǎn)是信號(hào)由輸入層、隱層、到輸出層前向傳播,誤差反向傳播,并根據(jù)預(yù)測(cè)誤差調(diào)整網(wǎng)絡(luò)權(quán)值和閾值使預(yù)測(cè)輸出不斷逼近期望輸出。
BP神經(jīng)網(wǎng)絡(luò)是一個(gè)3層感知器的數(shù)學(xué)模型。各層之間的數(shù)學(xué)關(guān)系如下:
對(duì)于隱層有:
對(duì)于輸出層有:
上式中x0=-1是為隱層神經(jīng)元引入閾值設(shè)置的,y0=-1是為輸出神經(jīng)元引入閾值設(shè)置的,一般情形下取
若時(shí)間序列{xt} 滿(mǎn)足:H(LS)Δxt=Θ(LS)εt,則稱(chēng){xt}為季節(jié)性SARIMA(P,D,Q)過(guò)程。SARIMA模型可用來(lái)描述具有周期性的非平穩(wěn)的時(shí)間序列數(shù)據(jù)。SARIMA模型的表達(dá)式為:
其中S為周期的長(zhǎng)度,D為季節(jié)差分的階數(shù),P為季節(jié)自回歸階數(shù),Q為季節(jié)滑動(dòng)平均階數(shù),ΔS=1-LS為季節(jié)差分算子,
本文以云南同比月度CPI為例,首先對(duì)原始數(shù)據(jù)作小波閾值去噪處理,再對(duì)去噪后數(shù)據(jù)作BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè),最后通過(guò)SARIMA模型修正預(yù)測(cè)殘差。按此思路結(jié)合小波分析、BP神經(jīng)網(wǎng)絡(luò)與SARIMA模型的優(yōu)點(diǎn),建立小波分析的BP-SARIMA模型。小波分析的BP-SARIMA模型的建模步驟為:
步驟1:選擇某種小波及分解層數(shù)對(duì)CPI原始數(shù)據(jù)作分解。
步驟2:閾值處理,即設(shè)定某一閾值,只保留大于閾值的小波系數(shù)。
步驟3:用處理后的系數(shù)重構(gòu)數(shù)據(jù),得到去噪后的CPI數(shù)據(jù)。
步驟4:對(duì)去噪后的CPI數(shù)據(jù)再作相空間重構(gòu),將相空間重構(gòu)后的數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù),并確定BP神經(jīng)網(wǎng)絡(luò)輸入層神經(jīng)元個(gè)數(shù)n與輸出層神經(jīng)元個(gè)數(shù)m。
步驟6:建立n-l-m結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò),多次運(yùn)行網(wǎng)絡(luò),根據(jù)測(cè)試的MSE選擇最優(yōu)網(wǎng)絡(luò)并運(yùn)算出該網(wǎng)絡(luò)的預(yù)測(cè)值。
步驟7:對(duì)BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)相對(duì)于原始數(shù)據(jù)的殘差作平穩(wěn)性與季節(jié)性檢驗(yàn),若其存在季節(jié)性則可建立SARIMA模型。
步驟8:在殘差符合建立SARIMA模型的條件下,進(jìn)一步確定SARIMA模型的參數(shù)(p,d,q)×(P,D,Q)s,從而建立SARIMA(p,d,q)×(P,D,Q)s模型并對(duì)殘差作預(yù)測(cè)。
步驟9:將BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果與SARIMA模型的預(yù)測(cè)結(jié)果相加即得小波分析的BP-SARIMA模型的預(yù)測(cè)結(jié)果。
步驟10:通過(guò)平均相對(duì)誤差、均方誤差等標(biāo)準(zhǔn)測(cè)試建立的小波分析的BP-SARIMA模型,測(cè)試效果較好則該模型可用于CPI預(yù)測(cè)。
本文選擇云南省1995年1月至2016年12月的CPI同比月度數(shù)據(jù),數(shù)據(jù)量共264個(gè),數(shù)據(jù)來(lái)源于國(guó)家統(tǒng)計(jì)局網(wǎng)站。原始數(shù)據(jù)(記為X)的時(shí)序圖見(jiàn)圖1。從圖1可見(jiàn),1995年的云南月度CPI處于同比增長(zhǎng)率在20%左右的高位上,消費(fèi)者物價(jià)處于嚴(yán)重的通貨膨脹階段。1995—2000年底,云南月度CPI經(jīng)歷長(zhǎng)達(dá)六年的遞減后,CPI達(dá)到了增長(zhǎng)率-3%左右的歷史最低值。隨后云南CPI又經(jīng)歷了長(zhǎng)期的波動(dòng)性增長(zhǎng),并于2004年與2008年兩次達(dá)到了增長(zhǎng)率9%左右的峰值。2014—2016年,云南的同比月度CPI基本控制在增長(zhǎng)率1%~3%之間,處于較理想的狀態(tài)。將云南CPI數(shù)據(jù)劃分為1995年1月至2015年12月與2016年1月至2016年12月兩部分,前者用于建立模型,后者留作對(duì)模型的預(yù)測(cè)效果作測(cè)試。
圖1 云南CPI原始數(shù)據(jù)
云南CPI同比月度數(shù)據(jù)不可避免地會(huì)受到某些擾動(dòng)項(xiàng)的影響,在采集到的數(shù)據(jù)中會(huì)包含一定的噪聲,這些噪聲不能反映數(shù)據(jù)的本質(zhì)特征,對(duì)預(yù)測(cè)結(jié)果會(huì)存在一定的干擾。因此,為提高預(yù)測(cè)精度可先對(duì)CPI原始數(shù)據(jù)作小波閾值去噪處理。
目前,對(duì)小波函數(shù)的選擇尚未有統(tǒng)一方法,由于Haar小波(即db1小波)具有正交性、緊支撐性與對(duì)稱(chēng)性,故選擇該小波。小波分解的層數(shù)過(guò)少會(huì)使去噪后的數(shù)據(jù)平滑性和平穩(wěn)性較差,分解的層數(shù)過(guò)多又會(huì)使分解過(guò)程中產(chǎn)生的計(jì)算誤差較大,綜合考慮這兩方面后選擇三層小波分解。選定db1小波三層分解后,使用MATLAB軟件中的小波工具箱,采用默認(rèn)閾值重構(gòu)法,完成對(duì)CPI原始數(shù)據(jù)的小波閾值去噪。去噪后的云南CPI數(shù)據(jù)記為S,其時(shí)序圖如圖2所示。
圖2 去噪后的云南CPI
將去噪后的云南CPI數(shù)據(jù)S首先作相空間重構(gòu),經(jīng)多次試驗(yàn)確定出最小嵌入維為3,時(shí)間延時(shí)為1,即用前三個(gè)月的CPI預(yù)測(cè)下一個(gè)月的CPI。經(jīng)相空間重構(gòu)后的數(shù)據(jù)形式如表1所示:
表1 相空間重構(gòu)數(shù)據(jù)形式
其中,Si為S的第i期數(shù)據(jù)。為了與前文建模數(shù)據(jù)與測(cè)試數(shù)據(jù)的劃分一致,取表1中1~249號(hào)數(shù)據(jù)對(duì)BP模型的網(wǎng)絡(luò)作訓(xùn)練,用于建立BP神經(jīng)網(wǎng)絡(luò)模型,而250~261號(hào)數(shù)據(jù)作為測(cè)試數(shù)據(jù),不參與模型建立。
相空間重構(gòu)完畢后就確定了BP神經(jīng)網(wǎng)絡(luò)的輸入層神經(jīng)元個(gè)數(shù)n=3,輸出層神經(jīng)元個(gè)數(shù)m=1,代入經(jīng)驗(yàn)公式得即初步確定出隱層神經(jīng)元個(gè)數(shù)的取值范圍為3至12的整數(shù)。因?yàn)锽P神經(jīng)網(wǎng)絡(luò)訓(xùn)練出來(lái)的模型每次都不一致,故隱層神經(jīng)元個(gè)數(shù)依次取3,4,…,12各重復(fù)建模10次,分別計(jì)算出測(cè)試均方差MSE的10次平均值,通過(guò)比較取隱層神經(jīng)元個(gè)數(shù)為3,建立3-3-1結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò)。反復(fù)訓(xùn)練3-3-1結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò),記錄每次的測(cè)試均方差,從中找到一個(gè)測(cè)試效果最好的網(wǎng)絡(luò)并保存。利用該網(wǎng)絡(luò)建立的BP模型,產(chǎn)生擬合期的預(yù)測(cè)值Yi(i=4,5,…,252)與測(cè)試期的預(yù)測(cè)值Yi(i=253,…,264),并計(jì)算出其相對(duì)于原始數(shù)據(jù)X的殘差 Ei=Xi-Yi(i=4,5,…,264)。以上BP預(yù)測(cè)過(guò)程通過(guò)調(diào)用MATLAB軟件中的神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)實(shí)現(xiàn)。為了提高預(yù)測(cè)精度,擬合期的殘差Ei(i=4,5,…,252)用于進(jìn)一步建立SARIMA模型。BP模型的預(yù)測(cè)值 Y及殘差E的圖像分別如圖3和圖4所示。
圖3 BP預(yù)測(cè)值
圖4 BP預(yù)測(cè)殘差
對(duì)BP模型擬合期的預(yù)測(cè)殘差序列E作無(wú)截距、無(wú)趨勢(shì)的ADF單位根檢驗(yàn),t統(tǒng)計(jì)量為-10.19小于顯著性水平1%下的臨界值-2.57,認(rèn)為殘差序列E為平穩(wěn)序列,故序列E無(wú)需作差分。作E的相關(guān)圖,如圖5所示。從圖5可見(jiàn),當(dāng)滯后期k=12時(shí),自相關(guān)與偏自相關(guān)系數(shù)明顯超出置信帶,顯著不為0,這表明序列E存在季節(jié)性。為消除季節(jié)性,對(duì)序列E作步長(zhǎng)為s=12的季節(jié)差分產(chǎn)生序列SE,再對(duì)SE作無(wú)截距、無(wú)趨勢(shì)的ADF單位根檢驗(yàn),t=-6.83<-2.57,表明SE仍為平穩(wěn)序列,符合SARIMA模型的建模條件,可建立 SARIMA(p,d,q)×(P,D,Q)s模型。
圖5 BP預(yù)測(cè)殘差E相關(guān)圖
由于序列E平穩(wěn),取d=0;作一階季節(jié)差分后季節(jié)性大體消除,取D=1;圖5中當(dāng)k=12時(shí)自相關(guān)與偏自樣系數(shù)顯著不為0,取P=Q=1。SE的相關(guān)圖(見(jiàn)圖6)中偏自關(guān)系數(shù)與自相關(guān)系數(shù)分別在滯后2階與1階后多數(shù)處于置信帶內(nèi),為了使模型預(yù)測(cè)效果更準(zhǔn)確,適當(dāng)擴(kuò)寬 p,q的取值范圍,取 p=1,2,3與 q=0,1,2 為待選階數(shù)。綜上所述,建立的待選模型為 SARIMA(p,0,q)×(1,1,1)12( p=1,2,3,q=0,1,2),共有九個(gè)模型。依據(jù)調(diào)整 R2、AIC準(zhǔn)則、SC準(zhǔn)則選擇模型,其中調(diào)整R2大優(yōu),AIC與SC小優(yōu)。九個(gè)待選SARIMA模型的檢驗(yàn)結(jié)果見(jiàn)表2。
圖6 SE相關(guān)圖
表2 SARIMA模型檢驗(yàn)結(jié)果
由表2可見(jiàn) SARIMA(1,0,0)×(1,1,1)12與 SARIMA(3,0,2)×(1,1,1)12兩模型的AIC都很小且?guī)缀跸嗟?,前者的SC最優(yōu),后者的調(diào)整R2最優(yōu),故先排除其余七個(gè)模型,從這兩個(gè)模型中作選擇??紤]到 SARIMA(1,0,0)×(1,1,1)12模型的各項(xiàng)系數(shù)的估計(jì)值在1%水平下都顯著,另一模型有兩項(xiàng)系數(shù)的估計(jì)值不顯著(5%水平),且 SARIMA(1,0,0)×(1,1,1)12模型的殘差通過(guò)白噪聲檢驗(yàn),最終選擇該模型,其表達(dá)式為:
(1-L12)(1-0.449L)(1+0.450L12)Et=(1+0.935L12)εt
利用 SARIMA(1,0,0)×(1,1,1)12模型對(duì)序列 E 作靜態(tài)滾動(dòng)預(yù)測(cè),得擬合期的預(yù)測(cè)值 Ei(i=29,…,252)與測(cè)試期的預(yù)測(cè)值 Ei(i=253,…,264)。
表3 模型測(cè)試效果對(duì)比
由表3可見(jiàn),三個(gè)模型的各期測(cè)試相對(duì)誤差都控制在0.7%之內(nèi),測(cè)試效果均比較理想,它們都可用于對(duì)云南同比月度CPI作預(yù)測(cè)。在這三個(gè)模型中,小波分析的BP-SARIMA模型平均相對(duì)誤差與均方誤差都最小,為最優(yōu)模型。小波分析的BP-SARIMA模型相對(duì)未經(jīng)小波分析的BP-SARIMA模型,測(cè)試期的平均相對(duì)誤差與均方誤差各減少了0.06%及0.044。小波分析的BP-SARIMA模型相對(duì)未經(jīng)SARIMA殘差修正的小波分析的BP模型,測(cè)試期的平均相對(duì)誤差與均方誤差各減少了0.031%及0.021。
對(duì)小波分析的BP-SARIMA模型的主要研究結(jié)論如下:(1)該模型測(cè)試期的平均相對(duì)誤差為0.239%,均方誤差為0.091,預(yù)測(cè)精度高,可用于對(duì)CPI作預(yù)測(cè)研究;(2)通過(guò)與未經(jīng)小波分析的BP-SARIMA模型及未經(jīng)SARIMA殘差修正的小波分析的BP模型作對(duì)比,該模型的預(yù)測(cè)精度更高,測(cè)試期的平均相對(duì)誤差與均方誤差都有明顯下降。進(jìn)一步的研究方向:(1)該模型的改進(jìn)。比如將BP神經(jīng)網(wǎng)絡(luò)換成其他類(lèi)型的神經(jīng)網(wǎng)絡(luò)(RBF神經(jīng)網(wǎng)絡(luò)、模糊神經(jīng)網(wǎng)絡(luò)等),模型預(yù)測(cè)精度是否會(huì)有提高。(2)該模型是否適合其他類(lèi)型經(jīng)濟(jì)指標(biāo)的預(yù)測(cè),比如GDP等。