SPSS應用—時間序列分析
SPSS應用—時間序列分析
預測:是對尚未發生或目前還不明確的事物進行預先的估計和推測,是在現時對事物將要發生的結果進行探討和研究,簡單地說就是指從已知事件測定未知事件。
為什麼要預測呢,因為預測可以幫助了解事物發展的未來狀況後,人們可以在目前為它的到來做好準備,通過預測可以了解目前的決策所可能帶來的後果,並通過對後果的分析來確定目前的決策,力爭使目前的決策獲得最佳的未來結果。
我們進行預測的總的原則是:認識事物的發展變化規律,利用規律的必然性,是進行科學預測所應遵循的總的原則。
這個總原則實際上就是事物發展的
1-「慣性」原則——事物變化發展的延續性;
2-「類推」原則——事物發展的類似性;
3-「相關」原則——事物的變化發展是相互聯繫的;
4-「概率」原則——事物發展的推斷預測結果能以較大概率出現,則結果成立、可用;
時間序列預測主要包括三種基本方法:
1-內生時間序列預測技術;2-外生時間序列預測技術;3-主觀時間序列預測技術;
當然今天我們主要討論內生時間序列預測技術——也就是只關注時間序列的下的預測問題!
從數據分析的角度來考慮,我們需要研究:
序列是否在固定水平上下變動?
此水平是否也在變動?
是否有某種上升或下降的趨勢呢?
是否存在有季節性的模式?
是否季節性的模式也在變更呢?
是否存在周期性規律和模式?時間序列有一明顯的特性就是記憶性(memory),記憶性系指時間數列中的任一觀測值的表現皆受到過去觀測值影響。
時間序列主要考慮的因素是:
長期趨勢(Long-term trend)
- 時間序列可能相當穩定或隨時間呈現某種趨勢。
- 時間序列趨勢一般為線性的(linear),二次方程式的 (quadratic)或指數函數(exponential function)。
- 季節性變動(Seasonal variation)
- 按時間變動,呈現重複性行為的序列。
- 季節性變動通常和日期或氣候有關。
- 季節性變動通常和年周期有關。
- 周期性變動(Cyclical variation)
- 相對於季節性變動,時間序列可能經歷「周期性變動」。
- 周期性變動通常是因為經濟變動。
- 隨機影響(Random effects)
預測技術主要包括兩大類:
- 指數平滑方法(Exponential smoothing models):
描述時間序列數據的變化規律和行為,不去試圖解釋和理解這種變化的原因。例如:您可能發現在過去的一年裡,三月和九月都會出現銷售的高峰,您可能希望繼續保持這樣,儘管您不知道為什麼。
- ARIMA模型:
描述時間序列數據的變化規律和行為,它允許模型中包含趨勢變動、季節變動、循環變動和隨機波動等綜合因素影響。具有較高的預測精度,可以把握過去數據變動模式,有助於解釋預測變動規律,回答為什麼這樣。
下面看看如何採用SPSS軟體進行時間序列的預測!
這裡我用PASW Statistics 18軟體,大家可能覺得沒見過這個軟體,其實就是SPSS18.0,不過現在SPSS已經把產品名稱改稱為PASW了!博易智訊的馬博士剛剛把這個產品測試版給我,還是中文版,先睹為快吧!
我們通過案例來說明:(本案例並不想細緻解釋預測模型的預測的假設檢驗問題,1-太複雜、2-相信軟體)假設我們拿到一個時間序列數據集:某男裝生產線銷售額。一個產品分類銷售公司會根據過去 10 年的銷售數據來預測其男裝生產線的月銷售情況。現在我們得到了10年120個歷史銷售數據,理論上講,歷史數據越多預測越穩定,一般也要24個歷史數據才行!
大家看到,原則上講數據中沒有時間變數,實際上也不需要時間變數,但你必須知道時間的起點和時間間隔。
當我們現在預測方法創建模型時,記住:一定要先定義數據的時間序列和標記!
這時候你要決定你的時間序列數據的開始時間,時間間隔,周期!在我們這個案例中,你要決定季度是否是你考 慮周期性或季節性的影響因素,軟體能夠偵測到你的數據的季節性變化因子。
定義了時間序列的時間標記後,數據集自動生成四個新的變數:YEAR、QUARTER、MONTH和DATE(時間標籤)。
接下來:為了幫我們找到適當的模型,最好先繪製時間序列。時間序列的可視化檢查通常可以很好地指導並幫助我們進行選擇。另外,我們需要弄清以下幾點:
此序列是否存在整體趨勢?如果是,趨勢是顯示持續存在還是顯示將隨時間而消逝?
? 此序列是否顯示季節變化?如果是,那麼這種季節的波動是隨時間而加劇還是持續穩定存在?
這時候我們就可以看到時間序列圖了!
我們看到:此序列顯示整體上升趨勢,即序列值隨時間而增加。上升趨勢似乎將持續,即為線性趨勢。此序列還有一個明顯的季節特徵,即年度高點在十二月。季節變化顯示隨上升序列而增長的趨勢,表明是乘法季節模型而不是加法季節模型。
此時,我們對時間序列的特徵有了大致的了解,便可以開始嘗試構建預測模型。時間序列預測模型的建立是一個不斷嘗試和選擇的過程。
PASW Statistics提供了三大類預測方法:1-專家建模器,2-指數平滑法,3-ARIMA
指數平滑法
指數平滑法有助於預測存在趨勢和/或季節的序列,此處數據同時體現上述兩種特徵。創建最適當的指數平滑模型包括確定模型類型(此模型是否需要包含趨勢和/或季節),然後獲取最適合選定模型的參數。
1-簡單模型預測(即無趨勢也無季節)
首 先我們採用最為簡單的建模方法,就是簡單模型,這裡我們不斷嘗試的目的是讓大家熟悉各種預測模型,了解模型在什麼時候不適合數據,這是成功構建模型的基本 技巧。我們先不討論模型的檢驗,只是直觀的看一下預測模型的擬合情況,最後我們確定了預測模型後我們再討論檢驗和預測值。
從圖中我們看到,雖然簡單模型確實顯示了漸進的上升趨勢,但並不是我們期望的結果,既沒有考慮季節性變化,也沒有周期性呈現,直觀的講基本上與線性預測沒有差異。所以我們拒絕此模型。
2-Holt線性趨勢預測
Holt線性指數平滑法,一般選擇:針對等級的平滑係數lapha=0.1,針對趨勢的平滑係數gamma=0.2;
從上面的擬合情況看,Holt預測模型更平滑了,也就是說Holt模型比簡單模型顯現了更強的平滑趨勢,但未考慮季節因素,還是不理想,所以還應放棄此模型。
3-簡單季節性模型
當我們考慮了季節性變化後,簡單季節性預測模型基本上較好的擬合了數據的大趨勢,也就是考慮了趨勢和季節。
4-Winters相乘法預測模型
我們再次選擇Winters預測模型,實際上這時候非統計專業人士其實已經可以不用考慮Winters模型的原理了,因為對於大部分經營分析人員,如果期望把每一個預測方式的細節都搞清楚,並不容易,也容易陷入數量層面的糾葛中,我們只要相信軟體演算法就可以了。
此時,在數據集的時間跨度為10年,並且包含 10 個季節峰值(出現在每年十二月份)中,簡單季節模型和Winters模型都撲捉到了這10個峰值與實際數據中的10個年度峰值完全匹配的預測結果。此時,我們基本上可以得到了一個比較滿意的預測結果。
此時也說明,無論採用指數平滑的什麼模型,只要考慮了季節因素,都可以得到較好結果,不同的季節性指數平滑方法只是細微差異了。
但是,我們仔細看預測值和擬合值,還是有一些上升和下降的趨勢和結構沒有撲捉到。預測還有改進的需求!
5-ARIMA預測模型
ARIMA 模型是自回歸AR和移動平均MA加上差分考慮,但ARIMA模型就比較複雜了,對大部分經營分析人員來講,要搞清楚原理和方程公式,太困難了!期望搞清楚 的人必須學過隨機過程,什麼平穩過程、白雜訊等,大部分人頭都大了,現在有了軟體就不問為什麼了,只要知道什麼數據In,什麼結果Out,就可以了。
我們採用專家建模器,但指定僅限ARIMA模型,並考慮季節性因素。
此時,我們看到模型擬合併相比較簡單季節性和Winters模型沒有太大的優勢,結果可接受,但是大家注意到沒有,實際上我們一直沒有考慮自變數的進入問題,假如我們有其它變數可能會影響到男裝銷售收入,情況又會發生什麼變化呢?本想早點完成這個時間序列的主題,但最近一直非常多的事情,又耽擱了這麼長時間。朋友們問的問題沒有收尾總是不好,抓緊時間完成吧。因為,後天要參加中國電信集團的一個EDA論壇,要仔細準備發言稿!在交流的過程中,發現大家都對預測問題非常關注,尤其是數據挖掘領域,有時候分類問題 與預測問題在表達上區分不開,有時候分類就是預測,比如通過判別分析、C5.0規則或Logistics回歸進行監督類建模,得到的結論說該客戶是什麼類 別等級,似乎也可以說是預測;當然,如果能夠預測該消費者什麼時候流失,也就是進行了分類;這樣說吧,其實有時候並不需要嚴格區分分類和預測,關鍵是時間 點。從這也可以看出,預測問題內涵和外延是非常寬泛的,但研究者心中要有數,這決定了你得到的結果該如何應用。
前面的博文提到,如果我們考慮時間序列預測包含有預測和干擾變數如何解決的問題。
從方法角度講,過去沒有統計分析軟體要完成預測可以說是困難的,現在有了軟體工具就方便多了。
從技術角度講:
預測模型如果能夠排除因為異常原因造成的時間點事件和時間段時間,就好了。例如某天停電沒有開業,或者某一段時間比如發生甲型H1NI一周沒有營業收入,這些事件必須能夠告訴模型未來不會再發生了;
當然,我們也要把未來會重複發生的干擾因素納入模型,例如:我們學校某天要開運動會,小賣部的可樂銷量一定提高,或者我們學校7-8月份放暑假,銷量一定減少,像這樣的時間點和時間段事件未來會重複出現,我們如果能夠告訴模型,那麼預測會更準確。
當然如果我們建立的模型能夠預測未來,並能夠將未來可預見的事件,包括時間點和時間段干擾納入預測是非常好的事情啦!
甚至,我們應該能夠把預測模型中的,預測未來周期內的不可預見的時間點和時間段隨時干預預測結果,這就需要考慮如何將預測模型導入生產經營分析系統了。
下面的數據延續前兩篇的案例,只是增加了自變數,(因為手頭這個案例沒有干預因素變數)
在我們增加了5個自變數後,採用預測建模方法,選擇專家建模器,但限制只在ARIMA模型中選擇。
確定後,得到分析結果,我們現在來看一下與原來的模型有什麼不同。從預測值看,比前一模型有了改進,至少這時候的模型捕捉了歷史數據中的下降峰值,這可以認為是當前比較適合的擬合值了。
如果我們觀察預測結果,可以發現模型選擇了兩個預測變數。注意:使用專家建模器時,只有在自變數與因變數之間具有統計顯著性關係時才會包括自變數。如果選 擇ARIMA模型,「變數」選項卡上指定的所有自變數(預測變數)都包括在該模型中,這點與使用專家建模器相反;當確定了最終選擇的預測模型和方法後,我們就可以預測未來了,當然你要指定預測未來的時間點,這裡我們時間包括年、季度和月份;假定我們預測未來半年的銷售收入。
我們分別設定:預測值輸出,95%置信度的上下限。注意:SPSS中文環境有個小Bug,必須改一下名字!在選項中,選擇你的預測時間,預測期將根據你事先定義的數據時間格式填寫。(後面的模型為了讓大家看清楚,實際上我預測了一年的數據,也就是2010年的4個季度的12個月)。
自變數的選擇問題,在預測未來半年的銷售收入中,ARIMA模型可以把其它預測變數納入考慮,但如何確定未來這些預測變數的值呢? 主要方法可以考慮:1)選擇最末期數據;2)選擇近三期數據的平均;3)選擇近三期的移動平均這裡我們選近三期移動平均作為預測自變數數值。上面就是預測結果!於此同時,SPSS活動數據集中也存儲了預測值!
最後,我們要解決時間序列預測的檢驗和統計問題!說實在話,我比較關注偏好商業應用,就是看得見就做得到!從上面的分析,我們基本上就知道了哪種預測模型 更好,也就不去較真只有專業統計學者才關心的統計和檢驗問題,把這些交給統計專家或學術研究吧!(如果你是寫學術論文,就必須強調這一點了!) 實際上我們可以通過軟體得到各種統計檢驗指標和統計檢驗圖表!最後我們看一眼統計檢驗指標結果:大家可以把我們前面做的結果進行相互比較,或許你能夠看出哪些指標更好,哪些指標該如何評測了!
我看出來了,比如:Sig值越大越好,平穩得R方也是越大越好吧!Sig.列給出了 Ljung-Box 統計量的顯著性值,該檢驗是對模型中殘差錯誤的隨機檢驗;表示指定的模型是否正確。顯著性值小於0.05 表示殘差誤差不是隨機的,則意味著所觀測的序列中存在模型無法解釋的結構。
平穩的R方:顯示固定的R平方值。此統計量是序列中由模型解釋的總變異所佔比例的估計值。該值越高(最大值為 1.0),則模型擬合會越好。
檢查模型殘差的自相關函數 (ACF) 和偏自相關函數 (PACF) 的值比只查看擬合優度統計量能更多地從量化角度來了解模型。合理指定的時間模型將捕獲所有非隨機的變異,其中包括季節性、趨勢、循環周期以及其他重要的因 素。如果是這種情況,則任何誤差都不會隨著時間的推移與其自身相關聯(自關聯)。這兩個自相關函數中的顯著結構都可以表明基礎模型不完整。 如果你一定要理解RMSE或者MAE等統計檢驗量,只好找來教科書好好學習了!我想,等我要寫教科書的時候,一定會告訴大家如何檢驗這些統計量,並給出各種計算公式!但我的學生或讀者大部分是文科或企業經營分析人員,講這些東西他們都會跑了!
大家不要忘了,SPSS時間序列預測模塊還包含模型應用,也就是可以把預測模型轉存為XML模型文件,以後預測的時候就可以不用原始數據了!數據分析師培訓推薦閱讀: