当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。