Skip to content

Transfer operator approximation

Grid estimator

For longer time series, we use a rectangular grid to discretize the embedding. This approach is relatively fast, because no intersections between volumes have to be explicitly computed.

Documentation

# PerronFrobenius.transferoperator_gridFunction.

transferoperator_grid(E::Embeddings.AbstractEmbedding,
    ϵ::Union{Int, Float64, Vector{Int}, Vector{Float64}};
    allocate_frac::Float64 = 1.0,
    boundary_condition = :exclude) ->
    RectangularBinningTransferOperator

Estimates the transfer operator for an embedding.

Discretization scheme

The binning scheme is specified by ϵ, and the following ϵ are valid:

  • ϵ::Int divides each axis into ϵ intervals of the same size.
  • ϵ::Float divides each axis into intervals of size ϵ.
  • ϵ::Vector{Int} divides the i-th axis into ϵᵢ intervals of the same size.
  • ϵ::Vector{Float64} divides the i-th axis into intervals of size ϵᵢ.

Memory allocation

allocate_frac controls what fraction of the total number of possible transitions ($n_{states}^2$) we pre-allocate for. For short time series, you should leave this at the default value 1.0. However, for longer time series, the transition matrix is sparse (usually, less than $10\%$ of the entries are nonzero). In these case, you can safely lower allocate_frac.

Boundary conditions (dealing with the last point)

boundary_condition controls what to do with the forward map of the last point of the embedding. The default, :exclude, simply ignores the last point.

transferoperator_grid(pts::AbstractArray{T, 2},
    ϵ::Union{Int, Float64, Vector{Int}, Vector{Float64}};
    allocate_frac::Float64 = 1.0,
    boundary_condition = :none) where T ->
    RectangularBinningTransferOperator

Estimates the transfer operator for a set of points, given as a dim-by-npoints array.

Discretization scheme

The binning scheme is specified by ϵ, and the following ϵ are valid:

  • ϵ::Int divides each axis into ϵ intervals of the same size.
  • ϵ::Float divides each axis into intervals of size ϵ.
  • ϵ::Vector{Int} divides the i-th axis into ϵᵢ intervals of the same size.
  • ϵ::Vector{Float64} divides the i-th axis into intervals of size ϵᵢ.

Memory allocation

allocate_frac controls what fraction of the total number of possible transitions ($n_{states}^2$) we pre-allocate for. For short time series, you should leave this at the default value 1.0. However, for longer time series, the transition matrix is sparse (usually, less than $10\%$ of the entries are nonzero). In these case, you can safely lower allocate_frac.

Boundary conditions (dealing with the last point)

boundary_condition controls what to do with the forward map of the last point of the embedding. The default, :exclude, simply ignores the last point.