# learn: Estimation of parameters in the local probability... In deal: Learning Bayesian Networks with Mixed Variables

 learn R Documentation

## Estimation of parameters in the local probability distributions

### Description

Updates the distributions of the parameters in the network, based on a prior network and data. Also, the network score is calculated.

### Usage

```learn (nw, df, prior=jointprior(nw),
nodelist=1:size(nw),
trylist=vector("list",size(nw)),
timetrace=FALSE)

```

### Arguments

 `nw` an object of class `network`. `df` a data frame used for learning the network, see `network`. `prior` a list containing parameter priors, generated by `jointprior`. `nodelist` a numeric vector of indices of nodes to be learned. `trylist` a list used internally for reusing learning of nodes, see `maketrylist`. `timetrace` a logical. If `TRUE`, prints some timing information on the screen.

### Details

The procedure `learn` determines the master prior, local parameter priors and local parameter posteriors, see Bottcher (2001). It may be called on all nodes (default) or just a single node.

From the joint prior distribution, the marginal distribution of all parameters in the family consisting of the node and its parents can be determined. This is the master prior, see `localmaster`.

The local parameter priors are now determined by conditioning in the master prior distribution, see `conditional`. The hyperparameters associated with the local parameter prior distribution is attached to each node in the property `condprior`.

Finally, the local parameter posterior distributions are calculated (see `post`) and attached to each node in the property `condposterior`.

A so-called trylist is maintained to speedup the learning process. The trylist consists of a list of matrices for each node. The matrix for a given node holds previously evaluated parent configurations and the corresponding log-likelihood contribution. If a node with a certain parent configuration needs to be learned, it is checked, whether the node has already been learned. The previously learned nodes are given as input in the trylist parameter and is updated in the learning procedure.

When one or more nodes in a network have been learned, the network score is updated and attached to the network in the property `score`.

The learning procedure is called from various functions using the principle, that networks should always be updated with their score. Thus, e.g.\ `drawnetwork` keeps the network updated when the graph is altered.

### Value

A list with two elements that may be accessed using `getnetwork` and `gettrylist`. The elements are

 `nw` an object of class `network`, with the `condposterior` properties updated for the nodes. Also, the property `score` is updated and contains the network score. The contribution to the network score for each node is contained in the property `loglik` for each node. `trylist` an updated list used internally for reusing learning of nodes, see `maketrylist`.

### Author(s)

Susanne Gammelgaard Bottcher,
Claus Dethlefsen rpackage.deal@gmail.com.

### References

Bottcher, S.G. (2001). Learning Bayesian Networks with Mixed Variables, Artificial Intelligence and Statistics 2001, Morgan Kaufmann, San Francisco, CA, USA, 149-156.

`networkfamily`, `jointprior`, `maketrylist`, `network`

### Examples

```data(rats)
fit       <- network(rats)
fit.prior <- jointprior(fit,12)
fit.learn <- learn(fit,rats,fit.prior,timetrace=TRUE)
fit.nw    <- getnetwork(fit.learn)
fit.learn2<- learn(fit,rats,fit.prior,trylist=gettrylist(fit.learn),timetrace=TRUE)
```

deal documentation built on Nov. 10, 2022, 5:30 p.m.