Suppose an online game team wants to know whether increasing side-quest engagement would increase purchases. Purchase records can show what happened among highly engaged players, but not necessarily what would happen if engagement were changed. Causal identification asks whether the available data and stated causal assumptions determine an answer to that intervention question. section 7.3.2 section 10.2
The obstacle is not always sample size. Different data-generating processes can produce the same observational distribution while supporting different causal conclusions. A causal query is identified when assumptions rule out that ambiguity sufficiently to infer the query from the available distribution. If it is not identified, collecting more observations of the same variables does not resolve the missing causal information. section 2.3.2 section 10.2.1
Keep identification distinct from the rest of the inference workflow:
- Pose the intervention or counterfactual query, then build a causal model whose assumptions reach the query’s level of the causal hierarchy. section 10.2.2
- Check whether the model and observed variables identify the query. If not, measure additional variables, justify different assumptions, or leave the question unanswered. section 10.2.2
- Only then estimate the identified quantity from data and assess sensitivity to assumption violations. Identification establishes what can be inferred; estimation addresses statistical error. section 10.2.2 section 10.2.3
Purchases after an engagement intervention
Let E be engagement, I purchases, and G guild membership, a common cause represented in the causal DAG. The intervention query P(I_{E=e}=i) is identified from P(I,E,G) by the backdoor estimand Σ_g P(I=i | E=e, G=g)P(G=g). In operational terms, compare purchases at engagement e within each guild-membership group, then average using the groups’ overall proportions. Under the stated graph assumptions, a y0 check succeeds with G observed but fails with only P(E,I). A latent-variable model trained on P(E,I) can still generate intervention samples; that alone does not make them valid for this query. section 10.3 section 10.2
Listing 10.5 Deriving the estimand to get P(IE=“high”) from P(E, I, G)
from y0.graph import NxMixedGraph as Y0Graph
from y0.dsl import P, Variable
from y0.algorithm.identify import Identification, identify
query = P(I @ e)
base_distribution = P(I, E, G)
identification_task = Identification.from_expression(
graph=dag,
query=query,
estimand=base_distribution)
identify(identification_task)
The y0 listing supplies a graph, intervention query, and observational distribution to `identify`, which returns an estimand when the query is identifiable. section 10.3
Graphical identification can use backdoor adjustment, front-door adjustment, or do-calculus rules to turn a causal query into an estimand expressed in available distributions. Counterfactual queries may instead require counterfactual graphs and algorithms such as IDC*. Tool output still depends on assumptions: DoWhy lists candidate estimands and their required assumptions, making it possible to choose one whose assumptions are credible. Its default search targets common estimands and can miss others. section 10.4 section 10.7.2 section 11.3 section 11.3.4
