# Inference

We advise the reader to read the Section continuous Gaussian random variables which provides a detailed description of the inference algorithms. To exchange information over the factor graph, the FactorGraph provides three inference approaches:

Each of the inference functions accepts only the composite type `ContinuousModel`

, i.e., an output variable of the function `gbp = continuousModel()`

and applies the synchronous message passing schedule.

#### Message inference

The set of functions that can be used to preform message inference:

```
messageFactorVariable(gbp); messageVariableFactor(gbp)
messageFactorVariableBroadcast(gbp); messageVariableFactorBroadcast(gbp)
messageFactorVariableKahan(gbp); messageVariableFactorKahan(gbp)
```

#### Mean inference

The set of functions that can be used to preform only mean inference:

```
meanFactorVariable(gbp); meanVariableFactor(gbp)
meanFactorVariableBroadcast(gbp); meanVariableFactorBroadcast(gbp)
meanFactorVariableKahan(gbp); meanVariableFactorKahan(gbp)
```

#### Variance inference

The set of functions that can be used to preform only variance inference:

```
varianceFactorVariable(gbp); varianceVariableFactor(gbp)
varianceFactorVariableBroadcast(gbp); varianceVariableFactorBroadcast(gbp)
varianceFactorVariableKahan(gbp); varianceVariableFactorKahan(gbp)
```

#### Randomised damping inference

Additionaly, we provide the set of functions to preform damping inference:

```
messageDampFactorVariable(gbp); meanDampFactorVariable(gbp)
messageDampFactorVariableBroadcast(gbp); meanDampFactorVariableBroadcast(gbp)
messageDampFactorVariableKahan(gbp); meanDampFactorVariableKahan(gbp)
```

#### Marginal inference

To compute marginals the FactorGraph provides the function:

`marginal(gbp)`

Same as before, the function accepts only the composite type `ContinuousModel`

.

#### Dynamic inference

This framework is an extension to the real-time model that operates continuously and accepts asynchronous observation and variance values. More precisely, in each GBP iteration user can change the observation and variance values of the corresponding factor nodes and continue the GBP iteration process. We advise the reader to read the section dynamic GBP algorithm which provides a detailed description of the input parameters.

`dynamicFactor!(gbp; factor = index, observation = value, variance = value)`

The function accepts the composite type `ContinuousModel`

and keywords `factor`

, `observation`

and `variance`

, which defines the dynamic update scheme of the factor nodes. The factor node index corresponding to the row index of the coefficient matrix. Note that during each function call, `ContinuousSystem.observation`

and `ContinuousSystem.variance`

fields also change values according to the scheme.

#### Dynamic inference with variance ageing

The ageing framework represents an extension of the dynamic model and establishes a model for data arrival processes and for the process of data deterioration or ageing over time (or GBP iterations). We integrate these data regularly into the running instances of the GBP algorithm. We advise the reader to read the section ageing GBP algorithm which provides a detailed description of the input parameters.

```
ageingVariance!(gbp; factor = index, initial = value, limit = value,
model = value, a = value, b = value, tau = value)
```

This function should be integrated into the iteration loop to ensure variance ageing over iterations. The function accepts the composite type `ContinuousModel`

and the keywords `factor`

, `initial`

, `limit`

, `model`

, `a`

, `b`

and `tau`

. The variance growth model can be linear `model = 1`

, logarithmic `model = 2`

and exponential `model = 3`

, where parameters `a`

and `b`

control the rate of the growth. The `initial`

defines the initial value of the variance, while the variance upper limit value is defined according to `limit`

. The ageing model increases the value of variance over iterations, thus the current iteration step should be forwarded using `tau`

keyword. Also, during each function call, `ContinuousSystem.variance`

field changes values according to the ageing model.