# Functional Common Information¶

The functional common information captures the minimum amount of information neccessary to capture all of a distribution’s share information using a function of that information. In other words:

$\begin{split}\F{X_{0:n} \mid Y_{0:m}} = \min_{\substack{\ind X_{0:n} \mid Y_{0:m}, W \\ W = f(X_{0:n}, Y_{0:m})}} \H{W}\end{split}$

## Relationship To Other Measures of Common Information¶

Since this is an additional constraint on the Exact common information, it is generally larger than it, and since its constraint is weaker than that of the MSS Common Information, it is generally less than it:

$\G{X_{0:n}} \leq \F{X_{0:n}} \leq \M{X_{0:n}}$

## API¶

functional_common_information(dist, rvs=None, crvs=None, rv_mode=None)[source]

Compute the functional common information, F, of dist. It is the entropy of the smallest random variable W such that all the variables in rvs are rendered independent conditioned on W, and W is a function of rvs.

Parameters
• dist (Distribution) – The distribution from which the functional common information is computed.

• rvs (list, None) – A list of lists. Each inner list specifies the indexes of the random variables used to calculate the total correlation. If None, then the total correlation is calculated over all random variables, which is equivalent to passing rvs=dist.rvs.

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

• rv_mode (str, None) – Specifies how to interpret rvs and crvs. Valid options are: {‘indices’, ‘names’}. If equal to ‘indices’, then the elements of crvs and rvs are interpreted as random variable indices. If equal to ‘names’, the the elements are interpreted as random variable names. If None, then the value of dist._rv_mode is consulted, which defaults to ‘indices’.

Returns

F – The functional common information.

Return type

float