amatType {pcalg} | R Documentation |
Types and Display of Adjacency Matrices in Package 'pcalg'
Description
Two types of adjacency matrices are used in package pcalg: Type
amat.cpdag
for DAGs and CPDAGs and type amat.pag
for
MAGs and PAGs. The required type of adjacency matrix is documented
in the help files of the respective functions or classes. If in some
functions more detailed information on the graph type is needed
(i.e. DAG or CPDAG; MAG or PAG) this information will be passed in a
separate argument (see e.g. gac
and the examples below).
Note that you get (‘extract’) such adjacency matrices as (S3)
objects of class
"amat"
via the usual
as(., "<class>")
coercion,
as(from, "amat")
Arguments
from |
an R object of class class class |
Details
Adjacency matrices are integer valued square matrices with zeros on the diagonal. They can have row- and columnnames; however, most functions will work on the (integer) column positions in the adjacency matrix.
Coding for type amat.cpdag
:
0
:No edge or tail
1
:Arrowhead
Note that the edgemark-code refers to the row index (as opposed adjacency matrices of type mag or pag). E.g.:
amat[a,b] = 0 and amat[b,a] = 1 implies a --> b. amat[a,b] = 1 and amat[b,a] = 0 implies a <-- b. amat[a,b] = 0 and amat[b,a] = 0 implies a b. amat[a,b] = 1 and amat[b,a] = 1 implies a --- b.
Coding for type amat.pag
:
0
:No edge
1
:Circle
2
:Arrowhead
3
:Tail
Note that the edgemark-code refers to the column index (as opposed adjacency matrices of type dag or cpdag). E.g.:
amat[a,b] = 2 and amat[b,a] = 3 implies a --> b. amat[a,b] = 3 and amat[b,a] = 2 implies a <-- b. amat[a,b] = 2 and amat[b,a] = 2 implies a <-> b. amat[a,b] = 1 and amat[b,a] = 3 implies a --o b. amat[a,b] = 0 and amat[b,a] = 0 implies a b.
See Also
E.g. gac
for a function which takes an
adjacency matrix as input; fciAlgo
for a class
which has an adjacency matrix in one slot.
getGraph(x)
extracts the graph
object from x
, whereas as(*, "amat")
gets the
corresponding adjacency matrix.
Examples
##################################################
## Function gac() takes an adjecency matrix of
## any kind as input. In addition to that, the
## precise type of graph (DAG/CPDAG/MAG/PAG) needs
## to be passed as a different argument
##################################################
## Adjacency matrix of type 'amat.cpdag'
m1 <- matrix(c(0,1,0,1,0,0, 0,0,1,0,1,0, 0,0,0,0,0,1,
0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0), 6,6)
## more detailed information on the graph type needed by gac()
gac(m1, x=1,y=3, z=NULL, type = "dag")
## Adjacency matrix of type 'amat.cpdag'
m2 <- matrix(c(0,1,1,0,0,0, 1,0,1,1,1,0, 0,0,0,0,0,1,
0,1,1,0,1,1, 0,1,0,1,0,1, 0,0,0,0,0,0), 6,6)
## more detailed information on the graph type needed by gac()
gac(m2, x=3, y=6, z=c(2,4), type = "cpdag")
## Adjacency matrix of type 'amat.pag'
m3 <- matrix(c(0,2,0,0, 3,0,3,3, 0,2,0,3, 0,2,2,0), 4,4)
## more detailed information on the graph type needed by gac()
mg3 <- gac(m3, x=2, y=4, z=NULL, type = "mag")
pg3 <- gac(m3, x=2, y=4, z=NULL, type = "pag")
############################################################
## as(*, "amat") returns an adjacency matrix incl. its type
############################################################
## Load predefined data
data(gmG)
n <- nrow (gmG8$x)
V <- colnames(gmG8$x)
## define sufficient statistics
suffStat <- list(C = cor(gmG8$x), n = n)
## estimate CPDAG
skel.fit <- skeleton(suffStat, indepTest = gaussCItest,
alpha = 0.01, labels = V)
## Extract the "amat" [and show nicely via 'print()' method]:
as(skel.fit, "amat")
##################################################
## Function fci() returns an adjacency matrix
## of type amat.pag as one slot.
##################################################
set.seed(42)
p <- 7
## generate and draw random DAG :
myDAG <- randomDAG(p, prob = 0.4)
## find skeleton and PAG using the FCI algorithm
suffStat <- list(C = cov2cor(trueCov(myDAG)), n = 10^9)
res <- fci(suffStat, indepTest=gaussCItest,
alpha = 0.9999, p=p, doPdsep = FALSE)
str(res)
## get the a(djacency) mat(rix) and nicely print() it:
as(res, "amat")
##################################################
## pcAlgo object
##################################################
## Load predefined data
data(gmG)
n <- nrow (gmG8$x)
V <- colnames(gmG8$x)
## define sufficient statistics
suffStat <- list(C = cor(gmG8$x), n = n)
## estimate CPDAG
skel.fit <- skeleton(suffStat, indepTest = gaussCItest,
alpha = 0.01, labels = V)
## Extract Adjacency Matrix - and print (via method 'print.amat'):
as(skel.fit, "amat")
pc.fit <- pc(suffStat, indepTest = gaussCItest,
alpha = 0.01, labels = V)
pc.fit # (using its own print() method 'print.pcAlgo')
as(pc.fit, "amat")