pspectrum {psd} | R Documentation |
Adaptive sine multitaper power spectral density estimation
Description
This is the primary function to be used in this package: it returns power spectral density estimates of a timeseries, with an optimal number of tapers at each frequency based on iterative reweighted spectral derivatives. If the object given is a multicolumn object, the cross spectrum (multivariate PSD) will be calculated using the same iterative procedure.
Usage
pspectrum(x, ...)
## S3 method for class 'ts'
pspectrum(x, output_column = NULL, ...)
## S3 method for class 'matrix'
pspectrum(x, x.frqsamp, ...)
## S3 method for class 'spec'
pspectrum(x, ...)
## Default S3 method:
pspectrum(
x,
x.frqsamp = 1,
ntap.init = NULL,
niter = 3,
output_column = NULL,
AR = FALSE,
Nyquist.normalize = TRUE,
verbose = TRUE,
no.history = FALSE,
plot = FALSE,
...
)
pspectrum_basic(x, ntap.init = 7, niter = 5, verbose = TRUE, ...)
adapt_message(stage, dvar = NULL)
Arguments
x |
vector; series to find PSD estimates for; if this is a multicolumn object, a cross spectrum will be calculated. |
... |
Optional parameters passed to |
output_column |
scalar integer; If the series contains multiple columns, specify which column contains the output. The default assumes the last column is the output and the others are all inputs. |
x.frqsamp |
scalar; the sampling rate (e.g. Hz) of the series |
ntap.init |
scalar; the number of sine tapers to use in the pilot spectrum estimation; if |
niter |
scalar; the number of adaptive iterations to execute after the pilot spectrum is estimated. |
AR |
logical; should the effects of an AR model be removed from the pilot spectrum? |
Nyquist.normalize |
logical; should the units be returned on Hz, rather than Nyquist? |
verbose |
logical; Should messages be given? |
no.history |
logical; Should the adaptive history not be saved? |
plot |
logical; Should the results be plotted? |
stage |
integer; the current adaptive stage (0 is pilot) |
dvar |
numeric; the spectral variance; see also |
Details
See the Adaptive estimation section in the description of
the psd-package
for details regarding adaptive estimation.
NEW as of version 2.0: use pspectrum
to calculate the
cross spectrum if x
is a multi-column array.
pspectrum_basic
is a simplified implementation used mainly for
testing.
Value
Object with class 'spec', invisibly. It also assigns the object to
"final_psd"
in the working environment.
Author(s)
A.J. Barbour adapted original by R.L. Parker
See Also
psdcore
, pilot_spec
, riedsid2
, prewhiten
Examples
## Not run: #REX
library(psd)
library(RColorBrewer)
##
## Adaptive multitaper PSD estimation
## (see also the "psd_overview" vignette)
##
data(magnet)
Xr <- magnet$raw
Xc <- magnet$clean
# adaptive psd estimation (turn off diagnostic plot)
PSDr <- pspectrum(Xr, plot=FALSE)
PSDc <- pspectrum(Xc, plot=FALSE)
# plot them on the same scale
plot(PSDc, log="dB",
main="Raw and cleaned Project MAGNET power spectral density estimates",
lwd=3, ci.col=NA, ylim=c(0,32), yaxs="i")
plot(PSDr, log="dB", add=TRUE, lwd=3, lty=5)
text(c(0.25,0.34), c(11,24), c("Clean","Raw"), cex=1)
## Change sampling, and inspect the diagnostic plot
plot(pspectrum(Xc, niter=1, x.frqsamp=10, plot=TRUE))
## Say we forgot to assign the results: we can recover from the environment with:
PSDc_recovered <- psd_envGet("final_psd")
plot(PSDc_recovered)
## End(Not run)#REX