當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R spec.pgram 通過平滑周期圖估計時間序列的譜密度


R語言 spec.pgram 位於 stats 包(package)。

說明

spec.pgram 使用快速傅裏葉變換計算周期圖,並可選擇使用一係列修改的 Daniell 平滑器(移動平均值為最終值賦予一半權重)來平滑結果。

用法

spec.pgram(x, spans = NULL, kernel, taper = 0.1,
           pad = 0, fast = TRUE, demean = FALSE, detrend = TRUE,
           plot = TRUE, na.action = na.fail, ...)

參數

x

單變量或多變量時間序列。

spans

奇整數向量,給出用於平滑周期圖的修改丹尼爾平滑器的寬度。

kernel

或者,類 "tskernel" 的內核平滑器。

taper

指定要逐漸減少的數據比例。在係列開始和結束時,對這部分數據應用分割餘弦鍾形錐度。

pad

填充數據的比例。在序列末尾添加零,以按比例 pad 增加其長度。

fast

邏輯性;如果是TRUE,則將序列填充到高度複合的長度。

demean

合乎邏輯的。如果 TRUE ,則減去該係列的平均值。

detrend

合乎邏輯的。如果是 TRUE ,則從係列中刪除線性趨勢。這也將消除平均值。

plot

繪製周期圖?

na.action

NA 動作函數。

...

傳遞給 plot.spec 的圖形參數。

細節

原始周期圖不是譜密度的一致估計量,但相鄰值是漸近獨立的。因此,假設譜密度是平滑的,可以通過平滑原始周期圖來導出一致的估計量。

該序列將自動用零填充,直到序列長度是一個高度複合數,以幫助快速傅裏葉變換。這是由 fast 而不是 pad 參數控製的。

零處的周期圖理論上為零,因為係列的均值被刪除(但這可能會受到錐化的影響):它在平滑過程中被相鄰值的插值所取代,並且不會返回該頻率的值。

"spec" 的列表對象(請參閱 spectrum ),具有以下附加組件:

kernel

kernel 參數,或從 spans 構造的內核。

df

譜密度估計的分布可以通過具有 df 自由度的(縮放的)卡方分布來近似。

bandwidth

Bloomfield(1976 年,第 201 頁)定義的內核平滑器的等效帶寬。

taper

taper 參數的值。

pad

pad 參數的值。

detrend

detrend 參數的值。

demean

demean 參數的值。

如果 plot 為 true,則結果會以不可見的方式返回。

例子

require(graphics)

## Examples from Venables & Ripley
spectrum(ldeaths)
spectrum(ldeaths, spans = c(3,5))
spectrum(ldeaths, spans = c(5,7))
spectrum(mdeaths, spans = c(3,3))
spectrum(fdeaths, spans = c(3,3))

## bivariate example
mfdeaths.spc <- spec.pgram(ts.union(mdeaths, fdeaths), spans = c(3,3))
# plots marginal spectra: now plot coherency and phase
plot(mfdeaths.spc, plot.type = "coherency")
plot(mfdeaths.spc, plot.type = "phase")

## now impose a lack of alignment
mfdeaths.spc <- spec.pgram(ts.intersect(mdeaths, lag(fdeaths, 4)),
   spans = c(3,3), plot = FALSE)
plot(mfdeaths.spc, plot.type = "coherency")
plot(mfdeaths.spc, plot.type = "phase")

stocks.spc <- spectrum(EuStockMarkets, kernel("daniell", c(30,50)),
                       plot = FALSE)
plot(stocks.spc, plot.type = "marginal") # the default type
plot(stocks.spc, plot.type = "coherency")
plot(stocks.spc, plot.type = "phase")

sales.spc <- spectrum(ts.union(BJsales, BJsales.lead),
                      kernel("modified.daniell", c(5,7)))
plot(sales.spc, plot.type = "coherency")
plot(sales.spc, plot.type = "phase")

作者

Originally Martyn Plummer; kernel smoothing by Adrian Trapletti, synthesis by B.D. Ripley

參考

Bloomfield, P. (1976) Fourier Analysis of Time Series: An Introduction. Wiley.

Brockwell, P.J. and Davis, R.A. (1991) Time Series: Theory and Methods. Second edition. Springer.

Venables, W.N. and Ripley, B.D. (2002) Modern Applied Statistics with S. Fourth edition. Springer. (Especially pp. 392-7.)

也可以看看

spectrum , spec.taper , plot.spec , fft

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Estimate Spectral Density of a Time Series by a Smoothed Periodogram。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。