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_grid
— Function.
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.