1. 程式人生 > >時間序列分析和預測

時間序列分析和預測

導論

研究時間序列主要目的:進行預測,根據已有的時間序列資料預測未來的變化。

時間序列預測關鍵:確定已有的時間序列的變化模式,並假定這種模式會延續到未來。

時間序列預測法的基本特點
  • 假設事物發展趨勢會延伸到未來
  • 預測所依據的資料具有不規則性
  • 不考慮事物發展之間的因果關係

時間序列資料用於描述現象隨時間發展變化的特徵

時間序列分析就其發展歷史階段和所使用的統計分析方法看:傳統的時間序列分析和現代時間序列分析

一、時間序列及其分解

時間序列(time series)是同一現象在不同時間上的相繼觀察值排列而成的序列。根據觀察時間的不同,時間序列中的時間可以是可以是年份、季度、月份或其他任何時間形式。

時間序列:

(1)平穩序列(stationary series)

是基本上不存在趨勢的序列,序列中的各觀察值基本上在某個固定的水平上波動,在不同時間段波動程度不同,但不存在某種規律,隨機波動

(2)非平穩序列(non-stationary series)

是包含趨勢、季節性或週期性的序列,只含有其中一種成分,也可能是幾種成分的組合。可分為:有趨勢序列、有趨勢和季節性序列、幾種成分混合而成的複合型序列。

趨勢(trend):時間序列在長時期內呈現出來的某種持續上升或持續下降的變動,也稱長期趨勢。時間序列中的趨勢可以是線性和非線性。

季節性(seasonality):季節變動(seasonal fluctuation),是時間序列在一年內重複出現的週期波動。銷售旺季,銷售淡季,旅遊旺季、旅遊淡季,因季節不同而發生變化。季節,不僅指一年中的四季,其實是指任何一種週期性的變化。含有季節成分的序列可能含有趨勢,也可能不含有趨勢。

週期性(cyclicity):迴圈波動(cyclical fluctuation),是時間序列中呈現出來的圍繞長期趨勢的一種波浪形或振盪式波動。週期性是由商業和經濟活動引起的,不同於趨勢變動,不是朝著單一方向的持續運動,而是漲落相間的交替波動;不同於季節變動,季節變動有比較固定的規律,且變動週期大多為一年,迴圈波動則無固定規律,變動週期多在一年以上,且週期長短不一。週期性通常是由經濟環境的變化引起。

除此之外,還有偶然性因素對時間序列產生影響,致使時間序列呈現出某種隨機波動。時間序列除去趨勢、週期性和季節性後的偶然性波動,稱為隨機性(random),也稱不規則波動(irregular variations)。

時間序列的成分可分為4種:趨勢(T)、季節性或季節變動(S)、週期性或迴圈波動(C)、隨機性或不規則波動(I)。傳統時間序列分析的一項主要內容就是把這些成分從時間序列中分離出來,並將它們之間的關係用一定的數學關係式予以表達,而後分別進行分析。按4種成分對時間序列的影響方式不同,時間序列可分解為多種模型:加法模型(additive model),乘法模型(multiplicative model)。乘法模型:Y_t=T_t\times S_t\times C_t\times I_t

二、描述性分析

1、圖形描述

2、增長率分析

是對現象在不同時間的變化狀況所做的描述。由於對比的基期不同,增長率有不同的計算方法。

(1)增長率(growth rate):增長速度,是時間序列中報告期觀察值與基期觀察值之比減1後的結果,用%表示。由於對比的基期不同,可分為環比增長率和定基增長率。

環比增長率:是報告期觀察值與前一時期觀察值之比減1,說明現象逐期增長變化的程度;

定基增長率是報告期觀察值與某一固定時期觀察值之比減1,說明現象在整個觀察期內總的增長變化程度。

設增長率為G:          環比增長率 :G_i=\frac{Y_i-Y_{i-1}}{Y_{i-1}}=\frac{Y_i}{Y_{i-1}}-1,i=1,2...,n

                                       定基增長率 :G_i=\frac{Y_i-Y_{0}}{Y_{0}}=\frac{Y_i}{Y_{0}}-1,i=1,2...,n

