astsa (version 1.6)

mvspec: Univariate and Multivariate Spectral Estimation

Description

This is spec.pgram with a few changes in the defaults and written so you can easily extract the estimate of the multivariate spectral matrix as fxx. The bandwidth calculation has been changed to the more practical definition given in the text. Can be used to replace spec.pgram for univariate series.

Usage

mvspec(x, spans = NULL, kernel = NULL, taper = 0, pad = 0, fast = TRUE, demean = FALSE, detrend = TRUE, plot = TRUE, na.action = na.fail, ...)

Arguments

x
univariate or multivariate time series (i.e., the p columns of x are time series)

spans
specify smoothing; same as spec.pgram

kernel
specify kernel; same as spec.pgram

taper
specify taper; same as spec.pgram with different default

pad
specify padding; same as spec.pgram

fast
specify use of FFT; same as spec.pgram

demean
if TRUE, series is demeaned first; same as spec.pgram

detrend
if TRUE, series is detrended first; same as spec.pgram

plot
plot the estimate; same as spec.pgram

na.action
same as spec.pgram

...
additional arguments; same as spec.pgram

Value

The results are returned invisibly if plot is true.

Details

This is spec.pgram with a few changes in the defaults and written so you can easily extract the estimate of the multivariate spectral matrix as fxx. The bandwidth calculation has been changed to the more practical definition given in the text, $(L_h/n.used)*frequency(x)$. Although meant to be used to easily obtain multivariate spectral estimates, this script can be used for univariate time series. Note that the script does not taper by default (taper=0); this forces the user to do "conscious tapering".

References

http://www.stat.pitt.edu/stoffer/tsa4/

Examples

Run this code
# univariate example
plot(co2)   # co2 is an R data set
mvspec(co2, spans=c(5,5), taper=.5)

# multivariate example
ts.plot(mdeaths, fdeaths, col=1:2)   # an R data set, male/female monthly deaths ...
dog = mvspec(cbind(mdeaths,fdeaths), spans=c(3,3), taper=.1)
dog$fxx        # look a spectral matrix estimates
dog$bandwidth  # bandwidth with time unit = year
dog$bandwidth/frequency(mdeaths)  # ... with time unit = month
plot(dog, plot.type="coherency")  # plot of squared coherency

Run the code above in your browser using DataLab