Influence Estimation#
[1]:
%%capture
# execute the creation & training notebook first
%run "02-01-creation_and_training.ipynb"
After training we might want to know how much our parameters influence a certain target. We can do this with the .estimate_influences
method.
Let’s start by estimating the influences on the parameter ‘(c|a,b)’.
[2]:
causal_structure.estimate_influences(target='(c|a,b)')
[2]:
(a) 0.675741
(b|a) 3.677125
(c|a,b) 1.000000
Name: influence on (c|a,b), dtype: float64
We see that ‘(c|a,b)’ influences itself by 1, that is to say it influences itself by 100%. ‘(a)’ influences it by 66%. This seems fairly in line with the R2-score in the performance evaluation section.
However, ‘(b|a)’ shows an influence above 100%. How can this be understood?
Influences follow causal directions#
If we change the target of the influence estimation to ‘(b|a)’
[5]:
causal_structure.estimate_influences(target='(b|a)')
[5]:
(a) 0.919762
(b|a) 1.000000
(c|a,b) 0.000000
Name: influence on (b|a), dtype: float64
we see that ‘(c|a,b)’ has an influence of zero on ‘(b|a)’, even though you can predict ‘(b|a)’ from ‘(c|a,b)’ (see the “Backwards prediction” subsection in the prediction section). This is because estimate_influences
respects causal directions. So effects do not influence causes.
For further details about the InfluenceEstimator
see the corresponding section in the core-documentation.
In the next section we will have a look at rank estimation.