Chapter 8 Inference in Theorymaker

8.1 How Theorymaker calculates

When you’ve specified your diagram, Theorymaker calculates the consequences on the downstream variables, providing you specify “base” values for the exogenous variables. You can also specify “intervention” values for (some of the) exogenous variables, in which case Theorymaker can calculate the “effect” of an intervention on a downstream variable, defined as the “difference” between the predicted value under intervention and the predicted base value, i.e. the value without intervention.

If there are loops, it prints out iteration graphs too, like in this example. I am proud of the fact that this means that Theorymaker provides a definition of “effect” even within dynamic diagrams with loops (though there are some limitations).

When calculating the levels for some consequence variable, if none of the influencing variables have an intervention level, then there is no intervention level for the consequence variable. If at least one has an intervention level but one or more do not, for these variables we take their base levels as their intervention levels.

If you only set the base of a variable, i.e. you don’t intervene on it, the intervention level will also be set as the same.

8.1.1 Bayesian inference

Is it enough to process information down the network? No. Cause can by definition only flow down it. But we might have information which implies something about antecedents, which means we have to reason backwards.

Bayes’ rule helps us.

But this is not implemented in Theorymaker yet.

8.2 How Theorymaker applies icons

The black-and-white boxes show both the base level and intervention level as the same, i.e. the intervention does not affect this variable.

8.3 Value

Each variable can have “value” assigned to it – to show which variables are most important to us.

Type !heart to set the value of the variable to 1. A heart is displayed.

Type ; value=2 to set the value to two and thus get two hearts.

At the moment, value is not taken into account in the Inference Engine. It is just an important thing to mark our variables with.