Skip to content

Directed information per edge, and directed-information baselines - #3

Merged
Autoplectic merged 4 commits into
machines-layerfrom
directed-information
Oct 14, 2026
Merged

Autoplectic merged 4 commits into
machines-layerfrom
directed-information

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

Stacked on #2 (machines-layer).

Summary

Directed information per edge (infer_multiplex(directed_information=True))

  • iie: the instantaneous information exchange of each pair, I[X_t : Y_t | both selected pasts and lagged parents], with a permutation p-value iie_pvalue. It is computed by the new infoflow.contemporaneous.instantaneous_exchange, which the lag-0 layer now reuses.
  • di = weight[te] + iie: the bivariate decomposition of directed information into transfer entropy plus instantaneous exchange (Massey 1990; Amblard & Michel 2013). The docs note that with side information it is only approximate.
  • model_di: the composed model's exact one-step directed information, added to the machine layer's exact flows.

Baselines and benchmark (validation/di_baselines.py, validation/di_benchmark.py, validation/run_di.sh)

  • Pairwise directed information, with Benjamini-Hochberg over pairs.
  • The directed information graph with in-degree at most K (Quinn, Kiyavash & Coleman 2015).
  • Optimal causation entropy (Sun, Taylor & Bollt 2015).
  • All are run on the same integer symbols and fixed lag grid as infoflow, on:
    • the tent ring (weak, moderate, and moderate at lag 1);
    • noisy ECA rules 90 and 110;
    • random 10-node VAR and logistic networks.
  • The table is in docs/validation.rst. Highlights:
    • On rule 90 (pure synergy), oCSE and pairwise DI recover 2 of 12 edges. DIG and infoflow recover all 12, because they search parent sets and pairs.
    • DIG is exact on the automata because K equals their true in-degree, but it loses precision on the random networks (0.60 against infoflow's 0.93 on VAR).
    • Every method links the indirect paths on the coarse tent ring.

Tests

  • tests/test_directed_information.py:
    • instantaneous coupling shows up as iie > 0 with di = te + iie;
    • without it, di is about te;
    • the result matches the lag-0 layer's statistic;
    • model_di equals model_te for a lagged channel.
  • Full suite: 191 passed. ty and ruff are clean, and the docs build without warnings.

Made with Cursor

Ryan James and others added 4 commits October 13, 2026 14:08
…e) and di = te + iie; model_di in exact flows

Co-authored-by: Cursor <cursoragent@cursor.com>
…CSE) and benchmark; validation table

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Autoplectic
Autoplectic merged commit b4bd1af into machines-layer Oct 14, 2026
12 of 13 checks passed
Autoplectic added a commit that referenced this pull request Oct 14, 2026
Directed information per edge and DI baselines (re-land #3 on main); lock sofic with multi-trial CSSR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant