閱讀366 返回首頁    go 阿裏雲 go 技術社區[雲棲]


小白學數據 | 除了計算大姨媽周期,時間序列分析還有什麼用


0?wx_fmt=gif


———

據說最貼心的男票是會記錄下女票每一次大姨媽來的時間,然後繪製成一張月份折線圖以監測女票的身體健康(以避開無法啪啪啪的時間)。你知不知道,這張圖其實就是一個時間序列圖,你看圖預測未來幾個月女票的大姨媽時間就叫做時間序列分析……


咳咳,言歸正傳,時間序列分析是一種廣泛應用的數據處理統計方法,除了計算大姨媽周期,在實際很生活還有很多應用,小白今天就來帶大家探探究竟。

———

小白問:時間序列分析就是分析時間的麼?

答:你是想問分析的是什麼數據吧?簡單來說,時間序列數據是在特定時間內監測或記錄下的有序數據集合。太陽活動、潮汐、股票市場趨勢、疾病傳播等都是時間序列的典型案例。幾乎在任意應用科學或工程學領域,隻要涉及到基於時間的測量,都可以找到時間序列的聲影。科學的定義就是:在特定時間(例如,小時,月或年)內記錄下的有序觀測值集合。

下圖為1720年至1980年的太陽活動圖,就是典型的時間序列:  

0?wx_fmt=jpeg

小白問:哦,就是說在規律的時間間隔內檢測到的有序數據集,那怎麼來分析數據呢?

答:首先,時間序列分析的前提是認為這些收集到的數據點在一段時間內的變化可能具有特定的內部結構,比如趨勢啦或季節變化啦等等。在此前提下,通過比較不同時間點上單個或多個時間序列的值,對時間序列數據進行分析,進而提取出有意義的統計量或其他數據特征

小白問:分析完了怎麼用呐?  

0?wx_fmt=jpeg

答:當然就是來預測女票大姨媽啦。哦,口誤,當然是利用時間係列模型,基於前期觀察到的序列規律來預測未來的數值啦。比如下圖,綠線就是預測值,周邊的灰色是置信區間:

 小白問:什麼信什麼區間?

答:哈哈,我就知道你會問這個問題。舉個例子,你明天要考試數學了,你覺得大概能多少分? 估計70分吧,上下不超過10分。那你對這個預測有多大把握呢?9成吧!我們就說你明天數學考試成績90%的置信區間(Confidence Interval)為60~80,也就是你有90%的信心考出介於60~80的分數。

小白問:好像懂些了。其實我真想做個時間序列分析,然後預測女票啥時候會生氣啊!

答:你還想預測女票啥時候會生氣?你咋不找個機器人做女票!時間序列預測的應用可比這廣泛多了,比如金融市場分析、庫存控製、銷售與市場預測、產量預測、地震預測、工作量預測等等,舉例都舉不完。

小白問:不明覺厲!

呃,那我再給你說明白點兒。下麵這張圖非常清楚地解釋了一般時間序列可以被分解成的三個部分。最上麵的曲線是我們實際觀測到的點,它是由下麵三個曲線疊加而成的結果——趨勢性(第二條曲線),季節性(第三條曲線)和隨機性(第四條曲線) 

0?wx_fmt=jpeg 

時間序列分析的目的主要有兩個,一是要識別監測到的數據所展現出的現象及其本質,就是找到規律,這個規律往往是趨勢性的或者有著較為明確的周期即季節性,因此就需要去掉一些不必要的噪音幹擾(比如上麵的的第四條曲線),並且把趨勢性和季節性分解出來,想圖示那樣;二是要利用這些數據來預測未來同樣時間軸上可能會出現的數值(統籌考慮三個分解部分)。

這兩個目的都要求我們識別時間序列數據內在的模式並將其盡可能準確地描述出來。因為事物發展的規律在長期內相對穩定(比如你女票的大姨媽來訪這樣的事件的發生),所以趨勢性和季節性這樣代表規律的因素,它們的數值變化也相對穩定,在未來的一定時期內,還會像現在看到的這樣子變化,所以一旦我們了解了數據係列的模式,就可以解釋這些數據並結合其他數據來做預測(例如:季節性商品價格的變化和預測)。

