Skip to content

Transfer operator estimation

Rectangular partitions

# PerronFrobenius.TransferOperators.Estimators.transferoperatorMethod.

transferoperator(points, binning_scheme::RectangularBinning; kwargs...)

Discretize points using the provided binning_scheme and compute the transfer operator over the partition elements.

Example

Assume we have enough points that a rectangular partition yields a good estimate of the invariant measure. Then the transfer operator over the partition can be computed as follows.

pts = [rand(3) for i = 1:2000]

# Use rectangular boxes constructed by subdividing each coordinate 
# axis into 10 subintervals of equal length.
transferoperator(pts, RectangularBinning(10))

Triangulated partitions

Say we have a 3D delay reconstruction that we have partioned into simplices.

There are two methods that approximate the transfer operator over such a partition.

Exact simplex intersections

# PerronFrobenius.TransferOperators.Estimators.transferoperatorMethod.

transferoperator(pts, ϵ::TriangulationBinning, 
    simplex_intersection_type::ExactIntersection) -> TransferOperatorTriangulationExact

Estimate the invariant measure over the state space defined by pts using a triangulation of the phase space as the partition, using exact simplex intersections to compute transition probabilities between the states (simplices).

Example

Assume we have sufficiently few points that a triangulation approach involving simplex intersections is computationally feasible to compute the invariant measure. Then a transfer operator can be computed as follows.

pts = [rand(3) for i = 1:30]
transferoperator(pts, TriangulationBinning(), ExactIntersection())

Visualising a transfer matrix computed using exact simplex intersections

Say the delay embedding for which we constructed a triangulated partition above was constructed from some time series. The transfer operator for the partition above is just a square matrix giving the probabilities of jumping between states of the partition (regardless of the dimension of the attractor over which it is approximated), so we can visualise it as a heatmap. Here, we show the probabilities of jumping between states S_i to all other states S_j.

Each state is simply the volume spanned by a simplex of the partition, and the transition probabilities are computed as the overlap of volumes when projecting the simplices one step ahead in time according to the time ordering of the original points of the delay reconstruction.

Approximate simplex intersections

# PerronFrobenius.TransferOperators.Estimators.transferoperatorMethod.

transferoperator(pts, ϵ::TriangulationBinning, 
    simplex_intersection_type::ApproximateIntersection; 
    n::Int = 200, sample_randomly::Bool = false) -> TransferOperatorTriangulationApprox

Estimate the invariant measure over the state space defined by pts using a triangulation of the phase space as the partition, using approximate simplex intersections to compute transition probabilities between the states (simplices).

n is the number of points that each simplex is sampled with, and sample_randomly indicates whether points used be sampled randomly within each simpled (sample_randomly = true) or by a regular simplex splitting routine (sample_randomly = false, which is default).

Example

Assume we have sufficiently few points that a triangulation approach involving simplex intersections is computationally feasible to compute the invariant measure. Then a transfer operator can be computed as follows.

pts = [rand(3) for i = 1:30]
transferoperator(pts, TriangulationBinning(), ApproximateIntersection())

Visualising a transfer matrix computed using approximate simplex intersections