1. 應用時間序列分析有哪幾種方法
時間序列分析常用的方法:趨勢擬合法和平滑法。
1、趨勢擬合法就是把時間作為自變數,相應的序列觀察值作為因變數,建立序列值隨時間變化的回歸模型的方法。包括線性擬合和非線性擬合。
線性擬合的使用場合為長期趨勢呈現出線形特徵的場合。參數估計方法為最小二乘估計。
非線性擬合的使用場合為長期趨勢呈現出非線形特徵的場合。其參數估計的思想是把能轉換成線性模型的都轉換成線性模型,用線性最小二乘法進行參數估計。實在不能轉換成線性的,就用迭代法進行參數估計。
2、平滑法是進行趨勢分析和預測時常用的一種方法。它是利用修勻技術,削弱短期隨機波動對序列的影響,使序列平滑化,從而顯示出長期趨勢變化的規律 。
(1)時間序列數據分析方法擴展閱讀
時間序列分析的主要用途:
1、系統描述
根據對系統進行觀測得到的時間序列數據,用曲線擬合方法對系統進行客觀的描述。
2、系統分析
當觀測值取自兩個以上變數時,可用一個時間序列中的變化去說明另一個時間序列中的變化,從而深入了解給定時間序列產生的機理。
3、預測未來
一般用ARMA模型擬合時間序列,預測該時間序列未來值。
4、決策和控制
根據時間序列模型可調整輸入變數使系統發展過程保持在目標值上,即預測到過程要偏離目標時便可進行必要的控制。
2. 對時間序列的分析方法有哪幾種
1、 時間序列 取自某一個隨機過程,如果此隨機過程的隨機特徵不隨時間變化,則我們稱過程是平穩的;假如該隨機過程的隨機特徵隨時間變化,則稱過程是非平穩的。 2、 寬平穩時間序列的定義:設時間序列 ,對於任意的 , 和 ,滿足: 則稱 寬平穩。 3、Box-Jenkins方法是一種理論較為完善的統計預測方法。他們的工作為實際工作者提供了對時間序列進行分析、預測,以及對ARMA模型識別、估計和診斷的系統方法。使ARMA模型的建立有了一套完整、正規、結構化的建模方法,並且具有統計上的完善性和牢固的理論基礎。 4、ARMA模型三種基本形式:自回歸模型(AR:Auto-regressive),移動平均模型(MA:Moving-Average)和混合模型(ARMA:Auto-regressive Moving-Average)。 (1) 自回歸模型AR(p):如果時間序列 滿足 其中 是獨立同分布的隨機變數序列,且滿足: , 則稱時間序列 服從p階自回歸模型。或者記為 。 平穩條件:滯後運算元多項式 的根均在單位圓外,即 的根大於1。 (2) 移動平均模型MA(q):如果時間序列 滿足 則稱時間序列 服從q階移動平均模型。或者記為 。 平穩條件:任何條件下都平穩。 (3) ARMA(p,q)模型:如果時間序列 滿足 則稱時間序列 服從(p,q)階自回歸移動平均模型。或者記為 。 特殊情況:q=0,模型即為AR(p),p=0, 模型即為MA(q)。 二、時間序列的自相關分析 1、自相關分析法是進行時間序列分析的有效方法,它簡單易行、較為直觀,根據繪制的自相關分析圖和偏自相關分析圖,我們可以初步地識別平穩序列的模型類型和模型階數。利用自相關分析法可以測定時間序列的隨機性和平穩性,以及時間序列的季節性。 2、自相關函數的定義:滯後期為k的自協方差函數為: ,則 的自相關函數為: ,其中 。當序列平穩時,自相關函數可寫為: 。 3、 樣本自相關函數為: ,其中 ,它可以說明不同時期的數據之間的相關程度,其取值范圍在-1到1之間,值越接近於1,說明時間序列的自相關程度越高。 4、 樣本的偏自相關函數: 其中, 。 5、 時間序列的隨機性,是指時間序列各項之間沒有相關關系的特徵。使用自相關分析圖判斷時間序列的隨機性,一般給出如下准則: ①若時間序列的自相關函數基本上都落入置信區間,則該時間序列具有隨機性; ②若較多自相關函數落在置信區間之外,則認為該時間序列不具有隨機性。 6、 判斷時間序列是否平穩,是一項很重要的工作。運用自相關分析圖判定時間序列平穩性的准則是:①若時間序列的自相關函數 在k>3時都落入置信區間,且逐漸趨於零,則該時間序列具有平穩性;②若時間序列的自相關函數更多地落在置信區間外面,則該時間序列就不具有平穩性。 7、 ARMA模型的自相關分析 AR(p)模型的偏自相關函數 是以p步截尾的,自相關函數拖尾。MA(q)模型的自相關函數具有q步截尾性,偏自相關函數拖尾。這兩個性質可以分別用來識別自回歸模型和移動平均模型的階數。ARMA(p,q)模型的自相關函數和偏相關函數都是拖尾的。 三、單位根檢驗和協整檢驗 1、單位根檢驗 ①利用迪基—福勒檢驗( Dickey-Fuller Test)和菲利普斯—佩榮檢驗(Philips-Perron Test),我們也可以測定時間序列的隨機性,這是在計量經濟學中非常重要的兩種單位根檢驗方法,與前者不同的事,後一個檢驗方法主要應用於一階自回歸模型的殘差不是白雜訊,而且存在自相關的情況。 ②隨機游動 如果在一個隨機過程中, 的每一次變化均來自於一個均值為零的獨立同分布,即隨機過程 滿足: , ,其中 獨立同分布,並且: , 稱這個隨機過程是隨機游動。它是一個非平穩過程。 ③單位根過程 設隨機過程 滿足: , ,其中 , 為一個平穩過程並且 ,,。 2、協整關系 如果兩個或多個非平穩的時間序列,其某個現性組合後的序列呈平穩性,這樣的時間序列間就被稱為有協整關系存在。這是一個很重要的概念,我們利用Engle-Granger兩步協整檢驗法和J 很高興回答樓主的問題 如有錯誤請見諒
3. 時間序列數據分析方法
時間序列數據聚類方法主要包括兩種思路:
一種是通過時間序列進行壓縮降維,轉換成靜態數據,如通過特徵提取、模型參數等方式,再使用靜態數據方法進行聚類;另一種是通過改進傳統的面向靜態數據的點聚類方法,使之適用於序列數據類型。
(1)基於初始數據的聚類
一般指不對初始數據進行壓縮,直接進行聚類。可以有效捕捉時間序列的細節,不丟失局部特徵,但是數據量大的情況下計算效率降低。
(2)基於特徵數據的聚類
通過時域分析、頻域分析等方法,提取時間序列的多尺度特徵,從而把高維的原始數據序列轉換到用特徵向量表示的低維特徵空間。
(3)基於模型的聚類
基本思路是在基於一定的假設條件,用模型擬合原始序列,再用模型是否能生成另外一個序列作為兩個時間序列是否屬於同一類的評價指標,或者用模型的參數作為該序列的特徵再進行聚類。特點是聚類結果不穩定,對模型依賴性很強,難以可視化。
4. (三)時間序列分析的基本方法
1.模型的選擇和建模基本步驟
(1)建模基本步驟
1)用觀測、調查、取樣,取得時間序列動態數據。
2)作相關圖,研究變化的趨勢和周期,並能發現跳點和拐點。拐點則是指時間序列從上升趨勢突然變為下降趨勢的點,如果存在拐點,則在建模時必須用不同的模型去分段擬合該時間序列。
3)辨識合適的隨機模型,進行曲線擬合。
(2)模型的選擇
當利用過去觀測值的加權平均來預測未來的觀測值時,賦予離得越近的觀測值以更多的權,而「老」觀測值的權數按指數速度遞減,稱為指數平滑(exponential smoothing),它能用於純粹時間序列的情況。
對於短的或簡單的時間序列,可用趨勢模型和季節模型加上誤差來進行擬合。對於平穩時間序列,可用自回歸(AR)模型、移動平均(MA)模型或其組合的自回歸移動平均(ARMA)模型等來擬合。
一個純粹的AR模型意味著變數的一個觀測值由其以前的p個觀測值的線性組合加上隨機誤差項而成,就像自己對自己回歸一樣,所以稱為自回歸模型。
MA模型意味著變數的一個觀測值由目前的和先前的n個隨機誤差的線性的組合。
當觀測值多於50個時一般採用ARMA模型。
對於非平穩時間序列,則要先將序列進行差分(Difference,即每一觀測值減去其前一觀測值或周期值)運算,化為平穩時間序列後再用適當模型去擬合。這種經差分法整合後的ARMA模型稱為整合自回歸移動平均模型(Autoregressive Integrated Moving Average),簡稱ARIMA模型(張文彤,2002;薛薇,2005;G.E.P.Box et al.,1994)。
ARIMA模型要求時間序列滿足平穩性和可逆性的條件,即序列均值不隨著時間增加或減少,序列的方差不隨時間變化。但由於我們所關注的地層元素含量變化為有趨勢和周期成分的時間序列,都不是平穩的,這就需要對其進行差分來消除這些使序列不平穩的成分。所以我們選擇更強有力的ARIMA模型。
2.平穩性和周期性研究
有些數學模型要檢驗周期性變化是否為平穩性過程,即其統計特性不隨時間而變化,我們可根據序列圖、自相關函數圖、偏自相關函數圖和譜密度圖等對序列的平穩性和周期性進行識別。當序列圖上表現有明顯分段特徵時可採用分段計演算法,若分段求得的每段頻譜圖基本一致或相似,則認為過程是平穩的,否則是非平穩的。
自相關函數ACF(Autocorrelations function)是描述序列當前觀測值與序列前面的觀測值之間簡單和常規的相關系數;而偏自相關函數PACF(Partial autocorrelations function)是在控制序列其他的影響後,測度序列當前值與某一先前值之間的相關程度。
平穩過程的自相關系數和偏自相關系數只是時間間隔的函數,與時間起點無關,都會以某種方式衰減趨近於0。
當ACF維持許多期的正相關,且ACF的值通常是很緩慢地遞減到0,則序列為非平穩型。
序列的自相關-偏自相關函數具有對稱性,即反映了周期性變化特徵。
3.譜分析
確定性周期函數X(t)(設周期為T)在一定條件下通過傅里葉(Fourier)級數展開可表示成一些不同頻率的正弦和餘弦函數之和(陳磊等,2001),這里假設為有限項,即:
洞庭湖區第四紀環境地球化學
其中,頻率fk=k/T,k=1,2,…,N。
上式表明:如果拋開相位的差別,這類函數的周期變化完全取決於各餘弦函數分量的頻率和振幅。換句話說,我們可以用下面的函數來表示X(t)的波動特徵:
洞庭湖區第四紀環境地球化學
函數p(f)和函數X(t)表達了同樣的周期波動,兩者實際上是等價的,只不過是從頻域和時域兩個不同角度來描述而已。稱p(f)為X(t)的功率譜密度函數,簡稱譜密度。它不僅反映了X(t)中各固有分量的周期情況,還同時顯示出這些周期分量在整體X(t)中各自的重要性。具體說,在X(t)中各周期分量的對應頻率處,譜密度函數圖應出現較明顯的凸起,分量的振幅越大,峰值越高,對X(t)的整體影響也越大。
事實上,無論問題本身是否具有周期性或不確定性(如連續型隨機過程或時間序列)都可以採用類似的方法在頻域上加以描述,只是表示的形式和意義比上面要復雜得多。時間序列的譜分析方法就是要通過估計時間序列的譜密度函數,找出序列中的各主要周期分量,通過對各分量的分析達到對時間序列主要周期波動特徵的把握。
根據譜分析理論,對一個平穩時間序列{Xt},如果其自協方差函數R(k)滿足
如何從實際問題所給定的時間序列 {Xt,t=1,2,…,n} 中估計出其譜密度或標准譜密度函數是譜分析要解決的主要問題。本書採用圖基-漢寧(Tukey-Hanning)窗譜估計法。
5. 什麼是時間序列分析法
時間序列是按時間順序的一組數字序列。時間序列分析就是利用這組數列,應用數理統計方法加以處理,以預測未來事物的發展。時間序列分析是定量預測方法之一,它的基本原理:一是承認事物發展的延續性。應用過去數據,就能推測事物的發展趨勢。二是考慮到事物發展的隨機性。任何事物發展都可能受偶然因素影響,為此要利用統計分析中加權平均法對歷史數據進行處理。該方法方法簡單易行,便於掌握,但准確性差,一般只適用於短期預測。
6. 16種常用的數據分析方法-時間序列分析
時間序列(time series)是系統中某一變數的觀測值按時間順序(時間間隔相同)排列成一個數值序列,展示研究對象在一定時期內的變動過程,從中尋找和分析事物的變化特徵、發展趨勢和規律。它是系統中某一變數受其它各種因素影響的總結果。
研究時間序列主要目的可以進行預測,根據已有的時間序列數據預測未來的變化。時間序列預測關鍵:確定已有的時間序列的變化模式,並假定這種模式會延續到未來。
時間序列的基本特點
假設事物發展趨勢會延伸到未來
預測所依據的數據具有不規則性
不考慮事物發展之間的因果關系
時間序列數據用於描述現象隨時間發展變化的特徵。
時間序列考慮因素
時間序列分析就其發展歷史階段和所使用的統計分析方法看分為傳統的時間序列分析和現代時間序列分析,根據觀察時間的不同,時間序列中的時間可以是可以是年份、季度、月份或其他任何時間形式。
時間序列分析時的主要考慮的因素是:
l長期趨勢(Long-term trend)
時間序列可能相當穩定或隨時間呈現某種趨勢。
時間序列趨勢一般為線性的(linear),二次方程式的 (quadratic)或指數函數(exponential function)。
l季節性變動(Seasonal variation)
按時間變動,呈現重復性行為的序列。
季節性變動通常和日期或氣候有關。
季節性變動通常和年周期有關。
l周期性變動(Cyclical variation)
相對於季節性變動,時間序列可能經歷「周期性變動」。
周期性變動通常是因為經濟變動。
l隨機影響(Random effects)
除此之外,還有偶然性因素對時間序列產生影響,致使時間序列呈現出某種隨機波動。時間序列除去趨勢、周期性和季節性後的偶然性波動,稱為隨機性(random),也稱不規則波動(irregular variations)。
時間序列的主要成分
時間序列的成分可分為4種:
l趨勢(T)、
l季節性或季節變動(S)、
l周期性或循環波動(C)、
l隨機性或不規則波動(I)。
傳統時間序列分析的一項主要內容就是把這些成分從時間序列中分離出來,並將它們之間的關系用一定的數學關系式予以表達,而後分別進行分析。
時間序列建模基本步驟
1)用觀測、調查、統計、抽樣等方法取得被觀測系統時間序列動態數據。
2)根據動態數據作相關圖,進行相關分析,求自相關函數。
相關圖能顯示出變化的趨勢和周期,並能發現跳點和拐點。
跳點是指與其他數據不一致的觀測值。如果跳點是正確的觀測值,在建模時應考慮進去,如果是反常現象,則應把跳點調整到期望值。
拐點則是指時間序列從上升趨勢突然變為下降趨勢的點。如果存在拐點,則在建模時必須用不同的模型去分段擬合該時間序列,例如採用門限回歸模型。
3)辨識合適的隨機模型,進行曲線擬合,即用通用隨機模型去擬合時間序列的觀測數據。
對於短的或簡單的時間序列,可用趨勢模型和季節模型加上誤差來進行擬合。
對於平穩時間序列,可用通用ARMA模型(自回歸滑動平均模型)及其特殊情況的自回歸模型、滑動平均模型或組合-ARMA模型等來進行擬合。
當觀測值多於50個時一般都採用ARMA模型。對於非平穩時間序列則要先將觀測到的時間序列進行差分運算,化為平穩時間序列,再用適當模型去擬合這個差分序列。
spss時間序列分析過程
第一步:定義日期標示量:
打開數據文件,單擊"數據",選擇"定義日期和時間",彈出"定義日期"對話框,
數據中的起始時間就是數據文件裡面的單元格第一個時間,我的第一個是1997年8月,每行表示的是月度銷售量,因此,需要從"定義日期"對話框的左側"個案是"框中選擇"年,月",在左側輸入『1997』,月框中輸入『8』,表示第一個個案的起始月是1997年8月,
最後點擊確認,這樣spss數據文件裡面就會生成3個新的變數
如下圖:
第二步:了解時間序列的變化趨勢
了解時間序列的變化趨勢做一個序列表就可以了,單擊"分析",裡面選擇"時間序列預測,選擇"序列圖"對話框,然後把'平均值'移到"變數"框裡面,『DATE_』移到"時間軸標簽"框中,單擊"確定"。結果如圖
根據序列圖的分析知道,序列的波動隨著季節的波動越來越大,所以我們選擇乘法模型;
第三步:分析
單擊「分析」,選擇時間序列預測,然後選擇「季節性分解」,彈出「季節性分解」對話框,確認無誤之後點擊確定,如圖:
多了四個變數:
lERR表示誤差分析;
lSAS表示季節因素校正後序列;
lSAF表示季節因子;
lSTC表示長期趨勢和循環變動序列。
我們可以把新出現的四個變數、平均值和DATE_做序列圖。先把ERR、SAS、STC和平均值和DATE_做個序列圖,效果如下:
再單獨做個SAT和DATE_的時間序列圖
第四步:預測
1、 單擊「分析」,選擇「時間序列預測」,然後選擇「創建傳統模型」,之後就會彈出「時間序列建模」對話框。
2、 將「平均值」移至「因變數」框中,然後確定中間的「方法」,在下拉列表中選擇「專家建模器」項,單擊右側的「條件」按鈕,彈出「時間序列建模器:專家建模器條件」對話框。
3、 在「時間序列建模器:專家建模器條件」對話框的「模型」選項卡中,在「模型類型」框中選擇「所有模型」項,並勾選「專家建模器考慮季節性模型」復選框,設置完,點「繼續」按鈕
4、 在「時間序列建模器」對話框中,切換至「保存」選項卡中,勾選「預測值」復選框,單擊「導出模型條件」框中「XML文件」後面的「瀏覽」按鈕,然後設置導出的模型文件和保存路徑,然後單擊「確定」按鈕就可以了。
做完上面的步驟之後,在原始數據上面就又會多一列預測值出現。如圖:
之前保存了預測的模型,我們現在就利用那個模型進行預測數據。
1、 單擊「分析」,選擇「時間序列預測」,然後選擇「應用傳統模型」,彈出「應用模型序列」對話框。具體的操作如下圖:
最後一步切換至「保存」界面,勾選「預測值」之後單擊確定就可以了。
從預測值直接看看不出來,可以把預測的數據和原始數據放到一起看下,也是直接做序列圖就可以。
這樣就完成了一次時間序列的模型,具體的預測數據可以看原始數據上面的出現的新的一列數據。
- End -
7. SPSS-數據分析之時間序列分析
當數據與時間息息相關,常具有周期性的變化規律,此時,時間序列分析是一個很好的發現分析及預測其發展變化的統計方法,接下來簡要分享統計分析軟體SPSS中時間序列分析的操作。
問:什麼是時間序列?
答:時間序列是時間間隔不變的情況下收集的不同時間點數據集合。
問:那時間序列分析又是什麼?
答:時間序列分析是通過研究歷史數據的發展變化規律來預測事物的未來發展的統計學方法。公司營業額、銷售額,人口數量,股票等方面的變化預測皆可通過此統計方法。
SPSS中的操作
首先,對數據進行 預處理:
1.查看數據是否有缺失,若有,不便後續處理,則需進行替換缺失值。
轉換→替換缺失值→選擇新變數→輸入新變數名稱、選擇替換缺失值方法。
2.定義日期
數據→定義日期和時間
3.平穩性檢驗(平穩性指的是期望不變,方差恆定,協方差不隨時間改變)
檢驗方法:時序圖檢驗、自相關圖檢驗等。可通過創建時間序列實現數據的平穩化
轉換→創建時間序列
結果(例:運行中位數——跨度為1,則等於原數據)
數據預處理後對數據進行分析研究——序列圖、譜分析、自相關等。
1.序列圖:分析→時間序列預測→序列圖→根據需要選擇變數、時間軸標簽等。
結果(例):可觀察數據的大致波動情況。
2.譜分析:分析→時間序列預測→譜分析→根據需要選擇變數、圖表。
結果(例)
對於周期變化的數據,主要用於偵測系統隱含的周期或者節律行為;
對於非周期的數據,主要用於揭示系統演化過程的自相關特徵。
3.自相關:分析→時間序列預測→自相關→選擇變數及其他。
結果:
解讀:直條高低代表自相關系數的大小,橫軸1-16代表自相關的階數,上下線之間是不具有統計學意義的,偏自相關是去除自相關系數的關聯性傳遞性之後,用偏自相關系數考察剩餘的相關性是否還存在。
關於SPSS時間序列分析的簡要介紹就結束啦!
END
文 | FM
8. 時間序列分析方法
時間序列是指一組在連續時間上測得的數據,其在數學上的定義是一組向量x(t), t=0,1,2,3,...,其中t表示數據所在的時間點,x(t)是一組按時間順序(測得)排列的隨機變數。包含單個變數的時間序列稱為單變數時間序列,而包含多個變數的時間序列則稱為多變數。
時間序列在很多方面多有涉及到,如天氣預報,每天每個小時的氣溫,股票走勢等等,在商業方面有諸多應用,如:
下面我們將通過一個航班數據來說明如何使用已有的工具來進行時間序列數據預測。常用來處理時間序列的包有三個:
對於基於AR、MA的方法一般需要數據預處理,因此本文分為三部分:
通過簡單的初步處理以及可視化可以幫助我們有效快速的了解數據的分布(以及時間序列的趨勢)。
觀察數據的頻率直方圖以及密度分布圖以洞察數據結構,從下圖可以看出:
使用 statsmodels 對該時間序列進行分解,以了解該時間序列數據的各個部分,每個部分都代表著一種模式類別。借用 statsmodels 序列分解我們可以看到數據的主要趨勢成分、季節成分和殘差成分,這與我們上面的推測相符合。
如果一個時間序列的均值和方差隨著時間變化保持穩定,則可以說這個時間序列是穩定的。
大多數時間序列模型都是在平穩序列的前提下進行建模的。造成這種情況的主要原因是序列可以有許多種(復雜的)非平穩的方式,而平穩性只有一種,更加的易於分析,易於建模。
在直覺上,如果一段時間序列在某一段時間序列內具有特定的行為,那麼將來很可能具有相同的行為。譬如已連續觀察一個星期都是六點出太陽,那麼可以推測明天也是六點出太陽,誤差非常小。
而且,與非平穩序列相比,平穩序列相關的理論更加成熟且易於實現。
一般可以通過以下幾種方式來檢驗序列的平穩性:
如果時間序列是平穩性的,那麼在ACF/PACF中觀測點數據與之前數據點的相關性會急劇下降。
下圖中的圓錐形陰影是置信區間,區間外的數據點說明其與觀測數據本身具有強烈的相關性,這種相關性並非來自於統計波動。
PACF在計算X(t)和X(t-h)的相關性的時候,挖空在(t-h,t)上所有數據點對X(t)的影響,反應的是X(t)和X(t-h)之間真實的相關性(直接相關性)。
從下圖可以看出,數據點的相關性並沒有急劇下降,因此該序列是非平穩的。
如果序列是平穩的,那麼其滑動均值/方差會隨著時間的變化保持穩定。
但是從下圖我們可以看到,隨著時間的推移,均值呈現明顯的上升趨勢,而方差也呈現出波動式上升的趨勢,因此該序列是非平穩的。
一般來講p值小於0.05我們便認為其是顯著性的,可以拒絕零假設。但是這里的p值為0.99明顯是非顯著性的,因此接受零假設,該序列是非平穩的。
從上面的平穩性檢驗我們可以知道該時間序列為非平穩序列。此外,通過上面1.3部分的序列分解我們也可以看到,該序列可分解為3部分:
我們可以使用數據轉換來對那些較大的數據施加更大的懲罰,如取對數、開平方根、立方根、差分等,以達到序列平穩的目的。
滑動平均後數據失去了其原來的特點(波動式上升),這樣損失的信息過多,肯定是無法作為後續模型的輸入的。
差分是常用的將非平穩序列轉換平穩序列的方法。ARIMA中的 'I' 便是指的差分,因此ARIMA是可以對非平穩序列進行處理的,其相當於先將非平穩序列通過差分轉換為平穩序列再來使用ARMA進行建模。
一般差分是用某時刻數值減去上一時刻數值來得到新序列。但這里有一點區別,我們是使用當前時刻數值來減去其對應時刻的滑動均值。
我們來看看剛剛差分的結果怎麼樣。
讓我們稍微總結下我們剛剛的步驟:
通過上面的3步我們成功的將一個非平穩序列轉換成了一個平穩序列。上面使用的是最簡單的滑動均值,下面我們試試指數滑動平均怎麼樣。
上面是最常用的指數滑動平均的定義,但是pandas實現的指數滑動平均好像與這個有一點區別,詳細區別還得去查pandas文檔。
指數滑動均值的效果看起來也很差。我們使用差分+指數滑動平均再來試試吧。
在上面我們通過 取log+(指數)滑動平均+差分 已經成功將非平穩序列轉換為了平穩序列。
下面我們看看,轉換後的平穩序列的各個成分是什麼樣的。不過這里我們使用的是最簡單的差分,當前時刻的值等於原始序列當前時刻的值減去原始序列中上一時刻的值,即: x'(t) = x(t) - x(t-1)。
看起來挺不錯,是個平穩序列的樣子。不過,還是檢驗一下吧。
可以看到,趨勢(Trend)部分已基本被去除,但是季節性(seasonal)部分還是很明顯,而ARIMA是無法對含有seasonal的序列進行建模分析的。
在一開始我們提到了3個包均可以對時間序列進行建模。
為了簡便,這里 pmdarima 和 statsmodels.tsa 直接使用最好的建模方法即SARIMA,該方法在ARIMA的基礎上添加了額外功能,可以擬合seasonal部分以及額外添加的數據。
在使用ARIMA(Autoregressive Integrated Moving Average)模型前,我們先簡單了解下這個模型。這個模型其實可以包括三部分,分別對應著三個參數(p, d, q):
因此ARIMA模型就是將AR和MA模型結合起來然後加上差分,克服了不能處理非平穩序列的問題。但是,需要注意的是,其仍然無法對seasonal進行擬合。
下面開始使用ARIMA來擬合數據。
(1) 先分訓練集和驗證集。需要注意的是這里使用的原始數據來進行建模而非轉換後的數據。
(2)ARIMA一階差分建模並預測
(3)對差分結果進行還原
先手動選擇幾組參數,然後參數搜索找到最佳值。需要注意的是,為了避免過擬合,這里的階數一般不太建議取太大。
可視化看看結果怎麼樣吧。
(6)最後,我們還能對擬合好的模型進行診斷看看結果怎麼樣。
我們主要關心的是確保模型的殘差(resial)部分互不相關,並且呈零均值正態分布。若季節性ARIMA(SARIMA)不滿足這些屬性,則表明它可以進一步改善。模型診斷根據下面的幾個方面來判斷殘差是否符合正態分布:
同樣的,為了方便,我們這里使用 pmdarima 中一個可以自動搜索最佳參數的方法 auto_arima 來進行建模。
一般來說,在實際生活和生產環節中,除了季節項,趨勢項,剩餘項之外,通常還有節假日的效應。所以,在prophet演算法裡面,作者同時考慮了以上四項,即:
上式中,
更多詳細Prophet演算法內容可以參考 Facebook 時間序列預測演算法 Prophet 的研究 。
Prophet演算法就是通過擬合這幾項,然後把它們累加起來得到時間序列的預測值。
Prophet提供了直觀且易於調整的參數:
Prophet對輸入數據有要求:
關於 Prophet 的使用例子可以參考 Prophet example notebooks
下面使用 Prophet 來進行處理數據。
參考:
Facebook 時間序列預測演算法 Prophet 的研究
Prophet example notebooks
auto_arima documentation for selecting best model
數據分析技術:時間序列分析的AR/MA/ARMA/ARIMA模型體系
https://github.com/advaitsave/Introction-to-Time-Series-forecasting-Python
時間序列分析
My First Time Series Comp (Added Prophet)
Prophet官方文檔: https://facebookincubator.github.io
9. 數據分析之時間序列分析
顧名思義,時間序列就是按照時間順利排列的一組數據序列。時間序列分析就是發現這組數據的變動規律並用於預測的統計技術。該技術有以下三個基本特點:
1.假設事物發展趨勢會延伸到未來;
2.預測所依據的數據具有不規則性;
3.不考慮事物發展之間的因果關系。
對時間序列進行分析的最終目的,是要通過分析序列進行合理預測,做到提前掌握其未來發展趨勢,以此為業務決策提供依據。
移動平均法和指數平滑法的局限
移動平均法是一種簡單平滑預測技術,它的基本思想是:根據時間序列資料逐項推移,依次計算包含一定項數的序時平均值,以反映長期趨勢。但這種方法不適合預測具有復雜趨勢的時間序列。指數平滑法是移動平均法的改進方法,通過對歷史數據的遠近不同賦予不同的權重進行預測。但在實際應用中,指數平滑法的預測值通常會滯後於實際值,尤其是所預測的時間序列存在長期趨勢時,這種滯後的情況更加明顯。
在實際進行時間序列預測時,遇到的數據會比較復雜,所以我們需要用到更專業的預測方法來對數據進行合理預測。通常情況下一個時間序列包含四種因素,它們會通過不同的組合方式影響時間序列的發展變化。
時間序列四種因素有兩種組合方式。
1.四種因素相互獨立,即時間序列是由四種因素直接疊加而形成的,可用加法模型表示:
Y=T+S+C+I
2.四種因素相互影響,即時間序列是綜合四種因素而形成的,可用乘法模型表示:
Y=T×S×C×I,通常遇到的時間序列都是乘法模型。其中,原始時間序列值和長期趨勢可用絕對數表示,季節變動、循環變動和不規則變動則用相對數(通常是變動百分比)表示。
當我們需要對一個時間序列進行預測時,需要將上述四種因素從時間序列中分解出來。原因是:
1.把因素從時間序列中分解出來後,就能克服其他因素的影響,僅考量某一種因素對時間序列的影響;
2.分解這四種因素後,也可以分析他們之間的相互作用,以及它們對時間序列的綜合影響;
3.當去掉某些因素後,就可以更好地進行時間序列之間的比較,從而更加客觀地反映事物變化發展規律;
4.分解這些因素後的序列可以用於建立回歸模型,從而提高預測精度。
通常情況,我們會考慮進行季節因素的分解,也就是將季節變動因素從原時間序列中去除,並生成由剩餘的三種因素構成的序列來滿足後續分析需求。
如果時間序列圖的趨勢隨著時間的推移,序列的季節波動變得越來越大,則建議使用乘法模型;如果序列的季節波動能夠基本維持恆定,則建議使用加法模型。
時間序列的預測步驟主要分為四步:
(1)繪制時間序列圖觀察趨勢;
(2)分析序列平穩性並進行平穩化;
(3)時間序列建模分析;
(4)模型評估與預測;
平穩性是指時間序列的所有統計性質都不會隨著時間的推移而發生變化,對於一個平穩的時間序列來說,需要具有以下特徵:
(1)均數和方差不隨時間變化;
(2)自相關系數只與時間間隔有關,與所處的時間無關。
相關系數是用來量化變數之間的相關程度。自相關系數研究的是一個序列中不同時期的相關系數,也就是時間序列計算其當前期和不同滯後期的一系列相關系數。
目前主流的時間序列預測方法都是針對平穩的時間序列進行分析的,但是實際上,我們遇到的大多數時間序列都不平穩,所以在分析時,需要首先識別序列的平穩性,並且把不平穩的序列轉換為平穩序列。一個時間序列只有被平穩化處理過,才能被控制和預測。
將時間序列平穩化的方式有很多,基礎的方法是差分,因為這個方法有助於我們解讀時間序列模型。差分,就是指序列中前後相鄰的兩期數據之差。
ARIMA模型是時間序列分析中常用的一種模型,其全稱為求和自回歸移動平均模型。該模型形式為:ARIMA(p,d,q)(P,D,Q)。該模型有6個參數,前3個參數(p,d,q)針對季節性變化後的序列,後三個參數(P,D,Q)主要用來描述季節性變化,兩個序列是相乘的關系,因此,該模型也稱為復合季節模型。
其中:p,是指移除季節性變化後的序列所滯後的p期,取值通常為0或1,大於1的情況較少;d,是指移除季節性變化後的序列進行了d階差分,取值通常為0、1或2;q,是指移除季節性變化後的序列進行了q次移動平均,取值通常為0或1,很少會超過2。大寫的P,D,Q的含義相同,只是應用在包含季節性變化的序列上。本例中,該模型可解讀為,對移除季節因素的序列和包含季節因素的序列分別進行一階差分和一次移動平均,綜合兩個模型而構建出的時間序列模型。
模型擬合度主要通過R平方或平穩的R平方來評估模型擬合優度,以及在比較多個模型的情況下,通過比較統計量從而找到最優模型。本例中,由於原始序列具有季節變動因素,所以,平穩的R平方則更具參考意義。該值等於32.1%,所以,該時間序列模型的擬合效果一般。
模型統計提供了更多的統計量用以評估時間序列的數據擬合效果。本例中,雖然平穩的R平方值為32.1%,但是「楊-博克斯Q(18)」統計量的顯著性(P值)=0.706,大於0.05(此處的顯著性(P值)>0.05是期望得到的結果),則接受原假設,認為這個序列的殘差符合隨機序列分布,同時也沒有離群值的出現,這些也都反映出數據的擬合效果還是可以接受的。
10. 時間序列分析
時間序列顧名思義即是通常在連續時間上採集的序列數據。例如股票指數數據、營收數據和天氣數據等。時間序列分析是利用已知數據使用合適的模型擬合時間序列同時估算相應模型的參數。時間序列分析的模型與方法體現了我們對於時間序列自然屬性的理解。同時這些模型方法也能夠用於對時間序列進行預測和模擬。
與信號分析類似,時間序列分析的方法也有時間域和頻率域的方法;有單變數和多變數方法;有線性方法和非線性方法;連續序列和離散序列。
一般時間序列可以依據變化特徵分解為四個部分,即趨勢(trend)、季節性(seasonal)、周期性(cyclical)和不規則(irregular)部分。
構建時間序列預測模型的一種重要是方法使用隨機過程理論。這與地質統計的分析方法是相同的,只是分析對象不同:時間序列為時間點上的數據而地質統計為空間點上的數據。這里認為時間序列上的數據點為隨機變數,整個時間序列為一個隨機函數。描述不同時間點上的數據之間的關系,同樣要使用自協方差、自相關函數。同時二者同樣實在穩態假設之下進行分析,應用中也需要對於數據進行去除趨勢等處理使之滿足穩態條件。時間序列分析中的自回歸模型(AR)相當於地質統計中的簡單克里金。