Create a Poincare map

Description

Create a map using the extrema of a scalar time series.

Usage

1
poincareMap(x, extrema="min", denoise=FALSE)

Arguments

x

a vector holding a scalar time series.

denoise

a logical value. If TRUE, the data is first denoised via waveshrink prior to analysis. Default: FALSE.

extrema

the type of extrema desired. May be "min" for minima, "max" for maxima, or "all" for both maxima and minima. Default: "min".

Details

This function finds the extrema of a scalar time series to form a map. The time series is assumed to be a uniform sampling of s(t), where s(t) is a (possibly noisy) measurement from a deterministic non-linear system. It is known that s'(t), s''(t), ... are legitimate coordinate vectors in the phase space. Hence the hyperplane given by s'(t)=0 may be used as a Poincare surface of section. The intersections with this plane are exactly the extrema of the time series. The time series minima (or maxima) are the interesections in a given direction and form a map that may be used to estimate invariants, e.g., correlation dimension and Lyapunov exponents, of the underlying non-linear system.

The algorithm used to create a Poincare map is as follows.

1

The first and second derivatives of the resulting series are approximated via the continuous wavelet transform (CWT) using the first derivative of a Gaussian as a mother wavelet filter (see references for details).

2

The locations of the local extrema are then estimated using the standard first and second derivative tests on the CWT coefficients at a single and appropriate scale (an appropriate scale is one that is large enough to smooth out noisy components but not so large as to the oversmooth the data).

3

The extrema locations are then fit with a quadratic interpolation scheme to estimate the amplitude of the extrema using the original time series.

Value

a list where the first element (location) is a vector containing the temporal locations of the extrema values, with respect to sample numbers 1,...N, where N is the length of the original time series. The second element (amplitude) is a vector containing the extrema amplitudes.

References

Holger Kantz and Thomas Schreiber, Nonlinear Time Series Analysis, Cambridge University Press, 1997.

See Also

embedSeries, corrDim, infoDim.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
## Using the third coordinate (\eqn{z} state) of a 
## chaotic Lorenz system, form a discrete map 
## using the series maxima. Embed the resulting 
## extrema in a 2-dimensional delay embedding 
## (with delay=1 for a map). The resulting plot 
## reveals a tent map structure common to 
## Poincare sections of chaotic flows. 
z <- poincareMap(lorenz[,3], extrema="max")
z <- embedSeries(z$amplitude, tlag=1, dimension=2)
plot(z, pch=1, cex=1)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.