📚 Context in causal mapping: how to code it

In this section, we’ll look at “Context” as it appears to us at Causal Map when we do actual (qualitative) causal mapping: taking causal claims which real-life stakeholders actually make and trying to encode them in as systematic a way as possible. We believe that doing qualitative causal mapping is a really good testbed for theoretical ideas in evaluation and social science: do they fit with what people actually say?

So, how do we code this in causal terms: “When enough oxygen is present, a spark will always cause a flame”? (How) can we distinguish between a context like Oxygen and just some causal factor like Flame? How do we encode a context in a causal map?

We can draw a line from Spark to Flame, but what do we do about Oxygen? Drawing a line also from Oxygen to Flame doesn’t seem to capture the context-ness of Oxygen.

Version 1: context is just a causal factor

In general terms this diagram is ok, because we know the partial function from Spark and Oxygen to Flame:

Oxygen Spark Flame
Yes Yes Yes
Yes No No
No Yes ?
No No ?

We know how Spark controls Flame only given Oxygen, but not when there is no Oxygen. This suggests that we can deal with a contextual factor as an ordinary causal factor, namely one which causally enables causal link(s) between other factors.

This lack of information about what happens in the absence of the contextual factor means that it acts like a sufficient condition for the causal relationship. (The defining characteristic of a sufficient condition is that no claim is made about what happens in its absence, just as the defining characteristic of a necessary condition is that no claim is made about what happens when it is present (only when it is absent).

Inside the context Oxygen, Spark is a necessary and sufficient cause of Flame (or so our respondent tells us). Outside the context C, Spark never makes any difference to Flame (or, we have no information about the effect, which isn’t the same thing, but it doesn’t matter here.)

Perhaps it is this very absence of information about what happens with no Oxygen which makes Oxygen feel more like a context rather than an ordinary causal factor. You can’t see that in this first diagram.

There are many ways to encode contextual information in a Causal Map; here we suggest storing the information inside each link.

Version 2: context is a causal factor which causally enables any causal link which has the same colour

In this version, the contextual information is explicitly encoded within each link which is affected by the context.

  • It is quite a general solution, because it can cope with a wide variety of cases.

  • If there are several links which are all active in the context “Oxygen”, they would all get the same colour.

  • If “Oxygen” appears in the map as a causal factor, it could get the same colour; this approach is possible also if the context is never also mentioned as a causal factor, but the colour would have to be explained in another way.

  • Visually it is a bit disappointing, because there is no causal arrow coming out of Oxygen, you have to make the visual connection yourself via the colours.

  • This approach only works if we think of context as an all-or-nothing thing, which is rarely the case in real life: in fact, in our very example, the contextual role of Oxygen obviously differs according to its strength.

Using context in the Causal Map app

At the moment, you can encode context in the Causal Map app simply by creating a hashtag for it. You can use a family of hashtags by using some characters in common, like “Context:”, like this:

  • Context: Oxygen

  • Context: Science_Experiment


At the moment, all hashtags are printed on the Print map. You can also search by and filter for contexts.