12  Cyclic Causal Structures

Cyclic Causal Structures

Status: Draft

v0.1

12.1 Beyond Acyclicity

The causal models we have developed thus far (directed acyclic graphs (DAGs) and their associated structural causal models (SCMs)) assume acyclicity: no variable may be its own ancestor. This assumption is mathematically convenient: it permits a unique topological ordering, ensures well-defined recursive evaluation, and underpins d-separation and the do-calculus (Pearl 2009). Yet real biological and physical systems are replete with feedback loops.

Consider homeostasis: blood glucose is regulated by insulin, which is secreted in response to glucose, a classic negative feedback loop. Signalling cascades in gene regulatory networks exhibit mutual regulation: transcription factors activate or repress each other’s expression. Ecological dynamics feature predator-prey cycles where each population influences the other. Immune responses involve cytokine feedback that amplifies or dampens inflammation. In each case, the causal structure is cyclic, not acyclic.

This creates a fundamental tension. The Structural stratum, as formalised by Pearl and colleagues (Pearl 2009; Peters et al. 2017), privileges DAGs because they support clean intervention semantics and identification theory. The Dynamical stratum, as captured by differential equations and state-space models, naturally describes feedback through coupled equations that evolve over time. The same system can be viewed as a cyclic graph (instantaneous mutual causation) or as a temporal process (causation unrolled in time). This chapter develops the machinery to reconcile these views: cyclic structural models, the sigma calculus for reasoning about them, and the DAG-to-ODE bridge that connects cyclic graphs to ordinary differential equations.

12.2 Directed Cyclic Graphs and Equilibrium Models

A directed cyclic graph (DCG) allows directed cycles: paths from a variable back to itself. In such a graph, we cannot assign values recursively in a single pass. Instead, we interpret the structural equations as a simultaneous system solved at equilibrium.

(a) A simple cyclic causal graph: \(X\) and \(Y\) mutually influence each other, forming a feedback loop.
Figure 12.1: A simple cyclic causal graph: X and Y mutually influence each other, forming a feedback loop.

The graph in Figure 12.1 illustrates the simplest non-trivial cycle: two variables, each a parent of the other. No topological ordering exists; the equations must be solved jointly.

12.2.1 Equilibrium Semantics

An SCM with cycles is defined by structural equations:

\[ X_i = f_i(\mathbf{X}_{\mathrm{Pa}(i)}, U_i) \quad \text{for all } i \]

where \(\mathrm{Pa}(i)\) denotes the parents of \(X_i\) in the graph. In the acyclic case, we evaluate these equations in topological order. With cycles, no such order exists. We instead require that the equations hold simultaneously: the vector \(\mathbf{X} = (X_1, \ldots, X_n)\) must satisfy

\[ \mathbf{X} = \mathbf{f}(\mathbf{X}, \mathbf{U}) \]

for the given exogenous variables \(\mathbf{U}\). This is a fixed-point equation: \(\mathbf{X}\) is a fixed point of the map \(\mathbf{x} \mapsto \mathbf{f}(\mathbf{x}, \mathbf{U})\).

12.2.2 Existence and Uniqueness

Under suitable conditions on the functions \(f_i\) (e.g., contractivity in an appropriate norm), Banach’s fixed-point theorem guarantees a unique solution (Bongers et al. 2021). When the system is linear, \(\mathbf{X} = A\mathbf{X} + \mathbf{U}\), we require that \(I - A\) be invertible, which holds when the spectral radius of \(A\) is less than one. The equilibrium interpretation thus gives precise mathematical content to cyclic SCMs: they are fixed-point models, and the “output” of the model is the (unique) equilibrium configuration given the exogenous inputs.

Multiple equilibria can arise when the fixed-point map is not contractive; bifurcation theory then becomes relevant. For the purposes of causal reasoning, we typically assume uniqueness so that interventions yield well-defined counterfactual outcomes.

12.3 The Sigma Calculus

Bongers et al. (Bongers et al. 2021) developed the sigma calculus (σ-calculus) to extend causal reasoning from DAGs to directed graphs that may contain cycles. The key innovation is σ-separation, a graphical criterion that generalises d-separation to cyclic structures.

12.3.1 σ-Separation

In a DAG, d-separation characterises conditional independence: \(X ⫫ Y \mid Z\) holds in all SCMs compatible with the graph if and only if \(Z\) d-separates \(X\) and \(Y\). For cyclic graphs, d-separation is not sufficient, cycles can create dependencies that d-separation does not capture. σ-separation provides the correct generalisation.

Informally, a path between \(X\) and \(Y\) is σ-blocked by \(Z\) if it contains a collider not in \(Z\), or a non-collider in \(Z\), with appropriate handling of cycles. The formal definition involves the augmented graph and a refined notion of blocking that accounts for the equilibrium structure. We say \(Z\) σ-separates \(X\) and \(Y\) if every path between \(X\) and \(Y\) is σ-blocked by \(Z\). Then \(X ⫫ Y \mid Z\) holds in the equilibrium distribution of any SCM compatible with the graph.

