# 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
`"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.

##### 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.

##### 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")
```

*Documentation reproduced from package stats, version 3.3, License: Part of R 3.3*