# Causal Structures - Creation & Training#

In this example we want to illustrate how the CausalStructure class is used. We start with the imports.

:

import numpy as np
import pandas as pd
import pylab as pl

from halerium import CausalStructure


By using this Application, You are agreeing to be bound by the terms and conditions of the Halerium End-User License Agreement that can be downloaded here: https://erium.de/halerium-eula.txt


## The artificial data#

We create an artificial data set containing three parameters.

:

n_data = 100
np.random.seed(100)
parameter_a = 5 + np.random.randn(n_data) * 0.1
parameter_b = parameter_a * (-35) + 150 + np.random.randn(n_data) * 1.
parameter_c = parameter_a * 10.5 + parameter_b * (.5) + np.random.randn(n_data) * 0.1

data = pd.DataFrame(data={"(a)": parameter_a,
"(b|a)": parameter_b,
"(c|a,b)": parameter_c})
data

:

(a) (b|a) (c|a,b)
0 4.825023 -20.580472 40.432953
1 5.034268 -27.335642 39.101290
2 5.115304 -32.008941 37.765420
3 4.974756 -24.083157 40.149657
4 5.098132 -28.683511 39.198809
... ... ... ...
95 5.000302 -24.361388 40.234901
96 4.992398 -24.908699 39.977586
97 5.000396 -23.996587 40.410045
98 4.981499 -24.952434 39.641407
99 4.751285 -14.718803 42.547324

100 rows × 3 columns

We purposely chose column names which cannot be used as python variable names.

### Creating the causal structure#

Now that we have our data, we can formulate the set of dependencies that define our causal structure.

:

dependencies = [
["(a)", "(b|a)"], # the column '(b|a)' depends on '(a)'
[["(a)", "(b|a)"], "(c|a,b)"], # the column '(c|a,b)' depends on '(a)' and '(b|a)'
]


and create the causal structure.

:

causal_structure = CausalStructure(dependencies)


## Training#

We can directly train the causal_structure using

:

causal_structure.train(data)


What this triggered in the background was actually 1. causal_structure.scaling_data = data 2. causal_structure.build_graph() 3. causal_structure.train(data)

In the first step scaling data are provided to the causal structure. Scaling data are what the causal structure uses to set the locations and scales of the created variables. These are important to allow for the correct definition of a priori statistics, i.e. useful regularization.

In the second step the graph is built using default arguments. Each dependency will be mathematically modelled as a quadratic regression with unknown variance.

In the third step the graph is trained using default arguments.

In next section we will use the trained causal structure to make predictions.