Reading a causal graph: what your model knows

IDEAS FOR THE FUTURE SIMMIS. These articles connect implemented research foundations to longer term product direction. They do not describe universal behaviour in the current Simmis product.

Christian’s research has implemented causal modelling primitives in Spindel. This article examines how that research represents causal assumptions and how prediction could later build on a governed organizational record. We follow one running decision throughout. Should we hire three engineers in Q3 rather than Q4?

Two things can be correlated without either causing the other. Ice cream sales and drowning deaths both rise in summer. Heat contributes to both patterns, while ice cream sales do not explain the drowning deaths. A policy that targeted ice cream sales would therefore mistake correlation for cause.

This distinction matters when a team asks what would happen after a decision. The historical question asks what tended to happen when hiring rose. The decision question asks what would happen to velocity if the team hired three engineers in Q3. The second question requires causal assumptions about the intervention.

Causal graphs are how this research encodes the difference.

What a causal graph is

A directed acyclic graph (DAG) contains nodes, which represent variables, and directed edges, which represent assumed causal relationships. The graph contains no directed cycles. An arrow from A to B states that A directly influences B within the model. The arrow is an assumption to test and challenge, not proof by itself.

season (confounder) price demand revenue (outcome) causes both
A simple DAG. Season affects both price and demand, so it acts as a confounder. Price and demand both affect revenue. The arrow direction records the model's causal assumptions.

Observing high revenue does not establish that price was high because season may affect both variables. An intervention that sets price to a specific value removes the modelled influence of season on price. The remaining graph can then support an estimate of the causal effect, assuming its structure and parameters are adequate.

Confounders: why correlation misleads

A confounder is a variable that causally influences both an apparent cause and an apparent effect. X and Y may then move together because both are downstream of Z, even when X does not cause Y.

heat ice cream sales drowning rate spurious correlation (no causal path)
Heat affects both ice cream sales and drowning rates. In this model, their correlation does not represent a causal effect from ice cream sales to drownings.

Business data often contains the same problem. Teams that hold more retrospectives may ship faster, but team maturity could influence both. Marketing spend may correlate with revenue because spending raises revenue, because revenue enables spending, or because another variable affects both. A causal graph requires the modeller to state which direction each assumed influence runs.

Intervention: the do-operator

Judea Pearl introduced the do operator to formalize the difference between observing and intervening (Pearl, Causality, 2009, with an accessible account in The Book of Why, 2018). P(Y | X=x) is the probability of Y given that we observe X equals x. P(Y | do(X=x)) is the probability of Y when we set X to x, regardless of the variables that would otherwise have caused X.

Within the model, intervening on X cuts its incoming arrows and sets its value. This operation removes the modelled influence of confounders on X.

observing price season price demand do(price = high) season price = high demand season no longer confounds the price → demand relationship
The left graph observes price while season still affects it. The right graph sets price and removes the edge from season to price, which isolates the modelled causal effect.

The do operator distinguishes an observational prediction from a modelled intervention. A prediction that revenue will be high when prices are high conditions on an observation. A claim that revenue will increase if the company raises prices requires an interventional distribution and the causal assumptions that support it.

The do-operator, in code

In Spindel, intervene! implements the do operator as a first class effect. It pins a node and severs its incoming edges in the model.

What is this syntax?
require('[org.replikativ.spindel.inference.effects :refer [observe intervene!]])

;; Two different questions about the same model:
;;   observe asks, "given the claim succeeded, was the agreement on file?"
;;   do(...) asks, "if we FILE the agreement, does the claim succeed?"
spin(intervene!([:evidence :loan-agreement] true) adjudicate(debt-test record))
(require '[org.replikativ.spindel.inference.effects :refer [observe intervene!]])

;; Two different questions about the same model:
;;   observe asks, "given the claim succeeded, was the agreement on file?"
;;   do(...) asks, "if we FILE the agreement, does the claim succeed?"
(spin
  (intervene! [:evidence :loan-agreement] true)  ; do(file the agreement)
  (adjudicate debt-test record))                  ; outcome under the action

This mechanism also underlies the legal dispute simulator research. The “produce the signed loan agreement” button represents a do() intervention on the evidence, and the displayed win probability comes from the resulting interventional distribution.

What the model encodes

Simmis research represents a modelled domain as a DAG. Nodes are quantities such as headcount, velocity, burn rate, release dates, and compliance review windows. Edges are causal assumptions proposed from domain knowledge, historical data, and observed patterns in how an organization works.

hire timing do(Q3) intervention onboarding load eng velocity compliance review release date outcome
A domain model for the hiring question. Hire timing affects onboarding load and velocity under the model's assumptions. Compliance review provides another path to the release date.

With suitable parameters and evidence, this graph could support an estimate that the compliance review constrains the release more than engineering capacity. The graph alone cannot establish that conclusion. It only shows that hire timing affects the release through modelled paths while compliance review provides another path.

What the model doesn't know A causal model can use only the structure supplied by the modeller or estimated through a supported discovery method. Missing edges can omit causal paths, while incorrect edges can create false ones. The graph makes those assumptions inspectable. A reviewer can challenge edges, add domain knowledge, and examine how the inference changes. The explicit structure does not guarantee a correct answer, but it shows where causal assumptions enter the result.

Why this changes “what if”

Many forecasting tools find patterns in observational data and project them forward. Those patterns may support predictions when the data generating process remains stable. They do not by themselves identify what a deliberate intervention will cause.

Answering an interventional question requires causal assumptions. Observational prediction alone cannot establish what an intervention will cause. A sufficiently specified and identified model can estimate consequences for the interventions represented within it, and a decision support system should make those assumptions inspectable.

In this research framing, the Q3 hiring question calls for P(release date | do(hire timing = Q3)) rather than P(release date | hire timing = Q3). The interventional quantity corresponds to the modelled decision.

For Simmis, prediction remains a later use of the governed organizational record. The nearer term control loop preserves the basis, attempt, decision, and outcome from which organizational models could later be built and challenged.

Further reading

  • Pearl, Causality: Models, Reasoning, and Inference (2nd ed., 2009). The formal treatment.
  • Pearl & Mackenzie, The Book of Why (2018). The accessible introduction.
  • The do operator as a runtime effect. See intervene! in Spindel (inference/effects.cljc).
FROM AGENT OUTPUT TO ORGANIZATIONAL WORK

See how Simmis lets teams delegate consequential work without losing control of what becomes official.

inspect the source Simmis Cloud waitlist