Bayesian Networks in R
with Applications in Systems Biology
R. Nagarajan, M. Scutari and S. Lèbre (2013).
Use R!, Vol. 48, Springer (US).
ISBN-10: 1461464455
ISBN-13: 978-1461464457
Springer Website
Amazon Website
Errata Corrige
- page 3: “if a node vi precedes vj, there can be no arc from vj to vi” should be “if a node vi precedes vj, there can be no path from vj to vi”.
- page 3: it's true that leaf nodes do not have any outgoing arc, but they are not required to have any incoming arc.
- page 17: “SAB ⊂ V” should be “SAB ⊂ V”, where V is the node set.
- page 22: in Equation (2.12), the numerator of the ratio under the square root should be “n - |Z| - 2” and not “n - 2”.
- page 35: bnlearn 3.2 and later versions are
more picky about setting arc directions; as a result
bn.gs
is an undirected graph and must be extended into a DAG withcextend()
to conclude the example. - page 39: at least in modern times, deal is
unable to fit a network containing only continuous variables. A workaround is to
include a dummy factor (e.g.
marks$XYZ <- factor(rep("xyz", nrow(marks)))
) before callingnetwork()
so thatjointprior()
does not fail. - page 47: “phopsholypids” should be “phospholipids”.
- page 75: “
coef(object)
” should be “coef(lasso.fit)
”. - page 78, 79: “
arth.edges
” should be “arth.arcs
”. - page 89, 149: “Cheng & Druzdel (2000)” should be “Cheng & Druzdzel (2000)”.
- page 98: the code to create and fit the dynamic Bayesian network
inference example fails in modern versions of R and bnlearn. The
following, slightly modified snipped works with an updated installation as of May
2015.
dbn2 = empty.graph(c("265768_at", "245094_at1", "258736_at", "257710_at", "255070_at", "245319_at", "245094_at")) dbn2 = set.arc(dbn2, "245094_at", "265768_at") for (node in names(coef(lasso.s))[-c(1, 6)]) dbn2 = set.arc(dbn2, node, "245094_at") dbn2 = set.arc(dbn2, "245094_at1", "245094_at") dbn2.data = as.data.frame(x[, nodes(dbn2)[1:6]]) dbn2.data[, "245094_at"] = y dbn2.data[, "245094_at1"] = arth12[2:(nrow(arth12) - 1), "245094_at"] dbn2.fit = bn.fit(dbn2, dbn2.data)
- page 104: “a single operations” should be “a single operation”.
- pages 113, 114: the code
start = random.graph(names(hailfinder), num = 4, 382 method = "melancon")
should readstart = random.graph(names(hailfinder), num = 4, method = "melancon", max.in.degree = 2)
without the “382
”, and with the “max.in.degree = 2
” to produce networks with a reasonable number of parameters. Similarly,s0 = random.graph(names(hailfinder), method = "melancon")
should be as follows.s0 = random.graph(names(hailfinder), method = "melancon", max.in.degree = 2)
Reference Versions of the Relevant R Packages
The following R packages were used (or at least mentioned) in the book. The reference version used in the writing of the book and a link to the CRAN/BioConductor homepage are reported for each package.
- Rgraphviz version 1.32.0 [ BioConductor ]
- graph version 1.32.0 [ BioConductor ]
- igraph version 0.6-2 [ CRAN ]
- bnlearn version 3.1 [ CRAN ]
- grBase version 1.3.4 [ CRAN ]
- gRain version 0.8.5 [ CRAN ]
- catnet version 1.13.4 [ CRAN ]
- mugnet version 0.13.5 [ CRAN ]
- vars version 1.5-0 [ CRAN ]
- G1DBN version 3.1 [ CRAN ]
- deal version 1.2-34 [ CRAN ]
- ARTIVA version 1.2 [ CRAN ]
- simone version 1.0-1 [ CRAN Archive ]
- GeneNet version 1.2.5 [ CRAN ]
- lars version 1.1 [ CRAN ]
- glmnet version 1.8-2 [ CRAN ]
- penalized version 0.9-41 [ CRAN ]
- EDISON version 1.0 [ CRAN ]
- rsprng version 1.0 [ CRAN ]
- Rmpi version 0.5-8 [ CRAN ]
- snow version 0.3-3 [ CRAN ]
- rpvm version 1.0-4 [ CRAN Archive ]
R Code and Data Files
Table of Contents
Introduction
A Brief Introduction to Graph Theory
- Graphs, Nodes, and Arcs
- The Structure of a Graph
- Further Reading
The R Environment for Statistical Computing
- Base Distribution and Contributed Packages
- A Quick Introduction to R
- Further Reading
Exercises
Bayesian Networks in the Absence of Temporal Information
Bayesian Networks: Essential Definitions and Properties
- Graph Structure and Probability Factorization
- Fundamental Connections
- Equivalent Structures
- Markov Blankets
Static Bayesian Networks Modeling
- Constraint-Based Structure Learning Algorithms
- Score-Based Structure Learning Algorithms
- Hybrid Structure Learning Algorithms
- Choosing Distributions, Conditional Independence Tests, and Network Scores
- Parameter Learning
- Discretization
Static Bayesian Networks Modeling with R
- Popular R Packages for Bayesian Network Modeling
- Creating and Manipulating Network Structures
- Plotting Network Structures
- Structure Learning
- Parameter Learning
- Discretization
Pearl’s Causality
Applications to Gene Expression Profiles
- Model Averaging
- Choosing the Significance Threshold
- Handling Interventional Data
Exercises
Bayesian Networks in the Presence of Temporal Information
Time Series and Vector Auto-Regressive Processes
- Univariate Time Series
- Multivariate Time Series
Dynamic Bayesian Networks: Essential Definitions and Properties
- Definitions
- Dynamic Bayesian Network Representation of a VAR Process
Dynamic Bayesian Network Learning Algorithms
- Least Absolute Shrinkage and Selection Operator
- James–Stein Shrinkage
- First-Order Conditional Dependencies Approximation
- Modular Networks
Non-homogeneous Dynamic Bayesian Network Learning
Dynamic Bayesian Network Learning with R
- Multivariate Time Series Analysis
- LASSO Learning: lars and simone
- Other Shrinkage Approaches: GeneNet, G1DBN
- Non-homogeneous Dynamic Bayesian Network Learning: ARTIVA
Exercises
Bayesian Network Inference Algorithms
Reasoning Under Uncertainty
- Probabilistic Reasoning and Evidence
- Algorithms for Belief Updating: Exact and Approximate Inference
- Causal Inference
Inference in Static Bayesian Networks
- Exact Inference
- Approximate Inference
Inference in Dynamic Bayesian Networks
Exercises
Parallel Computing for Bayesian Networks
Foundations of Parallel Computing
Parallel Programming in R
Applications to Structure and Parameter Learning
- Constraint-Based Structure Learning Algorithms
- Score-Based Structure Learning Algorithms
- Hybrid Structure Learning Algorithms
- Parameter Learning
Applications to Inference Procedures
- Bootstrap
- Cross-Validation
- Conditional Probability Queries
Exercises