12.3.2 The σ-do Operator

Interventions in cyclic models are formalised by the σ-do operator. The intervention \(do(X_i = x_i)\) replaces the structural equation for \(X_i\) with the constant assignment \(X_i := x_i\), breaking all incoming edges to \(X_i\). The system is then solved at the new equilibrium. This mirrors the do-operator for DAGs (Pearl 2009) but applies in the cyclic setting.

12.3.3 Identification in Cyclic Models

Identification (determining whether a causal effect can be expressed as a function of the observational distribution) becomes more complex with cycles. The sigma calculus provides rules analogous to the do-calculus for establishing identifiability in cyclic graphs. The key difference is that σ-separation, not d-separation, governs which conditional independencies hold.

12.4 The DAG-to-ODE Bridge

A profound insight connects cyclic structural models to dynamical systems: unrolling cycles in time converts a cyclic graph into a (time-indexed) DAG. This is the DAG-to-ODE bridge.

NoteCyclic vs Unrolled Structure

The cyclic graph \(X \leftrightarrow Y\) represents instantaneous mutual causation. When we index by time, the same structure becomes a chain: \(X_t \to Y_{t+1} \to X_{t+2} \to \cdots\). Causation is no longer simultaneous but sequential, and the graph is acyclic.

12.4.1 The Core Idea

Consider a simple feedback loop: \(X \leftrightarrow Y\). In the structural view, \(X\) causes \(Y\) and \(Y\) causes \(X\), a cycle. In the dynamical view, we introduce time: \(X\) at time \(t\) influences \(Y\) at time \(t + \Delta t\), and \(Y\) at time \(t\) influences \(X\) at time \(t + \Delta t\). The unrolled graph is:

\[ X_t \to Y_{t+\Delta t} \to X_{t+2\Delta t} \to Y_{t+3\Delta t} \to \cdots \]

This is a DAG: each time slice has a unique temporal ordering. No variable is its own ancestor when we index by time.

12.4.2 The Continuous-Time Limit

As \(\Delta t \to 0\), the discrete-time unrolling becomes a continuous-time dynamical system. The cyclic structural equations

\[ X = f_X(Y, U_X), \quad Y = f_Y(X, U_Y) \]

translate to an ODE system:

\[ \dot{X} = f(X, Y), \quad \dot{Y} = g(X, Y) \]

where the equilibrium of the ODE (when \(\dot{X} = \dot{Y} = 0\)) corresponds to the solution of the cyclic SCM. The instantaneous causation in the cyclic graph becomes infinitesimal causation in the ODE: each variable’s rate of change depends on the current values of the others.

12.4.3 What the Bridge Connects

The DAG-to-ODE bridge establishes a concrete link between:

  • Structural stratum: Cyclic causal graphs with equilibrium semantics and σ-separation
  • Dynamical stratum: ODE (or SDE) systems arising from temporal unrolling
  • Instantaneous causation (in the graph) ↔︎ Continuous-time dynamics (in the ODE)

This is a concrete realisation of the Structural → Dynamical transition in the three-strata framework: the cyclic graph specifies structural relations; the ODE specifies their temporal dynamics.

12.5 Interventions in Cyclic Systems

Intervening on a variable in a feedback loop has distinctive features. The intervention \(do(X = x)\) breaks the loop: \(X\) no longer depends on its parents (including \(Y\)), so the feedback from \(Y\) to \(X\) is severed. The system reaches a new equilibrium with \(X\) fixed at \(x\).

12.5.1 Sustained vs Point Interventions

In continuous time, we distinguish:

  • Sustained intervention: \(do(X(t) = x)\) for all \(t \geq t_0\). The variable is held constant; the system evolves to a new steady state.
  • Point intervention: A brief perturbation at \(t = t_0\); the system then evolves according to its natural dynamics. This is closer to an impulse or initial condition change.

Control theory’s set-point control is a sustained intervention: the controller holds a variable at a target value, effectively performing \(do(X = x^*)\) continuously.

12.6 Practical Implementation

The following Julia code illustrates the DAG-to-ODE bridge with a simple two-variable feedback system. We define the ODE, show how it corresponds to a cyclic graph, and apply an intervention by breaking the loop. The linear system

\[ \frac{dX}{dt} = -\alpha X + \beta Y, \quad \frac{dY}{dt} = -\gamma Y + \delta X \]

has equilibrium when both derivatives vanish; solving \(-\alpha X + \beta Y = 0\) and \(-\gamma Y + \delta X = 0\) yields the fixed point. The intervention \(do(X = 2)\) sets \(dX/dt = 0\) and replaces \(X\) with the constant 2 in the \(Y\) equation, so \(Y\) evolves toward \(\delta \cdot 2 / \gamma\).

