TP ThinkingProcess

Causal Loop Diagramming

Causal Loop Diagrams (CLD) represent the influence and feedback of variables around a system. CLD is used to visualise these relationships, to enable a joint understanding of how the variables within a system in question work, and enable analysis of how to improve problems with the system.

CLD uses just a few different symbols, shown below:

This image shows a basic feedback loop. A loop is created with a number of variables linked by arrows showing causal relationships between the variables. A loop must be closed - that is linked all the way round. The loop on the left describes the feedback between stress and rate of errors of a human working on a machine. The diagram tells us that rising stress increases error rate, which in turn increases stress. The elements of the diagram are:
  • "Stress" and "Error rate" - these are the variables. They should be written as nouns, and can represent a stock (e.g. things) or flow (e.g. rate of change of a stock).
  • The blue arrows - these are causal relationships between variables, and show which variables cause a change on which other variables. [The arrows should not be used to represent correlation between variables. Correlation is where it is observed that one variable follows another, but this observation may not be a causal one, where one variable is "causing" the other to change]
  • + - the plus sign (or - sign) are link identifiers and show whether an increase in one variable causes an increase or decrease in another variable. In our diagram an increase in stress causes an increase in error rate (+) and an increase in error rate causes an increase in stress (+).
  • R (or B) - This symbol, placed in the centre of a closed loop, is the loop identifier and describes whether the loop is causes positive or negative feedback back to each variable in the loop. Positive feedback is denoted with an R, to show that it is self Reinforcing and negative feedback is denoted with a B, to show that it is self correcting or Balancing. 
  • Loop identifier arrow - this arrow around the R or B shows the direction of the loop feedback. In a simple diagram this is obvious, but may me less so in a more complex CLD
This image shows the same causal loop as above, but has introduced a second loop. This new loop says that as the number of errors increases, so does the number of work breaks the operator takes, which in turn reduces the amount of stress. This new loop is a balancing loop as it is self correcting.

To work out whether a loop is Reinforcing or Balancing, you simply count the number of "-" link identifiers:

  • Even umber of "-": The loop is positive, or Reinforcing.
  • Odd number of "-": The loop is negative, or Balancing

If the CLD is more complex and the polarity cannot be easily identified, then the loop should be broken open at any variable and a small change traced around the loop to identify the polarity. In our example above we could break the loop at "Work Breaks": more work breaks > less stress > lower error rate > less work breaks: the loop is balancing as the feedback to the variable "Work Breaks" opposes the original change.

Loop Polarity mathematics

The loop polarity relates to the "gain" of the system, which is the strength of amplification or increase each time we go around the loop. A gain of 2 (a reinforcing loop) would mean that for each cycle around the loop the size of the variables would be doubled. This is therefore an exponential gain loop. A gain of 0.5 (a balancing loop) would mean that the variables would halve, which has a controlling effect around the loop. Using mathematics within CLDs enables analysis of growth / decline of different interconnecting loops, and therefore the expected behaviour of the model. Changes to the model including mitigating variables can then be sized to balance undesired effects in the CLD.

Other Factors of CLDs

  • Name your loops - naming loops can make your diagrams easier to understand
  • Variable name consistency - it is important to get the variable names correct. The should be nouns or noun phrases, and their increase / decrease should be clear. For instance if a variable name is "Price Rise" this would indicate that the loop is considering the cause of higher and lower price rise, and not higher and lower price.
  • Add delays - if there are delays around the loops then they should be shown by writing "delay" on the causal arrow or drawing a double slash (//) on the line.
  • Other notation standards - Some CLDs use "s" (same) instead of "+" and "o" (opposite) instead of "-" on causal arrows. Also "R" is sometimes replaced with "+" and "B" replaced with "-" in the loop identifier.

Example Analysis

The example on the left shows a CLD for maintaining an asset with a maintenance resource. The loop is reinforcing:
  • As asset quality increases > Asset errors decrease > Time spent fixing errors decreases > available planned maintenance resource increases > time to do preventative maintenance increases and asset quality continues to increase
This looks great, but the converse is also true:
  • If asset quality starts to decrease > Asset errors increase > Time spent fixing errors increases> available planned maintenance resource decreases > time to do preventative maintenance decreases and asset quality continues to decrease.
The // on the line to "Asset quality" shows that there is a delay before reducing preventative maintenance affects asset quality. 
So monitoring the system is very important if the asset performance is to remain high. The CLD can help identify what to measure around the system, and also inform what contingency plans will help stabilise the loop. This stabilisation can come from either an external input, or by adding something into the loop to "balance" it.
In order to balance the reinforcing loop we have added a new loop with "contract resource hire". Now when errors increases leading to the time fixing errors also increasing, the adverse effect on planned maintenance resource can be balanced out by contract resource hire. This balancing loop can also be used to reduce resource levels as asset errors continues to fall.