如何判斷時間序列是否是白雜訊?

純醫學背景學時間序列,只會用R,做題目:某對數收益率是否白雜訊?

直接用Box.test()?這個函數我之前學是建模後判斷殘差是否為白雜訊的,搬過來可以不?


先簡單講講白雜訊特點,和test方法,然後上R代碼

白雜訊(對一系列的e1,e2,e3.....et)定義就三個條件:

1.E(et)=0

2.Var(et)=a^2

3.Cov(et,es)=0 (其中t不等於s)

而檢驗一般用Box-Ljung test,公式如下:

R代碼如下:

set.seed(111)
#####生成正太隨機數
ds=rnorm(1000)
#####Box-Ljung 檢驗
Box.test(ds,type="Ljung",lag=log(length(ds)))

Box-Ljung test
data: ds
X-squared = 5.4432, df = 6.9078, p-value = 0.5957

#####p值大於0.05,說明接受為白雜訊,下面畫畫圖:


White noise 的定義是:如果 epsilon _{0} , epsilon _{1} , ... , epsilon _{t} , ... 是一系列獨立隨機變數,並且對所有的tEleft( epsilon _{t}  
ight) =0, Varleft( epsilon _{t}  
ight) =sigma ^{2} ,那麼{epsilon _{t} } 是一個 (weakly) stationary process,同時也是一個white noise process.

分開來講的話,

Eleft( epsilon _{t}  
ight) =0 不依賴於t

Varleft( epsilon _{t}  
ight) =sigma ^{2} 也不依賴於t

The autocovariance function:

Covleft( epsilon _{t}, epsilon _{t+k}   
ight) =_{0,  k
e 0}^{sigma^{2}, k=0}

也就是說autocovariance 只依賴於k, 而不是t。

ACF:


ho left( k 
ight)=Corleft( epsilon _{t} , epsilon _{t+k}  
ight)=_{0, k
e 0}^{1, k=0}

以上就是理論上的white noise。

如果想用R來判斷是否是white noise,可以從time series 和 acf 的圖像上來分析。

time series 的圖像可用 ts.plot() 來看。從數學的定義可以看出,期望為0,方差固定。也就意味著圖像基本上在y=0這個軸上上下波動,而且沒有遞增或者遞減的趨勢。比如下面這樣的:

另外,acf 的圖像可用 acf() 來看。從數學的定義可以看出,當t=0時,acf=1,其他時候acf=0。實際情況中acf不等於0,而是非常接近0。比如下面這樣的:

R的代碼如下:

w = rnorm(500,0,1)

ts.plot(w, main="white noise")

w.acf &<- acf(w, lag=48, main="white noise")

w.acf


經趙八萬童鞋提醒,發現之前寫嚴了白雜訊定義。

兔子不才,認為已有的回答貌似沒有區分開【弱平穩】【白雜訊】這兩個概念呢~

首先,我學的教材是Jonathan.D.CryerKung-Sik ChanTime Series Analysis with Applications in R(基於R軟體的教材,很不錯,推薦問主有空翻翻~),書中對於平穩性和白雜訊的定義如下:

嚴平穩

如果對一切時滯k和時點t_{1}, t_{2} ,...,t_{k} ,都有Y_{t_{1}} ,Y_{t_{2} } ,...,Y_{t_{n} } Y_{t_{1} -k} ,Y_{t_{2} -k} ,...,Y_{t_{n} -k} 的聯合分布相同,則稱過程{Y_{t} }為嚴平穩的。

弱平穩(二階矩平穩)

1.均值函數在所有時間上恆為常數;

2.gamma _{t.t-k}=gamma _{0,k}  ,對所有的時間t和滯後k,也即協方差函數只依賴於時間的滯後長度。

白雜訊:

不相關的隨機變數序列{e_{t} }。

顯然,白雜訊過程是嚴平穩的,它的要求比弱平穩要高。

然後,判斷如何判別白雜訊。我只在做殘差分析時需要判斷序列是否為白雜訊,不過原理應該是一樣的~

1.畫時序圖,看是否具有某種明顯的趨勢,以及前後波動的幅度是否大概相同。

2.畫樣本ACF圖,看序列是否自相關,這部分前面的回答已經講的很詳細了,我就不贅述了。但是此時能說明的只是是否自相關而非是否獨立,總所周知,不相關與獨立是不等價的。所以,往往我們會做正態性檢驗(比如QQ圖, Shapiro-Wilk test, Kolmogrov-Smircling test, Cramer-von Mises test, Anderson Darling test, Jarque-Bera test),希望得到模型是正態的結論,再利用 正態變數的獨立性與不相關性等價 這一性質來進一步得到序列是獨立的結論。

另外也可以用非參數(不依賴於對總體的假設,所以此時無須進行正態性檢驗)的方法 Wald-Wolfowitz runs test來檢驗是否獨立。零假設為獨立,備擇假設為不獨立。高於或低於中位數的遊程被計數,遊程比較少意味著正相關,遊程太多意味著負相關。相應的R代碼為runs(rstudent(model)).

這學期剛學完時間序列,理解得不對的地方歡迎指正。


引用一段來自wikipedia關於白雜訊的定義:

In signal processing, white noise is a random signal with a constant power spectral density』

翻譯過來為『在信號處理中,白雜訊是一個有著恆定的功率密度的隨機信號。』

據我個人經驗和理解,白雜訊在時間序列中的意義就是看它到底有沒有自相關。

而檢驗一段時間序列是否存在自相關性,個人認為最直接有效的方法是做Ljung-Box Q test,

m=ln(n) m為滯後時間位數,n為樣本大小(即樣本中t對應的個數)。

而如果你要寫論文的話,可以把ACF圖放進去,這樣會顯得更直觀。

很抱歉的是,本人是用matlab的,並不會用R語言,希望懂R的同學幫忙補充。

而 @趙兔子 童鞋的回答其實是把問題帶到了正態雜訊,和白雜訊是不同的。iid是白雜訊的一種情況,但它並不能代提白雜訊的概念。

歡迎討論 希望可以幫到題主


可以, 這是經典假設檢驗。


再加一條,spectral density是常數,就肯定是白雜訊,具體的R用哪個包我還真不了解,但是這個方法我認為是最簡單粗暴的


算功率譜分布power spectral density distribution,白雜訊功率譜是常數。


請問如何確定lag 是多少,上課時候走神了,不太理解這個,在practical 時候用R做,同學說,隨便設置,瞬間懵逼


推薦閱讀:

時間序列異常檢測演算法研究?
如何評價facebook開源的prophet時間序列預測工具?
機器學習門下,有哪些在工業界應用較多,前景較好的小方向?
時間序列數據的聚類有什麼好方法?
一個文本里的所有詞不變,順序隨機後,那麼熵改變了多少?如何計算?

TAG:時間序列分析 |