gies(p, targets, score, fixedGaps = NULL,
turning = TRUE, maxDegree = integer(0), verbose = FALSE, ...)
Score
.[i, j]
is TRUE
, the result is guaranteed to have no edge
between nodes $i$ and $j$.TRUE
, detailed output is provided.gies
returns a list with the following two components:EssGraph
containing an
estimate of the equivalence class of the underlying DAG.ParDAG
containing a (random) representative of the estimated equivalence class.targets
as a
list of (integer) vectors listing the intervened vertices; observational
data is specified by an empty set, i.e. a vector of the form
integer(0)
. As an example, if data contains observational samples
as well as samples originating from an intervention at vertices 1 and 4,
the intervention targets must be specified as list(integer(0),
as.integer(1), as.integer(c(1, 4)))
.
An interventional Markov equivalence class of DAGs can be uniquely
represented by a partially directed graph called interventional essential
graph. Its edges have the following interpretation:
score
) in the space of interventional
essential graphs in three phases, starting from the empty graph:
[object Object],[object Object],[object Object]
GIES cycles through these three phases until no augmentation of the score is
possible any more. GIES is an interventional extension of the GES (greedy
equivalence search) algorithm of Chickering (2002) which is limited to
observational data and hence operates on the space of observational instead
of interventional Markov equivalence classes.ges
, Score
, EssGraph
## Load predefined data
data(gmInt)
## Define the score (BIC)
score <- new("GaussL0penIntScore", gmInt$x, gmInt$targets, gmInt$target.index)
## Estimate the essential graph
gies.fit <- gies(ncol(gmInt$x), gmInt$targets, score)
## Plot the estimated essential graph and the true DAG
if (require(Rgraphviz)) {
par(mfrow=c(1,2))
plot(gies.fit$essgraph, main = "Estimated ess. graph")
plot(gmInt$g, main = "True DAG")
}
Run the code above in your browser using DataLab