Learn
Lesson · Science, Induction and Causation · Causation

Counterfactual Causation and the But-For Test

A structural model gives each variable an equation in terms of the variables it depends on. To test a cause, set it to the other value and recompute everything downstream. If the effect changes, the variable is a but-for cause. Striking the match and the presence of oxygen both pass, and the test does not distinguish them.

each variable has an equation actual values: solve the equations flip C, recompute: E flips, C is but-for but-for says nothing of which cause matters
The but-for test

Core ideas

What this lesson establishes

Rates compare what happened. A cause is a claim about what would have happened otherwise, and a model is how the claim is computed.

1

A structural equation

Each variable that is not an input is defined by an equation in the variables it depends on, such as F = S ∧ O for a fire that needs a struck match and oxygen. The inputs are given their actual values.

2

Flipping a variable

To ask what would have happened, set a variable to its other value, leave the inputs alone, and recompute every variable that depends on it. The flipped variable ignores its own equation.

3

The but-for test

A variable is a but-for cause of an effect if the effect has a different value after the flip. This is the counterfactual “had the cause not occurred, the effect would not have”, computed.

The material

A fire, two causes, and a chain

The equations first, the actual values second, and then the flip and what it does and does not tell you.

A fire starts when a match is struck in a room with oxygen. Write S for “the match is struck” and O for “oxygen is present”, each 1 if true and 0 if false. These are inputs: nothing in the model determines them. Write F for the fire.

S = 1 O = 1 F = S ∧ O
Definition · Structural model

A structural model lists the input variables with their actual values and gives every other variable an equation in terms of variables it depends on. The equations must not loop. The actual values are what solving them gives.

Solving the equations gives F = 1 ∧ 1 = 1. Now ask the counterfactual question. Set S to 0 and recompute: F = 0 ∧ 1 = 0. The fire does not occur, so the strike is a but-for cause. The lab's table shows three columns, the actual values, the values with the cause flipped, and a third column that the next lesson puts to use.

Theorem · The but-for test

A variable C is a but-for cause of the effect E in a model when flipping C, leaving every input at its actual value and recomputing each variable that depends on C, changes the value of E.

Do the same for oxygen. Set O to 0 and F = 1 ∧ 0 = 0, so oxygen is a but-for cause too. Ordinary speech would call the strike the cause and the oxygen a condition. The equations contain no such difference: F = S ∧ O is symmetric in the two. Whatever separates a cause from a background condition is a matter of what is unusual, controllable or of interest, and the test does not decide it.

The third preset is a chain. A makes B happen, and B makes C happen: B = A, C = B, with A = 1. Flipping A sets B to 0 and then C to 0, so A is a but-for cause of C even though it acts only through B. The test follows the dependency downstream, which is why recomputing is required and a glance at the last equation is not enough.

What the lab computes is only as good as the equations. A model that leaves out a second source of fire, or treats two variables as independent that are not, gives a different verdict, and no step of the computation can notice. The model is a premise.

Hume added, almost in passing, a second definition of a cause: had the first object not been, the second would never have existed. The test above is that counterfactual with the words “had not been” replaced by a flip and a recomputation. It is exact for the model and it has a famous failure, in which an event is plainly a cause and the flip leaves the effect unchanged. The next lesson is about that failure.

Interactive

Causes in a structural model

But-for, held fixed, and joint

Flip the cause, recompute the worldactual values, the cause flipped, and the cause flipped with the witness held
10held at its actual value

Method

Testing a cause in a model

Four steps, in this order, for any situation you can describe in a few variables.

1

List the variables and the inputs

Name each thing that can be true or false, and mark those that nothing else in the model determines. Give each input its actual value.

2

Write one equation for each other variable

Say what each depends on, using and, or and not. If two equations depend on each other, the model has a loop and must be redrawn.

3

Solve for the actual values

Work from the inputs to the effect and check that the effect has the value it did in the case. If it does not, the model describes another case.

4

Flip the candidate and recompute

Set it to the other value, recompute everything that depends on it, and compare the effect. A change makes it a but-for cause.

Flipping and recomputing

Score 0 / 0

The fire, the strike and the oxygen

Inputs S = 1, O = 1; the equation F = S ∧ O.

actual: S = 1, O = 1, so F = 1 and 1 = 1 flip S to 0: F = 0 and 1 = 0, the fire goes out flip O to 0: F = 1 and 0 = 0, the fire goes out both are but-for causes of the fire chain: A = 1, B = A = 1, C = B = 1; flip A: C = 0

The test reports the strike and the oxygen in the same words. Choosing to call one of them the cause is a decision about what is unusual or of interest, and it is made outside the model.

Common mistakes

1
Thinking a cause is what made the difference in the circumstances, as against a background conditionThe but-for test cannot make that distinction. In F = S ∧ O the lab reports the strike and the oxygen identically, and the equation is symmetric in them. A reader who wants to say that only the strike is the cause is relying on something outside the model, which is allowed but should be said.
2
Taking the test to apply only to the nearest variableThe chain shows that the flip is carried along every equation that depends on the variable. A is a but-for cause of C though C's equation mentions only B.
3
Treating a verdict as a fact about the world rather than the modelThe lab recomputes the equations it was given. If the equations leave out a second route to the effect, the verdict is correct for the model and may be wrong for the situation.

Check your understanding

✓
Finish when you can write a situation as equations and test a variable by flipping it.

Given a short description of a situation, you should be able to write its variables and equations, compute the actual values, flip a candidate cause, recompute, and say whether it is a but-for cause and what the model leaves out.

Note: The variables here are Boolean and the models are given, not learned from data. Choosing the variables and the equations is the substantive step, and the course does not try to automate it.

Kept in this browser only, for you. Nothing is sent anywhere and nothing checks it. Carry it to another device.

Feedback and recommendations

Something to change about this lesson? Write it down, tick it off when it is handled, and export the list when you want to act on it. Kept in this browser only: nothing is sent anywhere, and nobody is notified.

No recommendations yet for this lesson.