hbayes-0.2.1: Inference with Discrete Bayesian Networks

Bayes.Examples

Description

Examples of networks

Creating a simple network

The `example` function is the typical example. It is using the monad `BNMonad`. The goal of this monad is to offer a way of describing the network which is natural.

There are only three functions to understand inside the monad:

• `variable` to create a discrete variable of type `DV`. Creating a discrete variable is using a `Bounded` and `Enum` type like for instance `Bool`.
• `proba` to define the probability P(A) of a variable A
• `cpt` to define the conditional probability table P(A | BC)

It is important to understand how the values are organized. If you define P( wet | sprinkler road) then you have to give the values in the order:

```wet=False, sprinkler=False, road=False
```

Finally, don't forget to return the discrete variables at the end of your network construction because those variables are used for making inferences.

```example :: (`DVSet`,`SBN` `CPT`)
example = `runBN` \$ do
winter <- `variable` "winter" (t :: Bool)
sprinkler <- `variable` "sprinkler" (t :: Bool)
wet <- `variable` "wet grass" (t :: Bool)
rain <- `variable` "rain" (t :: Bool)
road <- `variable` "slippery road" (t :: Bool)
--
`proba` winter ~~ [0.4,0.6]
`cpt` sprinkler [winter] ~~ [0.25,0.8,0.75,0.2]
`cpt` rain [winter] ~~ [0.9,0.2,0.1,0.8]
`cpt` wet [sprinkler,rain] ~~ [1,0.2,0.1,0.05,0,0.8,0.9,0.95]
`cpt` road [rain] ~~ [1,0.3,0,0.7]
```

Importing a network from a Hugin file

The `exampleImport` function can be used to import a file in Hugin format. Only a subset of the format is supported. The function will return a mapping from node names to Discrete Variables `DV`. The node name is used and not the node's label. The function is also returning a simple bayesian network `SBN` using `CPT` as factors.

The implementation is using `getDataFileName` to find the path of the test pattern installed by cabal.

```exampleImport :: IO (Map.Map String `DV`,`SBN` `CPT`)
exampleImport = do
path <- `getDataFileName` "cancer.net"
r <- `importBayesianGraph` path
return (`runBN` \$ fromJust r)
```

Synopsis

# Documentation

example :: ([DV], SBN CPT)Source

Standard example found in many books about Bayesian Networks.

Example showing how to import a graph described into a Hugin file.

Diabete example (not provided with this package)

Asia example (not provided with this package)

Poker example (not provided with this package)

Farm example (not provided with this package)

Perso example (not provided with this package)