graph utilities {bnlearn} R Documentation

Utilities to manipulate graphs

Description

Check and manipulate graph-related properties of an object of class bn.

Usage

# check whether the graph is acyclic/completely directed.
acyclic(x, directed = FALSE, debug = FALSE)
directed(x)
valid.dag(x, debug = FALSE)
valid.cpdag(x, debug = FALSE)
valid.ug(x, debug = FALSE)
# check whether there is a path between two nodes.
path.exists(x, from, to, direct = TRUE, underlying.graph = FALSE, debug = FALSE)
# build the skeleton or a complete orientation of the graph.
skeleton(x)
pdag2dag(x, ordering)
# build a subgraph spanning a subset of nodes.
subgraph(x, nodes)
# perturb a network by random arc additions, removals and reversals.
perturb(x, nops, ops = c("set", "drop", "reverse"), maxp = Inf, debug = FALSE)

Arguments

x

an object of class bn. skeleton(), acyclic(), directed() and path.exists() also accept objects of class bn.fit.

from

a character string, the label of a node.

to

a character string, the label of a node (different from from).

direct

a boolean value. If FALSE, ignore any arc between from and to when looking for a path.

underlying.graph

a boolean value. If TRUE, the underlying undirected graph is used instead of the (directed) one from the x argument.

ordering

the labels of all the nodes in the graph; their order is the node ordering used to set the direction of undirected arcs.

nodes

the labels of the nodes that induce the subgraph.

directed

a boolean value. If TRUE, only completely directed cycles are considered. Otherwise, undirected arcs will also be considered and treated as arcs present in both directions.

nops

a positive integer value, the number of arc operations applied to the network to perturb it.

ops

a vector of character strings, one or more of "set", "drop" or "reverse". It defines which arc operations are applied to the network to perturb it.

maxp

the maximum number of parents allowed for a node after each arc operation. The default value is Inf.

debug

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

Value

acyclic(), path() and directed() return a boolean value.
skeleton(), pdag2dag(), subgraph() and perturb() return an object of class bn.

valid.dag(), valid.cpdag() and valid.ug() return a boolean value.

Author(s)

Marco Scutari

References

Bang-Jensen J, Gutin G (2009). Digraphs: Theory, Algorithms and Applications. Springer, 2nd edition.

Andersson SA, Madigan D, Perlman MD (1997). "A Characterization of Markov Equivalence Classes for Acyclic Digraphs." The Annals of Statistics, 25(2):505–541.

Examples

data(learning.test)
cpdag = pc.stable(learning.test)

acyclic(cpdag)
directed(cpdag)
dag = pdag2dag(cpdag, ordering = LETTERS[1:6])
dag
directed(dag)
skeleton(dag)
perturb(dag, nops = 3, debug = TRUE)

[Package bnlearn version 5.2-20260704 Index]