天天看點

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

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

“———

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

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

———”

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

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

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

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

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

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

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

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

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

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

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

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

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

小白問:不明覺厲!

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

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

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

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

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

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

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

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

答:差不多是這個意思。

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

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

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

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

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

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

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

——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”微信公衆号