TSE Complexity

The Tononi-Sporns-Edelmans (TSE) complexity [TSE94] is a complexity measure for distributions. It is designed so that it maximized by distributions where small subsets of random variables are loosely coupled but the overall distribution is tightly coupled.

\[\begin{split}\TSE{X | Z} = \sum_{k=1}^{|X|} \left( {N \choose k}^{-1} \sum_{\substack{y \subseteq X \\ |y| = k}} \left( \H{y | Z} \right) - \frac{k}{|X|}\H{X | Z} \right)\end{split}\]

Two distributions which might be considered tightly coupled are the “giant bit” and the “parity” distributions:

In [1]: from dit.multivariate import tse_complexity

In [2]: from dit.example_dists import Xor

In [3]: d1 = Xor()

In [4]: tse_complexity(d1)
Out[4]: 1.0

In [5]: d2 = dit.Distribution(['000', '111'], [1/2, 1/2])

In [6]: tse_complexity(d2)
Out[6]: 1.0

The TSE Complexity assigns them both a value of \(1.0\) bits, which is the maximal value the TSE takes over trivariate, binary alphabet distributions.

API

tse_complexity(dist, rvs=None, crvs=None)[source]

Calculates the TSE complexity.

Parameters:
  • dist (Distribution) – The distribution from which the TSE complexity is calculated.

  • rvs (list, None) – The indexes of the random variable used to calculate the TSE complexity between. If None, then the TSE complexity is calculated over all random variables.

  • crvs (list, None) – The indexes of the random variables to condition on. If None, then no variables are condition on.

Returns:

TSE – The TSE complexity.

Return type:

float

Raises:

ditException – Raised if dist is not a joint distribution or if rvs or crvs contain non-existant random variables.