| % File src/library/stats/man/spec.pgram.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2014 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{spec.pgram} |
| \alias{spec.pgram} |
| \title{Estimate Spectral Density of a Time Series by a Smoothed |
| Periodogram} |
| \usage{ |
| spec.pgram(x, spans = NULL, kernel, taper = 0.1, |
| pad = 0, fast = TRUE, demean = FALSE, detrend = TRUE, |
| plot = TRUE, na.action = na.fail, \dots) |
| } |
| \arguments{ |
| \item{x}{univariate or multivariate time series.} |
| \item{spans}{vector of odd integers giving the widths of modified |
| Daniell smoothers to be used to smooth the periodogram.} |
| \item{kernel}{alternatively, a kernel smoother of class |
| \code{"tskernel"}.} |
| \item{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.} |
| \item{pad}{proportion of data to pad. Zeros are added to the end of |
| the series to increase its length by the proportion \code{pad}.} |
| \item{fast}{logical; if \code{TRUE}, pad the series to a highly composite |
| length.} |
| \item{demean}{logical. If \code{TRUE}, subtract the mean of the |
| series.} |
| \item{detrend}{logical. If \code{TRUE}, remove a linear trend from |
| the series. This will also remove the mean.} |
| \item{plot}{plot the periodogram?} |
| \item{na.action}{\code{NA} action function.} |
| \item{\dots}{graphical arguments passed to \code{plot.spec}.} |
| } |
| \description{ |
| \code{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). |
| } |
| \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 \code{fast} and not the \code{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 \code{"spec"} (see \code{\link{spectrum}}) |
| with the following additional components: |
| \item{kernel}{The \code{kernel} argument, or the kernel constructed |
| from \code{spans}.} |
| \item{df}{The distribution of the spectral density estimate can be |
| approximated by a (scaled) chi square distribution with \code{df} degrees |
| of freedom.} |
| \item{bandwidth}{The equivalent bandwidth of the kernel smoother as |
| defined by Bloomfield (1976, page 201).} |
| \item{taper}{The value of the \code{taper} argument.} |
| \item{pad}{The value of the \code{pad} argument.} |
| \item{detrend}{The value of the \code{detrend} argument.} |
| \item{demean}{The value of the \code{demean} argument.} |
| |
| The result is returned invisibly if \code{plot} is true. |
| } |
| |
| \references{ |
| Bloomfield, P. (1976) \emph{Fourier Analysis of Time Series: An |
| Introduction.} Wiley. |
| |
| Brockwell, P.J. and Davis, R.A. (1991) \emph{Time Series: Theory and |
| Methods.} Second edition. Springer. |
| |
| Venables, W.N. and Ripley, B.D. (2002) \emph{Modern Applied |
| Statistics with S.} Fourth edition. Springer. |
| (Especially pp.\sspace{}392--7.) |
| } |
| \author{ |
| Originally Martyn Plummer; kernel smoothing by Adrian Trapletti, |
| synthesis by B.D. Ripley |
| } |
| \seealso{\code{\link{spectrum}}, \code{\link{spec.taper}}, |
| \code{\link{plot.spec}}, \code{\link{fft}}} |
| |
| \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") |
| } |
| \keyword{ts} |