(2)平均增長率(average rate of increase):平均增長速度,是時間序列中逐期環比值(環比發展速度)的幾何平均數減1的結果:\bar{G}=\sqrt[n]{\frac{Y_1}{Y_{0}}\times \frac{Y_2}{Y_{1}}...\times \frac{Y_n-Y_{n-1}}{Y_{i-1}}}-1=\sqrt[n]{\frac{Y_n}{Y_{0}}}-1   n:環比值的個數

(3)增長率分析中應注意的問題

i:    當時間序列中的觀察出現0或負數時,不宜計算增長率。這種序列計算增長率,要麼不符合數學公理,要麼無法解釋其實際意義。可用絕對數進行分析。

ii:    有些情況下,不能單純就增長率論增長率,注意增長率與絕對水平結合起來。增長率是一個相對值,與對比的基數值的大小有關。這種情況,計算增長1%的絕對值來克服增長率分析的侷限性:

增長1%的絕對值表示增長率每增長一個百分點而增加的絕對數量:增長1%的絕對值=前期水平/100

三、時間序列預測的程式

時間序列分析的主要目的之一是根據已有的歷史資料對未來進行預測。時間序列含有不同的成分,如趨勢、季節性、週期性和隨機性。對於一個具體的時間序列,它可能含有一種成分,也可能同時含有幾種成分,含有不同成分的時間序列所用的預測方法是不同的。預測步驟:

第一步:確定時間序列所包含的成分,確定時間序列的型別

第二步:找出適合此類時間序列的預測方法

第三步:對可能的預測方法進行評估,以確定最佳預測方案

第四步:利用最佳預測方案進行預測

1、確定時間序列成分

(1)確定趨勢成分

確定趨勢成分是否存在,可繪製時間序列的線圖,看時間序列是否存在趨勢,以及存在趨勢是線性還是非線性。

利用迴歸分析擬合一條趨勢線,對迴歸係數進行顯著性檢驗。迴歸係數顯著,可得出線性趨勢顯著的結論。

(2)確定季節成分

確定季節成分是否存在,至少需要兩年資料,且資料需要按季度、月份、周或天來記錄。可繪圖,年度摺疊時間序列圖(folded annual time series plot),需要將每年的資料分開畫在圖上,橫軸只有一年的長度,每年的資料分別對應縱軸。如果時間序列只存在季節成分,年度摺疊時間序列圖中的折線將會有交叉;如果時間序列既含有季節成分又含有趨勢,則年度摺疊時間序列圖中的折線將不會有交叉,若趨勢上升,後面年度的折線將會高於前面年度的折線,若下降,則後面年度的折線將會低於前面年度的折線。

2、選擇預測方法

確定時間序列型別後,選擇適當的預測方法。利用時間資料進行預測,通常假定過去的變化趨勢會延續到未來,這樣就可以根據過去已有的形態或模式進行預測。時間序列的預測方法:傳統方法:簡單平均法、移動平均法、指數平滑法等,現代方法:Box-Jenkins 的自迴歸模型(ARMA)。

一般來說,任何時間序列都會有不規則成分存在,在商務和管理資料中通常不考慮週期性,只考慮趨勢成分和季節成分。

不含趨勢和季節成分的時間序列,即平穩時間序列只含隨機成分,只要通過平滑可消除隨機波動。因此,這類預測方法也稱平滑預測方法。

3、預測方法的評估

在選擇某種特定的方法進行預測時,需要評價該方法的預測效果或準確性。評價方法是找出預測值與實際值的差距,即預測誤差。最優的預測方法就是預測誤差達到最小的方法。

預測誤差計算方法:平均誤差,平均絕對誤差、均方誤差、平均百分比誤差、平均絕對百分比誤差。方法的選擇取決於預測者的目標、對方法的熟悉程度。

(1)平均誤差(mean error):Y:觀測值,F:預測值,n預測值個數

               ME=\frac{\sum_{i=1}^{n}(Y_i-F_i)}{n}     

由於預測誤差的數值可能有正有負,求和的結果就會相互抵消,這種情況下,平均誤差可能會低估誤差。

(2)平均絕對誤差(mean absolute deviation)是將預測誤差取絕對值後計算的平均無擦,MAD:

              MAD=\frac{\sum_{i=1}^{n}|Y_i-F_i|}{n}

