Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

choose.direction

Try to infer the direction of an undirected arc


Description

Check both possible directed arcs for existence, and choose the one with the lowest p-value, the highest score or the highest bootstrap probability.

Usage

choose.direction(x, arc, data, criterion = NULL, ..., debug = FALSE)

Arguments

x

an object of class bn.

arc

a character string vector of length 2, the labels of two nodes of the graph.

data

a data frame containing the data the Bayesian network was learned from.

criterion

a character string, the label of a score function, the label of an independence test or bootstrap. See network scores and independence tests for details on the first two possibilities.

...

additional tuning parameters for the network score. See score for details.

debug

a boolean value. If TRUE a lot of debugging output is printed; otherwise the function is completely silent.

Details

If criterion is bootstrap, choose.directions accepts the same arguments as boot.strength(): R (the number of bootstrap replicates), m (the bootstrap sample size), algorithm (the structure learning algorithm), algorithm.args (the arguments to pass to the structure learning algorithm) and cpdag (whether to transform the network structure to the CPDAG representation of the equivalence class it belongs to).

If criterion is a test or a score function, any node connected to one of the nodes in arc by an undirected arc is treated as a parent of that node (with a warning).

Value

choose.direction returns invisibly an updated copy of x.

Author(s)

Marco Scutari

See Also

Examples

data(learning.test)
res = gs(learning.test)

## the arc A - B has no direction.
choose.direction(res, learning.test, arc = c("A", "B"), debug = TRUE)

## let's see score equivalence in action.
choose.direction(res, learning.test, criterion = "aic",
  arc = c("A", "B"), debug = TRUE)

## arcs which introduce cycles are handled correctly.
res = set.arc(res, "A", "B")
# now A -> B -> E -> A is a cycle.
choose.direction(res, learning.test, arc = c("E", "A"), debug = TRUE)

## Not run: 
choose.direction(res, learning.test, arc = c("D", "E"), criterion = "bootstrap",
  R = 100, algorithm = "iamb", algorithm.args = list(test = "x2"), cpdag = TRUE,
  debug = TRUE)

## End(Not run)

bnlearn

Bayesian Network Structure Learning, Parameter Learning and Inference

v4.6.1
GPL (>= 2)
Authors
Marco Scutari [aut, cre], Robert Ness [ctb]
Initial release
2020-09-16

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.