## generate a random DAG:
p <- 8
set.seed(46)
myDAG <- randomDAG(p, prob = 0.3)
## plot the DAG
plot(myDAG, main = "randomDAG(10, prob = 0.2)")
##################################################
## Using Gaussian Data
##################################################
## generate 10000 samples from the DAG using Gaussian errors
n <- 10000
d.mat <- rmvDAG(n, myDAG, errDist = "normal")
## define independence test (partial correlations)
indepTest <- gaussCItest
## define sufficient statistics
suffStat <- list(C = cor(d.mat), n = n)
## estimate skeleton
alpha <- 0.01
skel.fit <- skeleton(suffStat, indepTest, p, alpha)
## show estimated skeleton
plot(skel.fit, main = "Estimated Skeleton")
x11(); plot(myDAG)
##################################################
## Using d-separation oracle
##################################################
## define independence test
indepTest <- dsepTest
## define sufficient statistics (d-separation oracle)
suffStat <- list(g = myDAG, jp = johnson.all.pairs.sp(myDAG))
## estimate skeleton
alpha <- 0.01 ## value is irrelevant as dsepTest returns either 0 or 1
skel.fit <- skeleton(suffStat, indepTest, p, alpha)
## show estimated skeleton
plot(skel.fit, main = "Estimated Skeleton")
##################################################
## Using discrete data
##################################################
data(discreteData)
p <- ncol(dat)
## define independence test (G^2 statistics)
indepTest <- disCItest
## define sufficient statistics
suffStat <- list(dm = dat, nlev = c(3,2,3,4,2), adaptDF = FALSE)
## estimate skeleton
alpha <- 0.01
skel.fit <- skeleton(suffStat, indepTest, p, alpha, verbose = TRUE)
## show estimated skeleton
plot(skel.fit, main = "Estimated Skeleton")
rm(dat)
##################################################
## Using binary data
##################################################
data(binaryData)
p <- ncol(dat)
## define independence test
indepTest <- binCItest
## define sufficient statistics
suffStat <- list(dm = dat, adaptDF = FALSE)
## estimate skeleton
alpha <- 0.01
skel.fit <- skeleton(suffStat, indepTest, p, alpha, verbose = TRUE)
## show estimated skeleton
plot(skel.fit, main = "Estimated Skeleton")
rm(dat)
Run the code above in your browser using DataLab