如何判斷時間序列是否是白雜訊?
純醫學背景學時間序列,只會用R,做題目:某對數收益率是否白雜訊?
直接用Box.test()?這個函數我之前學是建模後判斷殘差是否為白雜訊的,搬過來可以不?
先簡單講講白雜訊特點,和test方法,然後上R代碼
白雜訊(對一系列的e1,e2,e3.....et)定義就三個條件:
1.E(et)=0
2.Var(et)=a^23.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 的定義是:如果 , , ... , , ... 是一系列獨立隨機變數,並且對所有的,, ,那麼{} 是一個 (weakly) stationary process,同時也是一個white noise process.
分開來講的話,
不依賴於。 也不依賴於。The autocovariance function:也就是說autocovariance 只依賴於k, 而不是t。ACF:以上就是理論上的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.Cryer和Kung-Sik Chan的Time Series Analysis with Applications in R(基於R軟體的教材,很不錯,推薦問主有空翻翻~),書中對於平穩性和白雜訊的定義如下:嚴平穩:
如果對一切時滯k和時點,都有與的聯合分布相同,則稱過程{}為嚴平穩的。弱平穩(二階矩平穩):
1.均值函數在所有時間上恆為常數;2.,對所有的時間t和滯後k,也即協方差函數只依賴於時間的滯後長度。白雜訊:不相關的隨機變數序列{}。
顯然,白雜訊過程是嚴平穩的,它的要求比弱平穩要高。
然後,判斷如何判別白雜訊。我只在做殘差分析時需要判斷序列是否為白雜訊,不過原理應該是一樣的~
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為滯後時間位數,n為樣本大小(即樣本中t對應的個數)。而如果你要寫論文的話,可以把ACF圖放進去,這樣會顯得更直觀。很抱歉的是,本人是用matlab的,並不會用R語言,希望懂R的同學幫忙補充。而 @趙兔子 童鞋的回答其實是把問題帶到了正態雜訊,和白雜訊是不同的。iid是白雜訊的一種情況,但它並不能代提白雜訊的概念。歡迎討論 希望可以幫到題主可以, 這是經典假設檢驗。
再加一條,spectral density是常數,就肯定是白雜訊,具體的R用哪個包我還真不了解,但是這個方法我認為是最簡單粗暴的
算功率譜分布power spectral density distribution,白雜訊功率譜是常數。
請問如何確定lag 是多少,上課時候走神了,不太理解這個,在practical 時候用R做,同學說,隨便設置,瞬間懵逼
推薦閱讀:
※時間序列異常檢測演算法研究?
※如何評價facebook開源的prophet時間序列預測工具?
※機器學習門下,有哪些在工業界應用較多,前景較好的小方向?
※時間序列數據的聚類有什麼好方法?
※一個文本里的所有詞不變,順序隨機後,那麼熵改變了多少?如何計算?
TAG:時間序列分析 |