平均絕對誤差可避免誤差相互抵消的問題,因而可以準確反映實際預測誤差的大小。

(3)均方誤差(mean square error):通過平方消去誤差的正負號後計算的平均誤差,MSE:

            MSE=\frac{\sum_{i=1}^{n}(Y_i-F_i)^2}{n}

(4)平均百分比誤差和平均絕對百分比誤差

ME,MAD,MSE的大小受時間序列資料的水平和計量單位的影響,有時並不能真正反映預測模型的好壞,只有在比較不同模型對同一資料的預測時才有意義。平均百分比誤差(mean percentage error,MPE)和平均絕對百分比誤差(mean absolute percentage error,MAPE)則不同,它們消除了時間序列資料的水平和計量單位的影響,是反映誤差大小的相對值。

MPE=\frac{\sum_{i=1}^{n}(\frac{Y_i-F_i}{Y_i}\times 100)}{n} 

MAPE=\frac{\sum_{i=1}^{n}(\frac{|Y_i-F_i|}{Y_i}\times 100)}{n}

4、平穩序列的預測

平穩時間序列只含有隨機成分,預測方法:簡單平均法、移動平均法、指數平滑法。主要通過對時間序列進行平滑以消除隨機波動,又稱平滑法。平滑法可用於對時間序列進行短期預測,也可對時間序列進行平滑以描述序列的趨勢(線性趨勢和非線性趨勢)。

(1)簡單平均法:根據已有的t期觀察值通過簡單平均法來預測下一期的數值。設時間序列已有的t期觀察值為Y_1,Y_2,...,Y_t,則t+1期的預測值F_{t+1}為:F_{t+1}=\frac{1}{t}(Y_1+Y_2+...+Y_t)=\frac{1}{t}\sum_{i=1}^{t} Y_i

到了t+1期後,有了t+1期的實際值,t+1期的預測誤差e_{t+1}為:e_{t+1}=Y_{t+1}-F_{t+1}

t+2期預測值:F_{t+2}=\frac{1}{t+1}(Y_1+Y_2+...+Y_t+Y_{t+1})=\frac{1}{t+1}\sum_{i=1}^{t+1} Y_i

簡單平均法適合對較為平穩的時間序列進行預測,即當時間序列沒有趨勢時,用該方法比較好。但如果時間序列有趨勢或季節成分,該方法的預測則不夠準確。簡單平均法將遠期的數值和近期的數值看作對未來同等重要。從預測角度,近期的數值比遠期的數值對未來有更大的作用,因此簡單平均法預測的結果不夠準確。

(2)移動平均法(moving average):通過對時間序列逐期遞移求得平均數作為預測值的一種預測方法,有簡單移動平均法(simple moving average)和加權移動平均法(weighted moving average).

簡單移動平均將最近k期資料加以平均,作為下一期的預測值。設移動平均間隔為k(1<k<t),則t期的移動平均值為:

\bar{Y}_{t}=\frac{Y_{t-k+1}+Y_{t-k+2}+...+Y_{t-1}+Y_{t}}{k}  是對時間序列的平滑結果,通過這些平滑值可描述出時間序列的變化形態或趨勢。也可以用來預測。

t+1期的簡單移動平均預測值為:F_{t+1}=\bar{Y}_{t}=\frac{Y_{t-k+1}+Y_{t-k+2}+...+Y_{t-1}+Y_{t}}{k}

t+2期的簡單移動平均預測值為:F_{t+2}=\bar{Y}_{t+1}=\frac{Y_{t-k+2}+Y_{t-k+3}+...+Y_{t}+Y_{t+1}}{k}

移動平均法只使用最近k期的資料,在每次計算移動平均值時,移動的間隔都為k,也適合對較為平穩的時間序列進行預測。應用關鍵是確定合理的移動平均間隔k。對於同一個時間序列,採用不同的移動間隔,預測的準確性是不同的。可通過試驗的方法,選擇一個使均方誤差達到最小的移動間隔。移動間隔小,能快速反映變化,但不能反映變化趨勢;移動間隔大,能反映變化趨勢,但預測值帶有明顯的滯後偏差。

