In the causal DAG A -> B -> C, why does conditioning on B make A and C independent?
answer
- all the influence travels through the middle node
- hold the relay fixed
- chains and forks open by default
- colliders behave the opposite way
- gives one testable conditional independence
basics
~10 sIn the chain A -> B -> C, all of A's influence on C travels through B. Fixing B leaves no route, so A and C become conditionally independent. This is d-separation's chain-blocking rule.
solid answer
~50 sThe chain `A -> B -> C` says A affects C only by way of B. Unconditionally A and C are associated, because varying A varies B, which varies C. Once you condition on B — comparing only units sharing the same value of B — the intermediate link is held fixed, so knowing A tells you nothing further about C. Formally the graph implies A is independent of C given B. This is one of three blocking rules of **d-separation**: a path is blocked when a chain or fork has its middle node conditioned on, or a collider `A -> D <- C` has neither itself nor any descendant conditioned on. Two variables are d-separated by Z when every path between them is blocked. It cuts both ways: the implied independence is testable, so data violating it refute the chain.
go deeper
Recall that in a chain the middle variable carries the whole relationship, so holding it fixed removes the association. Be able to say the two ends are associated when you do not hold it fixed.
State the three blocking rules and apply them along a specific path, including the fact that colliders behave in the opposite direction from chains and forks. Name the testable independence the chain implies.
Use implied independencies as a diagnostic on a real data set, and be honest about what a passing test does and does not establish. Watch for descendants of a node acting as partial conditioning.
Frame what graphical assumptions can and cannot be checked empirically, so that a team does not treat a passed independence test as validation of the whole causal story.
## The chain and its implication Write the graph `A -> B -> C`. It asserts that A causes B, B causes C, and there is no arrow directly from A to C — that missing arrow is the substantive claim. Every bit of A's influence on C is routed through B. Two consequences follow, and interviewers want both: - **Marginally, A and C are associated.** Move A, and B moves, and C moves with it. This is why a chain produces correlation without a direct link. - **Conditionally on B, they are not.** Restrict attention to units that share the same value of B. Within that stratum B cannot vary, so A's only channel to C is shut. Knowing A adds nothing about C: A is independent of C given B. That second statement, written `A independent of C | B`, is the working definition of what it means for a path to be blocked. ## d-separation: three rules d-separation generalises this to any graph. Consider a path — a sequence of edges connecting two nodes, followed without regard to arrow direction — and a conditioning set Z. The path is **blocked** by Z if any of the following applies at some node along it: 1. **Chain** `X -> M -> Y` with M in Z. Association flows through M; fixing M stops it. 2. **Fork** `X <- M -> Y` with M in Z. M is a common cause; fixing it removes the shared driver. 3. **Collider** `X -> D <- Y` where D is **not** in Z and no descendant of D is in Z. Two arrowheads meet at D; association does not flow through such a node on its own. Notice the asymmetry. Chains and forks are open by default and are closed by conditioning. Colliders are closed by default and are *opened* by conditioning on the collider or on anything downstream of it. That reversal is the reason "add more controls" is not a safety strategy. Two nodes are **d-separated** by Z when every path between them is blocked. If they are d-separated, the graph implies they are conditionally independent given Z. If some path is open, they are **d-connected** and the graph permits association. ## Why the direction of blocking works It helps to think in terms of information flow. In a chain, B is a relay: it receives A's variation and passes it on. Holding the relay fixed stops transmission. In a fork `A <- M -> C`, M is a shared driver: A and C move together because both follow M. Holding M fixed removes the common movement, and whatever association remains must come from elsewhere. A collider is different in kind. In `A -> D <- C`, A and C are two independent inputs to D. Independent inputs stay independent — until you fix their shared output, at which point they must trade off against each other to produce it. That is why the collider rule runs the opposite way and why the rule extends to descendants of the collider: conditioning on something the collider caused carries partial information about the collider itself. ## From graph to testable implications Every d-separation in a graph is a conditional independence statement the data can check. The chain `A -> B -> C` implies exactly one non-trivial statement: A independent of C given B. If in your data A and C remain clearly associated within levels of B, the chain as drawn is wrong — perhaps there is a direct `A -> C` edge, or a common cause of A and C you have not drawn. This is the one place where a DAG is genuinely falsifiable, and it is worth being precise about what it buys you: - A **violated** implication refutes the graph. That is a real result. - A **satisfied** implication does not prove the graph. Other graphs imply the same independencies. In particular `A -> B -> C`, `A <- B <- C` and `A <- B -> C` all imply A independent of C given B, so this test cannot distinguish direction. So d-separation gives you a refutation tool, not a discovery tool. ## Faithfulness, the assumption underneath d-separation moves in one direction automatically: if the graph d-separates two nodes given Z, the distribution has that conditional independence (this is the causal Markov condition). The converse — every observed independence corresponds to a d-separation — is an extra assumption called **faithfulness**. It can fail when two open paths carry effects that exactly cancel, so a variable that truly does affect another shows zero association. Such cancellation is a knife-edge coincidence rather than a generic case, but it is the reason a null result never proves the absence of an edge. ## Where this is used in practice d-separation is the engine underneath every adjustment-set decision. "Does this set close all the backdoor paths?" is answered by walking each path and applying the three rules at each intermediate node. Candidates who memorise adjustment recipes stall the moment a graph has five nodes; candidates who can run the rules by hand handle anything they are drawn.
- Does A independent of C given B prove the arrows run A -> B -> C?No. The chain `A -> B -> C`, the reversed chain `A <- B <- C` and the fork `A <- B -> C` all imply the same independence, so this test cannot recover direction. Conditional independence tests can refute a graph but not orient it. Direction has to come from temporal order, the assignment mechanism, or mechanism knowledge.
- In the chain A -> B -> C, are A and C associated if you do not condition on B?Yes. Varying A varies B, and varying B varies C, so the path is open and the two are marginally associated even with no direct edge between them. This is why an observed correlation is not evidence of a direct link. The independence appears only inside strata of B.
- What is the faithfulness assumption and when does it bite?Faithfulness says every conditional independence in the data corresponds to a d-separation in the graph. It fails when two open paths carry effects that exactly cancel, so a real dependence shows up as zero association. It is a knife-edge case rather than a generic one, but it is why finding no association never proves an edge is absent.
A chain is a relay race. A's speed shows up in C's finish time only through B's leg. Compare runners who all handed over at exactly the same moment and A's speed tells you nothing more about C.
saying these in an interview costs you the question
- Says A and C are independent even before conditioning on B
- Applies the chain rule to a collider and blocks it by conditioning
- Treats a satisfied independence test as proof of the graph
- Thinks d-separation reveals the direction of arrows
- Never mentions that descendants of a node inherit its conditioning effect