Last chance! 50% off unlimited learning
Sale ends in
Creating grain objects (graphical independence network).
grain(x, control = list(), smooth = 0, details = 0, data = NULL, ...)# S3 method for cpt_spec
grain(x, control = list(), smooth = 0, details = 0, ...)
# S3 method for pot_spec
grain(x, control = list(), smooth = 0, details = 0, ...)
# S3 method for pot_rep
grain(x, ...)
# S3 method for cpt_rep
grain(x, ...)
# S3 method for graphNEL
grain(x, control = list(), smooth = 0, details = 0, data = NULL, ...)
# S3 method for dModel
grain(x, control = list(), smooth = 0, details = 0, data = NULL, ...)
An argument to build an independence network from. Typically a list of conditional probability tables, a DAG or an undirected graph. In the two latter cases, data must also be provided.
A list defining controls, see 'details' below.
A (usually small) number to add to the counts of a table if the grain is built from a graph plus a dataset.
Debugging information.
An optional data set (currently must be an array/table)
Additional arguments, currently not used.
An object of class "grain"
If 'smooth' is non-zero then entries of 'values' which a zero are replaced by the value of 'smooth' - BEFORE any normalization takes place.
S<U+00F8>ren H<U+00F8>jsgaard (2012). Graphical Independence Networks with the gRain Package for R. Journal of Statistical Software, 46(10), 1-26. http://www.jstatsoft.org/v46/i10/.
cptable
, compile.grain
,
propagate.grain
, setFinding
,
setEvidence
, getFinding
,
pFinding
, retractFinding
# NOT RUN {
## Asia (chest clinic) example:
yn <- c("yes","no")
a <- cptable(~asia, values=c(1,99), levels=yn)
t.a <- cptable(~tub+asia, values=c(5,95,1,99), levels=yn)
s <- cptable(~smoke, values=c(5,5), levels=yn)
l.s <- cptable(~lung+smoke, values=c(1,9,1,99), levels=yn)
b.s <- cptable(~bronc+smoke, values=c(6,4,3,7), levels=yn)
e.lt <- cptable(~either+lung+tub, values=c(1,0,1,0,1,0,0,1), levels=yn)
x.e <- cptable(~xray+either, values=c(98,2,5,95), levels=yn)
d.be <- cptable(~dysp+bronc+either, values=c(9,1,7,3,8,2,1,9), levels=yn)
plist <- compileCPT(list(a, t.a, s, l.s, b.s, e.lt, x.e, d.be))
bn <- grain(plist)
bn
summary(bn)
plot(bn)
bnc <- compile(bn, propagate=TRUE)
## If we want to query the joint distribution of the disease nodes,
## computations can be speeded up by forcing these nodes to be in
## the same clique of the junction tree:
bnc2 <- compile(bn, root=c("lung", "bronc", "tub"), propagate=TRUE)
# }
# NOT RUN {
if (require(microbenchmark)){
microbenchmark(
querygrain(bnc, nodes=c("lung","bronc", "tub"), type="joint"),
querygrain(bnc2, nodes=c("lung","bronc", "tub"), type="joint")
)}
# }
# NOT RUN {
## Simple example - one clique only in triangulated graph:
plist.s <- compileCPT(list(a, t.a))
bn.s <- grain(plist.s)
querygrain(bn.s)
## Simple example - disconnected network:
plist.d <- compileCPT(list(a, t.a, s))
bn.d <- grain(plist.d)
querygrain(bn.d)
## Create network from data and graph specification.
## There are different ways:
data(HairEyeColor)
hec <- HairEyeColor
daG <- dag(~Hair + Eye:Hair + Sex:Hair)
class(daG)
uG <- ug( ~Eye:Hair + Sex:Hair)
class(uG)
## Create directly from dag:
bn.dag <- grain(daG, data=hec)
class(bn.dag)
compile(bn.dag)
## Build model from undirected (decomposable) graph
bn.ug <- grain(uG, data=hec)
class(bn.ug)
compile(bn.ug)
# }
Run the code above in your browser using DataLab