# Page History

## Key

• This line was removed.
• Formatting was changed.

...

To enable the probabilistic processing you have to include the probabilistic feature and issue the StandardProbabilistic transformation configuration (#TRANSCFG StandardProbabilisticuse the probabilistic metadata (#METADATA Probabilistic) in your Odysseus script.

## Estimating probabilistic values

ToDo:

### Expectation Maximization

The EM operator allows the fit a Gaussian mixture model (GMM) with predefined number of mixtures to the values of a data stream.

### Kalman Filter

The Kalman Filter operator can be used if the variance of of the values in the data stream is known from some datasheet.

## Filtering probabilistic values

For filtering probabilistic filtering probabilistic values you can use the same syntax that you already use for deterministic values. However, the result of the operators differ. In case of discrete probabilistic values the Select operator returns a tuple with a lower tuple existence probability.

...

Code Block
theme Eclipse PQL Probabilistic discrete select true
`output = SELECT({predicate = RelationalPredicateProbabilisticRelationalPredicate('x > 1.0 AND x < 3.0')}, input)`

...

Code Block
theme Eclipse pql Probabilistic continuous select true
`output = SELECT({predicate = RelationalPredicateProbabilisticRelationalPredicate('x > 1.0 AND x < 4.0')}, input)`

...

Now that you know how to filter and join probabilistic values you probably want to do something with the values like performing mathematic operations on them. To do so you can use the algebraic operator (+, *, -, /, ^) on probabilistic values in i.e. a Map operator. Attention, when using multiplication or division on continuous probabilistic values, the result is estimated by fitting Gaussian mixture models to resulting distribution.

Code Block
theme Eclipse pql Algebraic operator on probabilistic discrete values true
`output = MAP({expressions = ['x + 2.0', 'x * 2.0', 'x * toProbabilisticDouble([1.0,0.5;2,0.5])', 'x * toProbabilisticDouble([1.0,0.5])']}, input)`

### Mathematical Functions

#### SQRT(Probabilistic Value)

Computes the probabilistic square root of the given probabilistic value.

### Mathematical Functions

#### Int(Distribution, Lower Limit, Upper Limit)

...

Code Block
language cql Example
`SELECT distance(as3DVector(x, y, z), [1.0;2.0;3.0]) FROM stream`

### Datatype Functions

#### ToProbabilisticDouble(Matrix)

Constructs a discrete probabilistic value using the first column of the given matrix for the values and the second column of the matrix for the probabilities for each value.

#### DoubleToShort(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic short value

#### DoubleToByte(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic byte value

#### DoubleToInteger(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic integer value

#### DoubleToFloat(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic float value

...

### Converts the given probabilistic double value to a probabilistic long value

#### as2DVector(Object, Object)

...

Code Block
theme Eclipse pql Probabilistic continuous select true
`output = ExistenceToPayload(SELECT({predicate = RelationalPredicateProbabilisticRelationalPredicate('x > 1.0 AND x < 4.0')}, input))`

`ProbabilisticRelationalPredicate`