pyphi.estimate#

Estimate substrates from observed transitions, with epistemic uncertainty.

The TPM that IIT requires is interventional — p(next | do(current)) under a uniform perturbation of all current states — so what data can legitimately provide depends on how the data was produced. The caller must assert the regime:

  • "perturbational": each transition is an independent trial in which the current state was set by intervention. When the trials cover the state space, the estimand is identified and estimation is a counting problem.

  • "observational": transitions come from a passively recorded trajectory. Treating them as interventional assumes the recorded dynamics are the causal dynamics (no unobserved driver, correct units and grain, stationarity) — assumptions about the world that the data cannot verify. States the trajectory never visits are unidentified, not merely unsampled: substrates that differ only on unvisited rows produce identical data and can have materially different Φ. The CoverageReport records exactly which rows the data constrained.

Estimation is per-unit counting with a conjugate symmetric Beta prior on every cell of the state-by-node TPM (default Jeffreys, a = 1/2). The result is a SubstratePosterior — a distribution over substrates, never a single point estimate: Φ of a posterior-mean TPM conflates epistemic uncertainty with genuine indeterminism and suppresses Φ where the data is merely uninformative.

Functions

estimate_substrate(data, *, regime[, prior, ...])

Estimate a posterior over substrates from binary transition data.

phi_posterior(posterior, state, *, ...[, ...])

Propagate a substrate posterior through the SIA by Monte Carlo.

Classes

CoverageReport(counts, n_units)

Which current states the data constrained, and how often.

PhiPosterior(samples, complex_samples, ...)

Posterior distribution over Φ, propagated from a substrate posterior.

SubstratePosterior(alpha_on, alpha_off, ...)

Posterior distribution over substrates given observed transitions.