getParents {CompareCausalNetworks}  R Documentation 
Estimate the connectivity matrix of a causal graph
Description
Estimates the connectivity matrix of a directed causal graph, using various possible methods. Supported methods at the moment are ARGES, backShift, bivariateANM, bivariateCAM, CAM, FCI, FCI+, GES, GIES, hiddenICP, ICP, LINGAM, MMHC, rankARGES, rankFci, rankGES, rankGIES, rankPC, regression, RFCI and PC.
Usage
getParents(
X,
environment = NULL,
interventions = NULL,
parentsOf = 1:ncol(X),
method = c("arges", "backShift", "bivariateANM", "bivariateCAM", "CAM", "fci",
"fciplus", "ges", "gies", "hiddenICP", "ICP", "LINGAM", "mmhc", "rankArges",
"rankFci", "rankGes", "rankGies", "rankPc", "rfci", "pc", "regression")[12],
alpha = 0.1,
mode = c("raw", "parental", "ancestral")[1],
variableSelMat = NULL,
excludeTargetInterventions = TRUE,
onlyObservationalData = FALSE,
indexObservationalData = 1,
returnAsList = FALSE,
sparse = FALSE,
directed = FALSE,
pointConf = FALSE,
setOptions = list(),
assumeNoSelectionVars = TRUE,
verbose = FALSE,
...
)
Arguments
X 
A 
environment 
An optional vector of length 
interventions 
A optional list of length 
parentsOf 
The variables for which we would like to estimate the
parents. Default are all variables. Currently only used with 
method 
A string that specfies the method to use. The methods

alpha 
The level at which tests are done. This leads to confidence
intervals for 
mode 
Determines output type  can be "raw" or one of the queries "isParent",
"isMaybeParent", "isNoParent", "isAncestor","isMaybeAncestor", "isNoAncestor".
If "raw", 
variableSelMat 
An optional logical matrix of dimension 
excludeTargetInterventions 
When looking for parents of variable 
onlyObservationalData 
If set to 
indexObservationalData 
Index in 
returnAsList 
If set to 
sparse 
If set to 
directed 
If 
pointConf 
If 
setOptions 
A list that can take methodspecific options; see the individual documentations of the methods for more options and their possible values. 
assumeNoSelectionVars 
Set to 
verbose 
If 
... 
Parameters to be passed to underlying method's function. 
Value
If option returnAsList
is FALSE
, a sparse matrix,
where a 0 entry in position (j,k) corresponds to an estimate of "no edge"
j
> k
, while an entry 1 corresponds to an
estimated egde. If option pointConf
is TRUE
, the 1 entries
will be replaced by numerical values that are either point estimates of the
causal coefficients or confidence bounds (see above).
If option returnAsList
is TRUE
, a list will be returned.
The kth entry in the list is the numeric vector with the indices of the
estimated parents of node k
.
Author(s)
Christina HeinzeDeml heinzedeml@stat.math.ethz.ch, Nicolai Meinshausen meinshausen@stat.math.ethz.ch
References
Naftali Harris and Mathias Drton: PC Algorithm for Nonparanormal Graphical Models. J. Mach. Learn. Res. 14(1) 2013.
See Also
getParentsStable
for stability selectionbased
estimation of the causal graph.
Examples
## load the backShift package for data generation and plotting functionality
if(require(backShift) & require(pcalg)){
# Simulate data with connectivity matrix A with assumptions
# 1) hidden variables present
# 2) precise location of interventions is assumed unknown
# 3) different environments can be distinguished
## simulate data
myseed < 1
# sample size n
n < 10000
# p=3 predictor variables and connectivity matrix A
p < 3
labels < c("1", "2", "3")
A < diag(p)*0
A[1,2] < 0.8
A[2,3] < 0.8
A[3,1] < 0.4
# divide data in 10 different environments
G < 10
# simulate
simResult < backShift::simulateInterventions(n, p, A, G, intervMultiplier = 3,
noiseMult = 1, nonGauss = TRUE, hiddenVars = TRUE,
knownInterventions = FALSE, fracVarInt = NULL, simulateObs = TRUE,
seed = myseed)
X < simResult$X
environment < simResult$environment
## apply all methods given in vector 'methods'
## (using all data pooled for pc/LINGAM/rfci/ges  can be changed with option
## 'onlyObservationalData=TRUE')
methods < c("backShift", "LINGAM") #c("pc", "rfci", "ges")
# select whether you want to run stability selection
stability < FALSE
# arrange graphical output into a rectangular grid
sq < ceiling(sqrt(length(methods)+1))
par(mfrow=c(ceiling((length(methods)+1)/sq),sq))
## plot and print true graph
cat("\n true graph is  \n" )
print(A)
plotGraphEdgeAttr(A, plotStabSelec = FALSE, labels = labels, thres.point = 0,
main = "TRUE GRAPH")
## loop over all methods and compute and print/plot estimate
for (method in methods){
cat("\n result for method", method,"  \n" )
if(!stability){
# Option 1): use this estimator as a point estimate
Ahat < getParents(X, environment, method=method, alpha=0.1, pointConf = TRUE)
}else{
# Option 2): use a stability selection based estimator
# with expected number of false positives bounded by EV=2
Ahat < getParentsStable(X, environment, EV=2, method=method, alpha=0.1)
}
# print and plot estimate (point estimate thresholded if numerical estimates
# are returned)
print(Ahat)
if(!stability)
plotGraphEdgeAttr(Ahat, plotStabSelec = FALSE, labels = labels,
thres.point = 0.05,
main=paste("POINT ESTIMATE FOR METHOD\n", toupper(method)))
else
plotGraphEdgeAttr(Ahat, plotStabSelec = TRUE, labels = labels,
thres.point = 0, main = paste("STABILITY SELECTION
ESTIMATE\n FOR METHOD", toupper(method)))
}
}else{
cat("\nThe packages 'backShift' and 'pcalg' are needed for the examples to
work. Please install them.")
}