用R語言進行時間序列分析及預測(一)
7 人贊了文章
《商務與經濟統計》與《R語言實戰》實踐筆記
數據和案例摘錄自《商務與經濟統計》,並作出一些修改。
時間序列的模式主要是3大類,1.水平模式,2趨勢模式,3,季節模式。在第一部分的筆記內容,先記錄前兩種模式。
1.水平模式
當數據圍繞著一個不變的均值上下波動時,則存在水平模式。為了說明時間序列擁有水平模式,考慮下表的數據。這些數據是佛蒙特州本寧頓的一個批發商銷售汽油的數量。時間序列的平均數為每月19.25(1000加侖)。
(1)輸入數據,觀察時間序列模式。
從上面時間序列圖,可以顯示出是水平模式,但是這個只是主觀的觀察,並沒有足夠的證據。關於確定時間序列是否平穩,這裡先不做討論。
(2)單指數平滑法
單指數平滑法指數平滑法是利用過去時間序列的加權平均數作為預測值,即我們只選擇一個權重——最近時期觀察觀測值的權重。其他數據的權重可以自動推算出來,並隨著觀測值距離預測值越遠,權重也變得越來越小。這個權重就是α值,α值越接近1,則近期觀測值的權重 越大;反之,α越接近於0。而這個α值在R語言可以最優化在給定數據集上的擬合效果。
ets(mode=「ANN」)語句對tsales時序擬合單指數模型,其中A表示可以加誤差,NN表示時序中不存在趨勢項(斜率)和季節項。
(3)向前預測
forecast()函數用於預測時序未來的k步,其形式為forecast(fit,k)。這一數據集中一步向前預測的結果是19.24,其95%的置信區間為14.50到23.99,80%的置信區間為16.14到22.14。並給出了預測折線圖。
(4)準確性度量
forecast包同時提供了accuracy()函數,展示了時序預測中最主流的幾個準確性度量。一般來說平均誤差(ME)和平均百分比誤差(MPE)用處不大,因為正向和負向的誤差會抵消掉。在這幾種預測準確性度量中,並不存在某種最優度量,不過平均殘差平方和的平方根(RMSE)相對最有名,最常用。
2.有線性的趨勢推測法
我們考慮的案例是某自行車製造廠過去10年自行車銷售量的的時間序列。
(1)輸入數據,觀察時間序列的模式
這一部分主要用Holt線性指數平滑法進行預測,它是單一指數平滑法的一個推廣,使用兩個平滑常數:一個用於解釋時間序列的水平,另一個用於解釋數據中的線性趨勢(斜率)。
從上面的時間序列圖可以顯示在過去10年有些上下的波動,但是我們可能會同意,時間序列似乎總體是增長的或者有向上的趨勢。下面我們就用Holt指數平滑法建立用於預測有線性趨勢的時間序列的指數平滑指數。
(2)Holt線性平滑法
注意看一下model=「AAN」,這個擬合模型用了水平項和趨勢項(斜率)兩個參數。而α和β值是R語言自動給出的最優化擬合值。
(3)向前預測
forecast()函數預測了接下來5年自行車的銷售量,80%和95%的置信區間,並給出了折線圖。
(4)準確性度量
參考《商務與經濟統計》第17章 時間序列分析及預測,在這案例書中用了兩個方法預測,第一個線性趨勢回歸得出MSE值為3.837,即RMSE=1.959,第二個是Holt線性指數平滑,給定了α=0.1,β=0.2,建立預測,得出MSE值為4.41,即RMSE=2.1,雖然在預測度量的幾個數據中並不存在最優度量,但是通過對比,可以看出用R語言擬合的模型RMSE值更小。
《商務與經濟統計》 書中對於α值和β值,因為使用的工具是Minitab,雖然沒有用過,不過應該是由於自身的局限,需要我們自己去試驗不同的α值和β值,這非常費時間和準確度不足,而R語言在這方面就更強大的,可以幫助我們選擇最合適的α值和β值。
推薦閱讀:
※大眾點評美食系列--上海站
※python入門第一課(2)——如何讓你擁有兩個版本的python?
※python入門第二課——基本語法
※如何利用數據驅動設計
※同業分析工具(excel)3.0版
TAG:數據分析 |