## Creating and manipulating objects

- Creating Bayesian network structures
- Creating an empty network
- Creating a saturated network
- Creating a network structure
- With a specific arc set
- With a specific adjacency matrix
- With a specific model formula

- Creating one or more random network structures
- With a specified node ordering
- Sampling from the space of connected directed acyclic graphs with uniform probability
- Sampling from the space of the directed acyclic graphs with uniform probability

- Creating custom fitted Bayesian networks
- Creating custom fitted Bayesian networks using expert knowledge
- Discrete networks
- Continuous networks
- Hybrid networks (mixed continuous and discrete nodes)

- Creating custom fitted Bayesian networks using both data and expert knowledge

- Creating custom fitted Bayesian networks using expert knowledge
- Manipulating the nodes of a network structure
- Adding and removing nodes
- Renaming nodes

## Structure learning

- Score functions: computing & comparing
- Loading the reference data sets
- Computing a network score
- Testing score equivalence

- Conditional independence tests
- Parametric tests
- Semiparametric Monte Carlo tests
- Monte Carlo permutation tests

- Whitelists and blacklists in structure learning
- Constraint-based structure learning algorithms
- Score-based structure learning algorithms
- Local search learning algorithms
- Hybrid structure learning algorithms

- Utilities to construct blacklists
- Constructing a blacklist from a topological ordering
- Constructing a blacklist from a partial ordering
- Constructing a blacklist to ensure a subset of nodes are disconnected from each other

- Using custom scores in structure learning
- Replicating an existing score
- Instrumenting network scores to debug them
- Extending existing network scores
- Implementing new network scores
- Mixed-Effects models as local distributions
- Additive Bayesian networks

## Parameter learning

- Fitting the parameters of a Bayesian network
- Learning the network structure
- Setting the direction of undirected arcs
- Fitting the parameters (Maximum Likelihood estimates)
- Discrete data
- Continuous data
- Hybrid data (mixed discrete and continuous)

- Fitting the parameters (Bayesian Posterior estimates)
- Discrete data

- Fitting the parameters (Expectation-Maximization estimates)

## Model validation

- Comparing Bayesian network structures
- Summaries
- Structural distances
- Visual comparisons

- Bootstrap-based inference
- The general case
- Measuring arc strength

- Bayesian networks and cross-validation
- Choosing a Bayesian network learning strategy
*k*-fold cross-validation- Custom folds in cross-validation
- Hold-out cross-validation

- Comparing different network structures
- Cross-validation and predictive error
- Cross-validation and predictive correlation

- Choosing a Bayesian network learning strategy

## Inference

- Computing the log-likelihood of data for a Bayesian network
- Predicting new observations from a Bayesian network
- Predicting from the parents
- Predicting with Monte Carlo posterior inference
- Predicting with exact inference
- Predictions in Bayesian network classifiers

- Bayesian network classifiers
- Structure learning
- Parameter learning
- Prediction

## Plotting

- Plotting networks with the
**Rgraphviz**package- Options directly exposed from Rgraphviz
- Highlighting nodes and arcs
- Refining a plot using Rgraphviz functions
- Plotting networks left-to-right instead of top-to-bottom

- Plotting arc strengths with
**Rgraphviz**and**lattice**- Plotting the distribution of arc strengths
- Plotting the network structure together with the arc strengths

- Plotting networks and marginal distributions with the
**Rgraphviz**package- Discrete networks
- Continuous networks
- Hybrid networks

## Handling of missing data

- Preprocessing data with missing values
- Discretizing data
- Removing highly-correlated variables

- Imputing missing values from a Bayesian network
- Imputing from the parents
- Imputing with Monte Carlo posterior inference
- Imputing with exact inference

- Local discovery algorithms for structure learning from data with missing values
- Constraint-based structure learning from data with missing values
- Score-based structure learning from data with missing values
- The Structural Expectation-Maximization (Structural EM) algorithm
- With partially observed variables
- With completely unobserved (latent) variables

- The Structural Expectation-Maximization (Structural EM) algorithm
- Parameter learning from data with missing values
- Parameter estimators for complete data
- The Expectation-Maximization (EM) algorithm

- Bootstrap and cross-validation from data with missing values
- Log-likelihood of data with missing values

## Interfacing with other R packages

- Interfacing with the
**deal**R package- Exporting a network structure to
**deal** - Importing a network structure from
**deal**

- Exporting a network structure to
- Interfacing with the
**pcalg**R package- Exporting a network structure to
**pcalg** - Importing a network structure from
**pcalg**

- Exporting a network structure to
- Interfacing with the
**parallel**R package- Parallel structure learning
- Parallel parameter learning
- Parallel cross-validation
- Parallel bootstrap
- Parallel approximate inference

- Interfacing with the
**graph**R package- Exporting a network structure to
**graph** - Importing a network structure from
**graph**

- Exporting a network structure to
- Interfacing with the
**igraph**R package- Exporting a network structure to
**igraph** - Importing a network structure from
**igraph**

- Exporting a network structure to
- Interfacing with the
**gRain**R package- Exporting a fitted Bayesian network to
**gRain** - Importing a fitted Bayesian network from
**gRain**

- Exporting a fitted Bayesian network to

## Interfacing with other software packages

## Extended examples

- bnlearn: Practical Bayesian Networks in R (Tutorial at the useR! conference in Toulouse, 2019)
- A Quick introduction
- Bayesian networks
- Definitions
- Learning
- Inference

- The
**bnlearn**package

- Bayesian networks
- A Bayesian network analysis of malocclusion data
- The data
- Preprocessing and exploratory data analysis

- Model #1: a static Bayesian network as a difference model
- Learning the Bayesian network
- Learning the structure
- Learning the parameters

- Model validation
- Predictive accuracy
- Confirming with expert knowledge

- Learning the Bayesian network
- Model #2: a dynamic Bayesian network
- Learning the structure
- Model averaging in structure learning
- Learning the parameters
- Model validation and inference

- A Quick introduction