# NOT RUN {
## Use a subset of a built-in simulated data set
mydat <- ex0.dag.data[,c("b1","b2","g1","g2","p1","p2")]
## Setup distribution list for each node
mydists <- list(b1="binomial", b2="binomial",
g1="gaussian", g2="gaussian",
p1="poisson", p2="poisson")
## Parent limits
max.par <- list("b1"=1, "b2"=1, "g1"=1, "g2"=0, "p1"=1, "p2"=2)
## Now build cache with structural constrains:
## now ban arc from b2 to b1
## always retain arc from g2 to g1
mycache <- buildscorecache(data.df=mydat, data.dists=mydists,
dag.banned= ~b1|b2, dag.retained= ~g1|g2, max.parents=max.par)
## Now find the globally best DAG
mp.dag <- mostprobable(score.cache=mycache)
## Get the corresponding best goodness-of-fit network score
fitabn(object = mp.dag)$mlik
##############################
## Second example
##############################
## this data comes with abn see ?ex1.dag.data
mydat <- ex1.dag.data
## setup distribution list for each node
mydists <- list(b1="binomial", p1="poisson", g1="gaussian", b2="binomial",
p2="poisson", b3="binomial", g2="gaussian", b4="binomial",
b5="binomial", g3="gaussian")
## assum no constraints in ban nor retain
## parent limits
max.par <- list("b1"=4,"p1"=4,"g1"=4,"b2"=4,"p2"=4,"b3"=4,"g2"=4,"b4"=4,"b5"=4,"g3"=4)
## now build cache
mycache <- buildscorecache(data.df = mydat, data.dists = mydists, max.parents = max.par)
## Find the globally best DAG
mp.dag <- mostprobable(score.cache=mycache)
fitabn(object=mp.dag)$mlik
## plot the best model
myres <- fitabn(object=mp.dag,create.graph=TRUE)
plotabn(dag.m = mp.dag$dag, data.dists = mydists)#, fitted.values.abn = myres)
## fit the known true DAG
true.dag <- matrix(data=0,ncol=10, nrow = 10)
colnames(true.dag) <- rownames(true.dag) <- names(mydists)
true.dag["p2",c("b1","p1")] <- 1
true.dag["b3",c("b1","g1","b2")] <- 1
true.dag["g2",c("p1","g1","b2")] <- 1
true.dag["b4",c("g1","p2")] <- 1
true.dag["b5",c("g1","g2")] <- 1
true.dag["g3",c("g1","b2")] <- 1
fitabn(dag.m = true.dag, data.df = mydat, data.dists=mydists)$mlik
#################################################################
## example 3 - models with random effects
#################################################################
## this data comes with abn see ?ex3.dag.data
mydat <- ex3.dag.data[,c(1:4,14)]
mydists <- list(b1="binomial", b2="binomial", b3="binomial",
b4="binomial")
## This takes a few seconds
mycache.mixed <- buildscorecache(data.df = mydat, data.dists = mydists,
group.var = "group", cor.vars = c("b1","b2","b3","b4"),
max.parents=2, which.nodes=c(1:4))
## find the most probable DAG
mp.dag <- mostprobable(score.cache=mycache.mixed)
## get goodness of fit
fitabn(object = mp.dag, data.df = mydat, data.dists = mydists,
group.var = "group", cor.vars = c("b1","b2","b3","b4"))$mlik
# }
Run the code above in your browser using DataLab