26 💻 Hierarchical factors in Causal Map

26.1 Creating labels

Factors can optionally be expressed as part of a hierarchy by using semi-colons. If you want to use a different separator like “>” or “/”, you can change that in the settings.

For readability, it is usual to leave a space after the semi-colon, but this makes no difference to the functionality.

26.2 Relabelling

In Causal Map, the process of renaming the factors into this kind of hierarchical structure can be conveniently carried out in the “Multi-edit” tab which is a simple text editor where you can edit anything you have created during coding. If you select factors, as in the image below, it will list the currently visible factor labels, sorted alphabetically.


Here it is easy to “move” an (incorrectly labelled) factor

Health behaviour; understanding of germ theory

to something like

Health knowledge; understanding of germ theory


Real-world knowledge; health; understanding of germ theory

simply by retyping it, without worrying about whether the corresponding higher-level path (“Real-world knowledge; health”) exists already.

This editor has many features such as global search and replace, and multiple cursors, which make it easy to rapidly edit many factor labels.

Using this panel you can also combine several factors into one and split one factor into several.

26.3 Additional calculated fields

The app adds some fields for using hierarchies. One of them is top_level_label which gives just the top level for each factor. Here it is being used to group factors in terms by their top level component.


26.5 Search with nested factors

The same principle applies in the Search and Filter Factors box: you can see factors you have already used but also implied higher-level factors (like “Health behaviour”) and other factor components, beginning with a semi-colon.

26.6 Zooming out


Assuming we have a causal map which has used nested coding, as in the small map shown above, how do we take advantage of this coding to “zoom out”?

If we define the “level” of a factor as the number of semicolons in its label plus 1, here is the same map, zoomed out to level 2 (i.e. a maximum of one semi-colon per factor).


Here is the same map, zoomed out to level 1 (i.e. there are no semi-colons at all).


A warning: for convenience, in both of these diagrams, the set of links between each pair of factors are displayed as one, with a number to tell us how many links there actually are. But most generally, we must not assume that links can in fact be combined in this way without caveats; it could be, for example, that some of them express increasing, and some decreasing, influences.

Another, related, warning: causal mapping as described here is a qualitative process. While zooming in and out can be very useful, it should never be used mechanically. For example, if we had the information “my daughter went to the new training course and now she is quite obsessed about washing her hands, she just won’t stop”, we might code this as “Health behaviour; hand washing; obsessive” but we would certainly pause before zooming out without further thought. Perhaps this new behaviour belongs somewhere quite different. To a qualitative researcher, narrative is not additional colour, but raw data.

26.7 Smart simplification

A weakness of the above approach is already visible in the example, so simplification goes one step further. In many cases we may be happy to see all the factors “rolled up” to the top level but in the above example, “Health behaviour; hand washing” dominates. “Health behaviour” itself is only mentioned once in the raw data, and there is only one other mention of it as a higher-level component, in relation to vaccinations. What can we do about this?

Another way to simplify a causal map is just to hide factors and/or links which are mentioned less frequently. Often it is hard to view a full causal map, especially because of the presence of very many of what we could call “tiddlers”: factors with just one or two mentions. But this is unsatisfactory because it throws away information. This won’t help us, but can we combine the two approaches?

A smarter approach is achievable with this simple algorithm: step by step, “roll up” the least frequent factor by one level, and stop when the desired level of generality has been reached, i.e. when the number of remaining factors is satisfactorily small.

This is an improvement over zooming because it retains detail where it is necessary and removes it where it is not. It will roll up lots of infrequent, granular factors into their parents but only if they are infrequent; if you have a very granular factor like “health behaviour; hand washing” which actually has a lot of mentions, then it won’t get rolled up. It will also completely remove infrequent top-level “tiddlers” which cannot be rolled up into anything else. It is also welcome because the process can be stopped at any desired stage to get just the right level of detail.

The above example can be rolled up to this:


This is an improvement because it still has a small number of factors, retaining frequently-mentioned factors but wrapping up infrequently-mentioned detail into higher-level concepts.

Not all causal information is always retained: Infrequent factors which are either already top-level, with no nesting, or which already “contain” a few rolled-up factors but are still infrequent, cannot be simplified further and will be hidden from the map.