spec.pgram
Estimate Spectral Density of a Time Series by a Smoothed Periodogram
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).
 Keywords
 ts
Usage
spec.pgram(x, spans = NULL, kernel, taper = 0.1, pad = 0, fast = TRUE, demean = FALSE, detrend = TRUE, plot = TRUE, na.action = na.fail, ...)
Arguments
 x
 univariate or multivariate time series.
 spans
 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
 kernel
 The
kernel
argument, or the kernel constructed fromspans
.  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
"spec"
(see spectrum
)
with the following additional components:
plot
is true.
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.\ifelse{latex}{\out{~}}{ } 3927.)
See Also
Examples
library(stats)
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")