Causation

Disease DDD

In adult males, symptoms A, B, C and, rarely, D

Adult females, symptoms A, B, commonly D and F (only present after having given birth)

In children, A, B, F, occasionally G, B is sometimes masked by X in younger children.

Symptoms can switch depending on age, gender and other factors. There is probability as well. What structure is used?

We want to be able to see what is switching – a young adult may show symptoms more typical of a child. If you don’t know the gender or the age, do all possibilities come up? That is, the more you know, the more accurate.

We have to handle causation modelling – several diseases may cause a symptom, with different degrees of probability – we need to sort all this out at an operator removed from the symptom object.

A Causes B

No other cause of B

ACausesB.PNG (25689 bytes)

If there are multiple causes of B, then

AOrXCausesB.PNG (58785 bytes)

The control on probability may be in the logical control of the ToCause via a logical operator, or at the object level (all objects carry a probability of existence – in the quiescent state, it is not known – that is, they neither exist nor is there any proof they do not exist. To simplify things, all of the bits of a generic patient are assumed to exist unless advised otherwise (no specific gender or age or weight except generic ranges). Once a particular patient materialises, then symptoms and diseases start coming into existence or being forced out of existence.

Probabilities can be overridden, so if A is known not to exist from some other source

AOrXCausesB1.PNG (58767 bytes)

It is a little more complicated than that – existence ranges from 0 (definitely does not exist) through 0.5 (don’t know either way) to 1.0 (definitely does exist). Values in the range 0.01 to 0.99 can be overridden, so 0 (probably 0.01 was propagated) overrides 0.84.

We have decided it is not A, so the cause of B must be X. We may discover it can’t be X either, which means there is an even less likely cause, or our model is wrong, or the conclusion A did not exist was premature, or we need to re-examine whether B really exists, or we just thought it did. It should be clear that for large and complex networks, there is a place for a careful analyser here, moving its focus to wherever the evidence drives it.

It gets more complicated

AOrXCausesBCausesC.PNG (75295 bytes)

Logical Variability

To allow for variability, we will use the ObjectGroup structure as object existence logic, relying on the type of control to determine whether it operates as an OBJECT_AND or an OBJECT_OR, or some more fancy type, such as an AND in one direction and an OR in the other. So, A causes B, C and D becomes

AOrXCausesBCD.PNG (53838 bytes)

If B exists, and there is no other cause for B other than A, then A exists, and C and D must also exist, and if they don’t…

 Multiple causes required together

AAndBCauseC.PNG (53032 bytes)

These simple diagrams give a hint of the complex networks required when a dozen different diseases can give rise to many of the same symptoms (and why the networks are going to need to be built from text).

A Presentation showing causation in bioinformatics

Medical Design Notes