R: Estimate Spectral Density of a Time Series by a Smoothed...
spec.pgram
R Documentation
Estimate Spectral Density of a Time Series by a Smoothed
Periodogram
Description
spec.pgram calculates the periodogram using a fast Fourier
transform, and optionally smooths the result with a series of
modified Daniell smoothers (moving averages giving half weight to
the end values).
vector of odd integers giving the widths of modified
Daniell smoothers to be used to smooth the periodogram.
kernel
alternatively, a kernel smoother of class
"tskernel".
taper
specifies the proportion of data to taper. A split
cosine bell taper is applied to this proportion of the data at the
beginning and end of the series.
pad
proportion of data to pad. Zeros are added to the end of
the series to increase its length by the proportion pad.
fast
logical; if TRUE, pad the series to a highly composite
length.
demean
logical. If TRUE, subtract the mean of the
series.
detrend
logical. If TRUE, remove a linear trend from
the series. This will also remove the mean.
plot
plot the periodogram?
na.action
NA action function.
...
graphical arguments passed to plot.spec.
Details
The raw periodogram is not a consistent estimator of the spectral density,
but adjacent values are asymptotically independent. Hence a consistent
estimator can be derived by smoothing the raw periodogram, assuming that
the spectral density is smooth.
The series will be automatically padded with zeros until the series
length is a highly composite number in order to help the Fast Fourier
Transform. This is controlled by the fast and not the pad
argument.
The periodogram at zero is in theory zero as the mean of the series
is removed (but this may be affected by tapering): it is replaced by
an interpolation of adjacent values during smoothing, and no value
is returned for that frequency.
Value
A list object of class "spec" (see spectrum)
with the following additional components:
kernel
The kernel argument, or the kernel constructed
from spans.
df
The distribution of the spectral density estimate can be
approximated by a (scaled) chi square distribution with df degrees
of freedom.
bandwidth
The equivalent bandwidth of the kernel smoother as
defined by Bloomfield (1976, page 201).
taper
The value of the taper argument.
pad
The value of the pad argument.
detrend
The value of the detrend argument.
demean
The value of the demean argument.
The result is returned invisibly if plot is true.
Author(s)
Originally Martyn Plummer; kernel smoothing by Adrian Trapletti,
synthesis by B.D. Ripley
References
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.)
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(stats)
> png(filename="/home/ddbj/snapshot/RGM3/R_rel/result/stats/spec.pgram.Rd_%03d_medium.png", width=480, height=480)
> ### Name: spec.pgram
> ### Title: Estimate Spectral Density of a Time Series by a Smoothed
> ### Periodogram
> ### Aliases: spec.pgram
> ### Keywords: ts
>
> ### ** Examples
>
> 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")
>
>
>
>
>
> dev.off()
null device
1
>