Time-Series
為什麼 stl 函數使用隨機數據給出顯著的季節性變化
我使用 stl(黃土對時間序列的季節性分解)函數繪製了以下代碼:
plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))
它顯示了顯著的季節性變化,上面代碼中的隨機數據(rnorm 函數)。每次運行時都會看到顯著的變化,儘管模式不同。兩種這樣的模式如下所示:
當某些數據顯示季節性變化時,我們如何依賴 stl 函數。考慮到其他一些參數,是否需要看到這種季節性變化?感謝您的洞察力。
代碼取自此頁面:這是測試自殺計數數據中季節性影響的合適方法嗎?
黃土分解旨在通過對數據應用平均值來平滑序列,以便將其分解為對數據分析感興趣的組件,例如趨勢或季節性。但這種方法並不打算對季節性的存在進行正式測試。
儘管在您的示例中
stl
返回了季節性週期性的平滑模式,但此模式與解釋序列的動態無關。為了看到這一點,我們可以將每個分量的方差與原始序列的方差進行比較。set.seed(123) x <- ts(rnorm(144, sd=1), frequency=12) a <- stl(x, s.window="periodic") apply(a$time.series, 2, var) / var(x) # seasonal trend remainder # 0.07080362 0.07487838 0.81647852
我們可以看到,餘數解釋了數據中的大部分方差(正如我們對白噪聲過程所期望的那樣)。
如果我們採用具有季節性的序列,則季節性分量的相對方差更為相關(儘管我們沒有直接的方法來測試它,因為 loess 不是參數)。
y <- diff(log(AirPassengers)) b <- stl(y, s.window="periodic") apply(b$time.series, 2, var) / var(y) # seasonal trend remainder # 0.875463620 0.001959407 0.117832537
相對方差表明季節性是解釋序列動態的主要成分。
粗心地看情節
stl
可能具有欺騙性。返回的漂亮模式stl
可能會讓我們認為可以在數據中識別出相關的季節性模式,但仔細觀察可能會發現事實並非如此。如果目的是確定是否存在季節性,黃土分解可以作為初步視圖,但應輔以其他工具。