Learn R Programming

bnlearn (version 4.4.1)

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 bnlearn-package 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.

Value

choose.direction returns invisibly an updated copy of x.

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).

See Also

score, arc.strength.

Examples

Run this code
# NOT RUN {
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)
# }

Run the code above in your browser using DataLab