不過小白你要記住,無論我們的理解有多深刻,對現象的解釋有多靠譜,時間序列預測的未來越久遠,準確度會愈低。

小白問:一定一定。對了,時間序列分析不會出現很多異常的影響因素麼?比如女票為了不影響遊泳比賽,吃藥推遲了大姨媽時間,再按照曲線推測她後續的經期,就會不準了吧? 

答:好問題,看來小白你已經會舉一反三了。是的,通常收集到的時間序列數據中都會包含有一些隨機擾動因素的影響,我們把這些具有不確定性的因素導致的數量變化統稱為隨機變量,業內常見的是通過“平滑數據”的方法來降低或消除隨機變量帶來的影響,“平滑”通常也被稱為過濾,目前主要有兩大類:平均法和指數平滑法

小白問:指數平滑聽起來就是更快一點的平滑唄?

答:差不多是這個意思。

平均法就是取相鄰幾個數的平均數,然後分析平均數而不是原始數據。舉一個簡單的例子,平均法中最常見的其中一種叫做“移動平均”(Moving Average),這個例子中,我們把前三個時間點的數值取平均數,當作第3個時間點的移動平均數8.667=(9+8+9)/3,第2,3,4個點數值的平均數作為第4個點的移動平均數…以此類推。  

0?wx_fmt=jpeg

指數平滑法稍微複雜一點,但是也更受歡迎,很多時候也更準確。平均法中,過去的曆史觀測點的權重是一樣的,而在指數平滑法裏,越遙遠的觀測點的權重呈指數倍減少,就是說越靠近的點給的權重越高。

移動平均裏也有加權移動平均噢,加權是為了體現距離平均值對應時點位置的遠近,對平均值的不同影響程度,但是,移動平均隻能考慮短期影響,對長期影響怎麼辦呢?雖然離得越遠,影響越小,但是不能杜絕啊,科學的辦法來解決,就是指數平滑了,它是通過往期平滑值與當期實際值的加總來體現平滑預測的理念,通過調整兩部分的權重來體現過去對現在的影響,乃至對未來的影響。

小白問:嗯嗯,那平滑之後,時間序列分析裏麵都用到哪些方法和技術建模啊?

答:其實時間序列的應用可以說非常廣泛但又備受限製。記得上麵我們提到時間序列數據被分解為三個部分嗎?其中大趨勢和季節效應是相對容易建模的,而隨機變化是比較難預測的。常見的針對“普通數據”的統計模型(如響應模型,提升模型等)中,趨勢和季節效應可能都不存在時間序列分析就需要做更多的數據準備工作。例如,與用於標準線性回歸的數據不同,時間序列的數據不一定是獨立的或呈現出相同分布。它的一個決定性特征就是數據的排序是有意義的。數據的排序與內在含義有強依賴關係,更改順序可能會更改數據的意義。

用來建立時間序列數據的模型主要包括以下幾種:

——Box-Jenkins ARIMA(Autoregressive Integrated Moving Average)模型

——Box-Jenkins多變量模型

——Holt-Winters指數平滑法(單,雙,三倍)

——不可觀察成分模型(Unobserved Components Model)

通常使用者的偏好和需要應用的場景會決定最終使用哪類技術。時間有限,這裏肯定沒法給你介紹清楚所有的方法和技術,日後真需要用的時候,就要你自己多做做功課,再多加探索了。

小白問:我簡單查了一下有關時間序列分析的資料,好多數學公式啊,這些模型有沒有現成的程序包?

答:哈哈,小白你真是個求知欲旺盛的好喵。R和Python都有的,推薦你一個鏈接,有Python的樣本程序,可以從基礎學習哦。https://bicorner.com/2015/11/16/time-series-analysis-using-ipython/

剛剛女票召喚我了,你自己去研究研究吧! 

原文發布時間為:2017-02-21

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

最後更新:2017-05-24 17:32:43

  上一篇:go  5月23日雲棲精選夜讀:阿裏下一代數據庫技術:把數據庫裝入容器不再是神話
  下一篇:go  《計算機存儲與外設》----第1章 Computer Organization and Architecture: Themes and Variations Cache存儲器和虛擬存儲器 1.1 Cache存儲器概述