Extend a Partially Directed Acyclic Graph (PDAG) to a DAG
Extend a Partially Directed Acyclic Graph (PDAG) to a DAG
This function extends a PDAG (Partially Directed Acyclic Graph) to a DAG, if this is possible.
pdag2dag(g, keepVstruct=TRUE)
Arguments
g: Input PDAG (graph object)
keepVstruct: Logical indicating if the v-structures in g are kept. Otherwise they are ignored and an arbitrary extension is generated.
Details
Direct undirected edges without creating directed cycles or additional v-structures. The PDAG is consistently extended to a DAG using the algorithm by Dor and Tarsi (1992). If no extension is possible, a DAG corresponding to the skeleton of the PDAG is generated and a warning message is produced.
Returns
List with entries - graph: Contains a consistent DAG extension (graph object),
success: Is TRUE iff the extension was possible.
References
D.Dor, M.Tarsi (1992). A simple algorithm to construct a consistent extension of a partially oriented graph. Technicial Report R-185, Cognitive Systems Laboratory, UCLA
p <-10# number of random variablesn <-10000# number of sampless <-0.4# sparsness of the graph## generate random dataset.seed(42)g <- randomDAG(p, prob = s)# generate a random DAGd <- rmvDAG(n,g)# generate random samplesgSkel <- pcAlgo(d,alpha=0.05)# estimate of the skeleton(gPDAG <- udag2pdag(gSkel))(gDAG <- pdag2dag(gPDAG@graph))