# Simple feedback system: X and Y mutually influence each other
# Cyclic graph: X ↔ Y
# ODE form: dX/dt = f(X,Y), dY/dt = g(X,Y)

# Find project root and include ensure_packages.jl
project_root = let
    current = pwd()
    while !isfile(joinpath(current, "Project.toml")) && !isfile(joinpath(current, "_quarto.yml"))
        parent = dirname(current)
        parent == current && break
        current = parent
    end
    current
end
include(joinpath(project_root, "scripts", "ensure_packages.jl"))
@auto_using OrdinaryDiffEq

# Parameters
α = 0.5   # X's self-damping
β = 0.3   # Y's influence on X
γ = 0.4   # Y's self-damping
δ = 0.2   # X's influence on Y

# Original (cyclic) system: equilibrium when dX/dt = dY/dt = 0
function feedback_system!(du, u, p, t)
    X, Y = u
    du[1] = -α * X + β * Y      # dX/dt
    du[2] = -γ * Y + δ * X      # dY/dt
end

u0 = [1.0, 1.0]
tspan = (0.0, 10.0)
prob = ODEProblem(feedback_system!, u0, tspan)
sol = solve(prob, Tsit5())

# Intervention: do(X = 2) — break X's dependence on Y, hold X fixed
# In ODE terms: remove dX/dt equation, set X(t) = 2
function intervened_system!(du, u, p, t)
    X, Y = u
    x_intervention = 2.0
    du[1] = 0.0                  # X held constant (loop broken)
    du[2] = -γ * Y + δ * x_intervention  # Y still depends on X
end

prob_do = ODEProblem(intervened_system!, u0, tspan)
sol_do = solve(prob_do, Tsit5())
retcode: Success
Interpolation: specialized 4th order "free" interpolation
t: 7-element Vector{Float64}:
  0.0
  9.999999999999999e-5
  0.0010999999999999998
  0.011099999999999997
  0.11109999999999996
  1.1110999999999995
 10.0
u: 7-element Vector{Vector{Float64}}:
 [1.0, 1.0]
 [1.0, 1.0]
 [1.0, 1.0]
 [1.0, 1.0]
 [1.0, 1.0]
 [1.0, 1.0]
 [1.0, 1.0]

Trajectories of the feedback system: original (cyclic) vs intervened (do(X=2)). The intervention breaks the loop and holds X constant.

12.7 Connection to the Three Strata

The cyclic structures and DAG-to-ODE bridge illustrate how the three modelling roles connect:

  • Structural stratum: Cyclic graphs with equilibrium semantics, σ-separation, and the σ-do operator. The graph encodes invariant causal structure (who influences whom) without explicit time.

  • Dynamical stratum: ODEs and SDEs arising from temporal unrolling. Time enters; the cyclic graph becomes a DAG over time-indexed variables; the equilibrium of the dynamics corresponds to the structural equilibrium.

  • Observable stratum: Equilibrium observations from cyclic systems, the steady-state values we might record when a feedback system has settled. These records are generated by an observation model related to the dynamical process and structural graph.

The DAG-to-ODE bridge is thus a concrete realisation of the Structural → Dynamical transition: the cyclic graph is given a temporal interpretation by a declared evolution law, yielding an ODE whose trajectories and equilibria can generate observations. The equilibrium and temporal models are related representations, not automatically interchangeable causal models; their intervention and solution conditions must be checked separately.

12.8 Key Takeaways

  1. Real systems have cycles: Homeostasis, gene regulation, ecology, and immune feedback all involve cyclic causation; DAGs are limiting for such systems.

  2. Equilibrium semantics: Cyclic SCMs are interpreted as simultaneous equations; solutions are fixed points of the structural map.

  3. Sigma calculus: σ-separation and the σ-do operator extend d-separation and the do-operator to cyclic graphs (Bongers et al. 2021).

  4. DAG-to-ODE bridge: Unrolling cycles in time converts cyclic graphs to time-indexed DAGs; the continuous limit yields ODEs. Instantaneous causation becomes continuous-time dynamics.

  5. Interventions break loops: \(do(X = x)\) severs \(X\)’s dependence on its parents; the system reaches a new equilibrium.

  6. Three strata: Cyclic graphs (Structural) → ODEs (Dynamical) → equilibrium observations (Observable). The bridge embodies the Structural → Dynamical transition.

12.9 Further Reading

  • Pearl (2009): Foundational treatment of DAGs, d-separation, and the do-calculus
  • Bongers et al. (2021): Sigma calculus for cyclic SCMs; σ-separation and identification
  • Peters et al. (2017): Elements of causal inference; connects to the present framework
  • See Deterministic Dynamics for ODEs as causal processes
  • See From Structure to Time for the broader Structural → Dynamical transition