dag2pag {pcalg} | R Documentation |
Convert a DAG with latent variables into a PAG
Description
Convert a DAG with latent variables into its corresponding (unique) Partial Ancestral Graph (PAG).
Usage
dag2pag(suffStat, indepTest, graph, L, alpha, rules = rep(TRUE,10),
verbose = FALSE)
Arguments
suffStat |
the sufficient statistics, a |
indepTest |
a |
graph |
a DAG with |
L |
array containing the labels of the nodes in the |
alpha |
significance level in |
rules |
logical vector of length 10 indicating which rules should be used when directing edges. The order of the rules is taken from Zhang (2009). |
verbose |
logical; if |
Details
This function converts a DAG (graph object) with latent variables into
its corresponding (unique) PAG, an fciAlgo
class
object, using the ancestor information and conditional independence
tests entailed in the true DAG. The output of this function is
exactly the same as the one using
fci(suffStat, gaussCItest, p, alpha, rules = rep(TRUE, 10))
using the true correlation matrix in gaussCItest()
with a large
“virtual sample size” and a large alpha, but it is much faster,
see the example.
Value
An object of class
fciAlgo
,
containing the estimated graph (in the form of an adjacency matrix
with various possible edge marks), the conditioning sets that lead to
edge removals (sepset) and several other parameters.
Author(s)
Diego Colombo and Markus Kalisch kalisch@stat.math.ethz.ch.
References
Richardson, T. and Spirtes, P. (2002). Ancestral graph Markov models. Ann. Statist. 30, 962–1030; Theorem 4.2., page 983.
See Also
Examples
## create the graph
set.seed(78)
g <- randomDAG(10, prob = 0.25)
graph::nodes(g) # "1" "2" ... "10" % FIXME: should be kept in result!
## define nodes 2 and 6 to be latent variables
L <- c(2,6)
## compute the true covariance matrix of g
cov.mat <- trueCov(g)
## transform covariance matrix into a correlation matrix
true.corr <- cov2cor(cov.mat)
## Find PAG
## as dependence "oracle", we use the true correlation matrix in
## gaussCItest() with a large "virtual sample size" and a large alpha:
system.time(
true.pag <- dag2pag(suffStat = list(C = true.corr, n = 10^9),
indepTest = gaussCItest,
graph=g, L=L, alpha = 0.9999) )
### ---- Find PAG using fci-function --------------------------
## From trueCov(g), delete rows and columns belonging to latent variable L
true.cov1 <- cov.mat[-L,-L]
## transform covariance matrix into a correlation matrix
true.corr1 <- cov2cor(true.cov1)
## Find PAG with FCI algorithm
## as dependence "oracle", we use the true correlation matrix in
## gaussCItest() with a large "virtual sample size" and a large alpha:
system.time(
true.pag1 <- fci(suffStat = list(C = true.corr1, n = 10^9),
indepTest = gaussCItest,
p = ncol(true.corr1), alpha = 0.9999) )
## confirm that the outputs are equal
stopifnot(true.pag@amat == true.pag1@amat)