# Transfer operator (binning)

`Entropies.TransferOperator`

— Type`TransferOperator(ϵ::RectangularBinning) <: BinningProbabilitiesEstimator`

A probability estimator based on binning data into rectangular boxes dictated by the binning scheme `ϵ`

, then approxmating the transfer (Perron-Frobenius) operator over the bins, then taking the invariant measure associated with that transfer operator as the bin probabilities. Assumes that the input data are sequential (time-ordered).

This implementation follows the grid estimator approach in Diego et al. (2019)^{[Diego2019]}.

**Description**

The transfer operator $P^{N}$is computed as an `N`

-by-`N`

matrix of transition probabilities between the states defined by the partition elements, where `N`

is the number of boxes in the partition that is visited by the orbit/points.

If $\{x_t^{(D)} \}_{n=1}^L$ are the $L$ different $D$-dimensional points over which the transfer operator is approximated, $\{ C_{k=1}^N \}$ are the $N$ different partition elements (as dictated by `ϵ`

) that gets visited by the points, and $\phi(x_t) = x_{t+1}$, then

\[P_{ij} = \dfrac {\#\{ x_n | \phi(x_n) \in C_j \cap x_n \in C_i \}} {\#\{ x_m | x_m \in C_i \}},\]

where $\#$ denotes the cardinal. The element $P_{ij}$ thus indicates how many points that are initially in box $C_i$ end up in box $C_j$ when the points in $C_i$ are projected one step forward in time. Thus, the row $P_{ik}^N$ where $k \in \{1, 2, \ldots, N \}$ gives the probability of jumping from the state defined by box $C_i$ to any of the other $N$ states. It follows that $\sum_{k=1}^{N} P_{ik} = 1$ for all $i$. Thus, $P^N$ is a row/right stochastic matrix.

**Invariant measure estimation from transfer operator**

The left invariant distribution $\mathbf{\rho}^N$ is a row vector, where $\mathbf{\rho}^N P^{N} = \mathbf{\rho}^N$. Hence, $\mathbf{\rho}^N$ is a row eigenvector of the transfer matrix $P^{N}$ associated with eigenvalue 1. The distribution $\mathbf{\rho}^N$ approximates the invariant density of the system subject to the partition `ϵ`

, and can be taken as a probability distribution over the partition elements.

In practice, the invariant measure $\mathbf{\rho}^N$ is computed using `invariantmeasure`

, which also approximates the transfer matrix. The invariant distribution is initialized as a length-`N`

random distribution which is then applied to $P^{N}$. The resulting length-`N`

distribution is then applied to $P^{N}$ again. This process repeats until the difference between the distributions over consecutive iterations is below some threshold.

**Probability and entropy estimation**

`probabilities(x::AbstractDataset, est::TransferOperator{RectangularBinning})`

estimates probabilities for the bins defined by the provided binning (`est.ϵ`

)`genentropy(x::AbstractDataset, est::TransferOperator{RectangularBinning})`

does the same, but computes generalized entropy using the probabilities.

See also: `RectangularBinning`

, `invariantmeasure`

.

## Utility methods/types

`Entropies.InvariantMeasure`

— Type`InvariantMeasure(to, ρ)`

Minimal return struct for `invariantmeasure`

that contains the estimated invariant measure `ρ`

, as well as the transfer operator `to`

from which it is computed (including bin information).

See also: `invariantmeasure`

.

`Entropies.invariantmeasure`

— Function`invariantmeasure(x::AbstractDataset, ϵ::RectangularBinning) → iv::InvariantMeasure`

Estimate an invariant measure over the points in `x`

based on binning the data into rectangular boxes dictated by the binning scheme `ϵ`

, then approximate the transfer (Perron-Frobenius) operator over the bins. From the approximation to the transfer operator, compute an invariant distribution over the bins. Assumes that the input data are sequential.

Details on the estimation procedure is found the `TransferOperator`

docstring.

**Example**

```
using DynamicalSystems, Plots, Entropies
D = 4
ds = Systems.lorenz96(D; F = 32.0)
N, dt = 20000, 0.1
orbit = trajectory(ds, N*dt; dt = dt, Ttr = 10.0)
# Estimate the invariant measure over some coarse graining of the orbit.
iv = invariantmeasure(orbit, RectangularBinning(15))
# Get the probabilities and bins
invariantmeasure(iv)
```

**Probabilities and bin information**

`invariantmeasure(iv::InvariantMeasure) → (ρ::Probabilities, bins::Vector{<:SVector})`

From a pre-computed invariant measure, return the probabilities and associated bins. The element `ρ[i]`

is the probability of visitation to the box `bins[i]`

. Analogous to `binhist`

.

Why bother with the transfer operator instead of using regular histograms to obtain probabilities?

In fact, the naive histogram approach and the transfer operator approach are equivalent in the limit of long enough time series (as $n \to \intfy$), which is guaranteed by the ergodic theorem. There is a crucial difference, however:

The naive histogram approach only gives the long-term probabilities that orbits visit a certain region of the state space. The transfer operator encodes that information too, but comes with the added benefit of knowing the *transition probabilities* between states (see `transfermatrix`

).

See also: `InvariantMeasure`

.

`Entropies.transfermatrix`

— Function`transfermatrix(iv::InvariantMeasure) → (M::AbstractArray{<:Real, 2}, bins::Vector{<:SVector})`

Return the transfer matrix/operator and corresponding bins. Here, `bins[i]`

corresponds to the i-th row/column of the transfer matrix. Thus, the entry `M[i, j]`

is the probability of jumping from the state defined by `bins[i]`

to the state defined by `bins[j]`

.

See also: `TransferOperator`

.

- Diego2019Diego, D., Haaga, K. A., & Hannisdal, B. (2019). Transfer entropy computation using the Perron-Frobenius operator. Physical Review E, 99(4), 042212.