ExactSimplexIntersectionTest

# CausalityTools.CausalityTests.ExactSimplexIntersectionTestType.

ExactSimplexIntersectionTest

The parameters for a transfer entropy test where the invariant measure is estimated using an approximation to the transfer operator over a triangulation of the delay reconstruction [1]. Essentially, this allows the generation of an unlimited amount of points from the transfer operator. Transfer entropy then can be estimated by superimposing a rectangular grid as usual over the points generated from the transfer operator.

Notes

  • Compared to the rectangular estimators, the exact simplex intersection approach is much slower. However, it might be beneficial for sparse time series[1]. A faster triangulation estimator is the ApproximateSimplexIntersectionTest.
  • If you're doing any sort of sensitivity analysis over binning schemes, then use the low-level estimators to first construct the invariant measure over the triangulation. You can then estimate transfer entropy "for free" from the points you generate from the triangulation. Over these points you can superimpose any grid you want and quickly compute transfer entropy using one of the rectangular estimators.

Mandatory keyword arguments

  • binning::RectangularBinning: An instance of a RectangularBinning that dictates how the delay embedding is discretized.
  • ηs: The prediction lags (that gos into the T_{f} component of the embedding).

Optional keyword arguments

  • k::Int: The dimension of the T_{f} component of the embedding.
  • l::Int: The dimension of the T_{pp} component of the embedding.
  • m::Int: The dimension of the S_{pp} component of the embedding.
  • n::Int: The dimension of the C_{pp} component of the embedding.
  • τ::Int: The embedding lag. Default is τ = 1.
  • b: Base of the logarithm. The default (b = 2) gives the TE in bits.
  • estimator::Union{VisitationFrequency, TransferOperatorGrid}: A VisitationFrequency or a TransferOperatorGrid estimator instance.
  • n_pts::Int: The number of points to generate from the invariant distribution over the triangulation. It is over these points transfer entropy is finally generated using the provided rectangular estimator. Defaults to n_pts = 10000.
  • binning_summary_statistic::Function: A summary statistic to summarise the transfer entropy values if multiple binnings are provided.

Examples

using DynamicalSystems

# Short time series of two coupled logistic maps (x drives y)
sys = logistic2_unidir(c_xy = 0.5)
npts = 75
x, y = columns(trajectory(sys, npts, Ttr = 1000))

# average over a few different binning schemes, use a few different
# prediction lags and use the transfer operator grid estimator on the point
# cloud generated from the invariant measure over the triangulation.
binnings = [RectangularBinning(i) for i = 3:5]
estimator = TransferOperatorGrid()
ηs = 1:3

# Perform causality test, both from x to y and y to x
test = ExactSimplexIntersectionTest(binning = binnings, estimator = estimator, ηs = ηs)
te_xtoy = causality(x, y, test)
te_ytox = causality(y, x, test)

References

  1. Diego, David, Kristian Agasøster Haaga, and Bjarte Hannisdal. "Transfer entropy computation using the Perron-Frobenius operator." Physical Review E 99.4 (2019): 042212. https://journals.aps.org/pre/abstract/10.1103/PhysRevE.99.042212

source