移動平均法的基本思想:移動平均可以消除或減少時間序列資料受偶然性因素干擾而產生的隨機變動影響,適合短期預測。

(3)指數平滑法(exponential smoothing)是通過對過去的觀察值加權平均進行預測,使t+1期的預測值等t期的實際觀察值與t期的預測值的加權的平均值。指數平滑法是從移動平均法發展而來,是一種改良的加權平均法,在不捨棄歷史資料的前提下,對離預測期較近的歷史資料給予較大權數,權數由近到遠按指數規律遞減,因此稱指數平滑。指數平滑有一次指數平滑法、二次指數平滑法、三次指數平滑法等。

一次指數平滑法也稱單一指數平滑法(single exponential smoothing),只有一個平滑係數,且觀察值離預測時期越久遠,權數變得越小。一次指數平滑是將一段時期的預測值與觀察值的線性組合作為t+1時期的預測值,預測模型為:

F_{t+1}=\alpha Y_t+(1-\alpha )F_t      \alpha:平滑係數(0\leq \alpha\leq 1

t+1期的資料是t期的實際觀察值與t期的預測值的加權平均。1期的預測值=1期的觀察值

2期預測值:F_{2}=\alpha Y_1+(1-\alpha )F_1=\alpha Y_1+(1-\alpha )Y_1=Y_1

3期預測值:F_{3}=\alpha Y_2+(1-\alpha )F_2=\alpha Y_2+(1-\alpha )Y_1

4期預測值:F_{4}=\alpha Y_3+(1-\alpha )F_3=\alpha Y_3+\alpha (1-\alpha )Y_2+ (1-\alpha )^2Y_1

對指數平滑法的預測精度,用均方誤差來=衡量:

F_{t+1}=\alpha Y_t+(1-\alpha )F_t

          =F_t+\alpha (Y_t-F_t)

F_{t+1}是t期的預測值F_{t}加上用\alpha調整的t期預測誤差(Y_t-F_t)。

使用指數平滑法時, 關鍵問題是確定一個合適的平滑係數\alpha,不同的\alpha對預測結果產生不同的影響。

\alpha=0,預測值僅僅是重複上一期的預測結果;\alpha=1,預測值就是上一期的實際值;

\alpha越接近1,模型對時間序列變化的反應就越及時,因為它給當前的實際值賦予了比預測值更大的權數;

\alpha越接近0,給當前的預測值賦予了更大的權數,模型對時間序列變化的反應就越慢。

當時間序列有較大隨機波動時,選較大\alpha,以便能很快跟上近期的變化;當時間序列比較平穩時,選較小\alpha

實際應用中,需考慮預測誤差,用均方誤差衡量預測誤差大小。確定\alpha時,可選擇幾個\alpha進行預測,然後找出預測誤差最小的作為最後的\alpha值。

與移動平均法一樣,一次指數平滑法可用於對時間序列進行修勻,以消除隨機波動,找出序列的變化趨勢。

用一次指數平滑法進行預測時,一般\alpha取值不大於0.5,若大於0.5,才能接近實際值,說明序列有某種趨勢或波動過大。

阻尼係數  \beta=1-\alpha ,阻尼係數越小,近期實際值對預測結果的影響越大,反之,越小。阻尼係數是根據時間序列的變化特性來選取。

5、趨勢型序列的預測

時間序列的趨勢可分為線性趨勢和非線性趨勢,若這種趨勢能夠延續到未來,就可利用趨勢進行外推預測。有趨勢序列的預測方法主要有線性趨勢預測、非線性趨勢預測和自迴歸模型預測。

(1) 線性趨勢預測

線性趨勢(linear trend)是指現象隨著時間的推移而呈現穩定增長或下降的線性變化規律。

趨勢方程:\hat{Y}_t=b_0+b_1t     \hat{Y}_t:時間序列Y_t的預測值;b_1是趨勢線斜率,表示時間t 變動一個單位,觀察值的平均變動數量

(2) 非線性趨勢預測

序列中的趨勢通常可認為是由於某種固定因素作用同一方向所形成的。若這種因素隨時間推移按線性變化,則可對時間序列擬合趨勢直線;若呈現出某種非線性趨勢(non-linear trend),則需要擬合適當的趨勢曲線。

i:   指數曲線(exponential curve):用於描述以幾何級數遞增或遞減的現象,即時間序列的觀察值Y_t按指數規律變化,或者時間序列的逐期觀察值按一定的增長率增長或衰減。一般的自然增長及大多數經濟序列都有指數變化趨勢。

趨勢方程:\hat{Y}_t=b_0b_1^{t}     b_0,b_1為待定係數

b_1>1,則增長率隨著時間t的增加而增加;若b_1<1,則增長率隨著時間t的增加而降低;若b_0>0,b_1<1,則預測值\hat{Y}_t逐漸降低以到0為極限。

為確定b_0,b_1,可採用線性化手段將其化為對數直線形式,兩端取對數:lg\hat{Y}_t=lgb_0+tlgb_1

根據最小二乘原理,按直線形式的常數確定方法求得 lgb_0,lgb_1,求出 lgb_0,lgb_1後,再取其反對數,即可得到b_0,b_1

\left\{\begin{matrix}\sum lgY=nlgb_0+lgb_1\sum t\\\sum t lgY_t=lgb_0\sum t+lgb_1\sum t^2\end{matrix}\right.

ii:   多階曲線:

有些現象變化形態複雜,不是按照某種固定的形態變化,而是有升有降,在變化過程中可能有幾個拐點。這時就需要擬合多項式函式。當只有一個拐點時,可擬合二項曲線,即拋物線;當有兩個拐點時,需要擬合三階曲線;有k-1個拐點時,需要擬合k階曲線。

6、複合型序列的分解預測

複合型序列是指含有趨勢、季節、週期和隨機成分的序列。對這類序列的預測方法是將時間序列的各個因素依次分解出來,然後進行預測。由於週期成分的分析需要有多年的資料,實際中很難得到多年的資料,因此採用的分解模型為:Y_t=T_t\times S_t\times I_t

預測方法有:季節性多元迴歸模型、季節自迴歸模型和時間序列分解法預測。

分解法預測步驟:

第一步:確定並分離季節成分。計算季節指數,以確定時間序列中的季節成分。然後將季節成分從時間序列中分離出去,即用每一個時間序列觀察值除以相應的季節指數,以消除季節性。

第二步:建立預測模型並進行預測。對消除了季節成分的時間序列建立適當的預測模型,並根據這一模型進行預測。

第三步:計算最後的預測值。用預測值乘以相應的季節指數,得到最終的預測值。

(1)確定並分離季節成分

季節性因素分析是通過季節指數來表示各年的季節成分,以此描述各年的季節變動模式。

i:  計算季節指數(seasonal index)

季節指數刻畫了序列在一個年度內各月或各季度的典型季節特徵。在乘法模型中,季節指數以其平均數等於100%為條件而構成的,反映了某一月份或季度的數值佔全年平均值的大小。若現象的發展沒有季節變動,則各期的季節指數應等於100%;若某一月份或季度有明顯的季節變化,則各期的季節指數應大於或小於100%。因此,季節變動的程度是根據各季節指數與其平均數(100%)的偏差程度來測定的。

季節指數計算方法較多,移動平均趨勢剔除法步驟:

第一步:計算移動平均值(若是季節資料,採用4項移動平均,月份資料則採用12項移動平均),並對其結果進行中心化處理,即將移動平均的結果再進行一次二項移動平均,即得出中心化移動平均值(CMA)。

第二步:計算移動平均的比值,即季節比率,即將序列的各觀察值除以相應的中心化移動平均值,然後計算出各比值的季度或月份平均值。

第三步:季節指數調整。由於各季節指數的平均數應應等於1或100%,若根據第二步計算的季節比率的平均值不等於1,則需要進行調整。具體方法:將第二步計算的每個季節比率的平均值除以它們的總平均值。

ii:  分離季節成分

計算出季節指數後,可將各實際觀察值分別除以相應的季節指數,將季節成分從時間序列中分離出去:\frac{Y}{S}=\frac{T*S*I}{S}=T*I

結果即為季節成分分離後的序列,反映了在沒有季節因素影響下時間序列的變化形態。

iii: 建立預測模型並進行預測