[時間序列分析]--平穩性,白噪聲的檢驗


使用mathematica來實現。

做時間序列分析,之前需要做兩個准備工作,即檢查序列是否是平穩的,如果是平穩的,還要檢查是否是白噪聲。我們一個一個來講。

使用數據


我們用一個例子來說明:數據集是49 - 98 北京最高氣溫,數據如下:

{{1949., 38.8}, {1950., 35.6}, {1951., 38.3}, {1952., 39.6}, {1953.,   
  37.}, {1954., 33.4}, {1955., 39.6}, {1956., 34.6}, {1957.,   
  36.2}, {1958., 37.6}, {1959., 36.8}, {1960., 38.1}, {1961.,   
  40.6}, {1962., 37.1}, {1963., 39.}, {1964., 37.5}, {1965.,   
  38.5}, {1966., 37.5}, {1967., 35.8}, {1968., 40.1}, {1969.,   
  35.9}, {1970., 35.3}, {1971., 35.2}, {1972., 39.5}, {1973.,   
  37.5}, {1974., 35.8}, {1975., 38.4}, {1976., 35.}, {1977.,   
  34.1}, {1978., 37.5}, {1979., 35.9}, {1980., 35.1}, {1981.,   
  38.1}, {1982., 37.3}, {1983., 37.2}, {1984., 36.1}, {1985.,   
  35.1}, {1986., 38.5}, {1987., 36.1}, {1988., 38.1}, {1989.,   
  35.8}, {1990., 37.5}, {1991., 35.7}, {1992., 37.5}, {1993.,   
  35.8}, {1994., 37.2}, {1995., 35.}, {1996., 36.}, {1997.,   
  38.2}, {1998., 37.2}}  

 

一.
畫出散點圖(時序圖)

首先我們畫出散點圖,先從總體上看一下數據

  1. ListLinePlot[data, PlotStyle -> Dashed, PlotMarkers -> {"o", 8}]  


二.
平穩性的檢驗

方法:平穩性檢驗一般可以從時序圖上看或者通過相關性的圖中看出。
我們這里講一下相關圖的方法。
原理:平穩序列通常具有短期相關性。該性質用自相關系數來描述就是隨着延遲期數的增加,平穩序列的自相關系數會很快的衰減到0
特別,關於延遲的相關系數的計算公式如下

 

在mathematica里使用的函數是CorrelationFunction[],具體代碼如下

 

ListPlot[  
 CorrelationFunction[Table[x[i], {i, 1, 100}], {20}],  
 PlotMarkers -> {Automatic, Medium}, Filling -> Axis,   
 FillingStyle -> Directive[Thickness[.01], Green, Dashed],   
 PlotRange -> All  
 ]  


可以看到相關系數迅速衰減到0,說明該序列是平穩的。

上面說的相對平穩其實是憑直覺的,下面講一個稍微好一點的方法。

這里要用到下面的Barlett定理,可以先看一下 三.判斷數據是否是白噪聲 的那張圖,由於p服從N[0,1/n]的正態分布,故我們可以考慮算出其95%的置信區間。

pacf[data_, lmax_, clev_: 0.95] := 
 Show[ListPlot[CorrelationFunction[data, {lmax}], Filling -> Axis, 
   PlotRange -> {{0, lmax}, {-1.5, 1.5}}, 
   PlotStyle -> PointSize[Medium]],
  Graphics[{Dashed, Line[{{0, #}, {lmax, #}}]}] & /@ (
   Quantile[NormalDistribution[], {(1 - clev)/2, 1 - (1 - clev)/2}]/
   Sqrt[Length[data]])]

我們看一下效果:

可以看到除了第一個點,那個不算,因為他是滯后為0,所以相關系數為1。后面的點都在95%的置信區間里面。這樣只要后面的點不會在超出這個置信區間,就可以認為其是衰減到0的。


三.
判斷數據是否是白噪聲

如果一個序列是平穩的,那么下面我們就要判斷數據是否是白噪聲,白噪聲沒有研究的意義。
在mathematica中,判斷白噪聲使用AutocorrelationTest[],這個函數
這個函數必須要說明一下,首先他的原理是bartlett定理

 


下面對於AutocorrelationTest[]這個函數的使用進行說明,如下圖:

 

她返回的是一個p值,p值越大表示原假設成立的可能性越大,即數據是隨機的可能性越大。

即p值越大,隨機的可能性越大

 

  1. ListPlot[Table[AutocorrelationTest[data[[All, 2]], i], {i, 1, 10}], Filling -> Axis]  

我們可以畫出關於滯后數的圖

 

我們可以看到p值還是挺大的,所以認為該數據是白噪聲。
我們還有一些其他的檢驗方法,如下圖

 

  1. AutocorrelationTest[data, Automatic, "HypothesisTestData"]["TestDataTable", All]  


也可以使用下圖的方式
以上就把白噪聲的檢驗做完了。

 

 

 

參考知乎用戶:  https://zhuanlan.zhihu.com/p/26227700 王茂南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM