# NOT RUN {
example("grain")
uni <- list(asia = c("yes", "no"), tub = c("yes", "no"),
smoke = c("yes", "no"), lung = c("yes", "no"),
bronc = c("yes", "no"), either = c("yes", "no"),
xray = c("yes", "no"), dysp = c("yes", "no"))
ev <- list(tab("asia", levels=uni, values=c(1,0)),
tab("dysp", levels=uni, values=c(1,0)),
tab(c("dysp","bronc"), levels=uni, values=c(.1, .2, .9, .8)) )
bn2 <- setJEvi(bn, evidence=ev)
bn2
## Notice: The evidence is defined on (subsets of) cliques of the junction tree
# and therefore evidence can readily be absorbed:
getgrain(bn, "rip")$cliques %>% str
## On the other hand, below evidence is not defined cliques of the
# junction tree and therefore evidence can not easily be absorbed.
# Hence this will fail:
# }
# NOT RUN {
ev.fail <- list(tab(c("dysp","smoke"), levels=uni, values=c(.1, .2, .9, .8)) )
setJEvi(bn, evidence=ev.fail)
# }
# NOT RUN {
## Evidence can be removed with
retractJEvi(bn2) ## All evidence removed.
retractJEvi(bn2, 0) ## No evidence removed.
retractJEvi(bn2, 1:2) ## Evidence items 1 and 2 are removed.
## Setting additional joint evidence to an object where joint
# evidence already is set will cause an error. Hence this will fail:
# }
# NOT RUN {
ev2 <- list(smoke="yes")
setJEvi(bn2, evidence=ev2)
# }
# NOT RUN {
## Instead we can do
new.ev <- c( getEvidence(bn2), list(smoke="yes") )
setJEvi( bn, evidence=new.ev )
## Create joint evidence object:
db <- parray(c("dysp","bronc"), list(yn,yn), values=c(.1,.2,.9,.8))
db
ev <- list(asia=c(1,0), dysp="yes", db)
uni <- list(asia = c("yes", "no"), tub = c("yes", "no"),
smoke = c("yes", "no"), lung = c("yes", "no"),
bronc = c("yes", "no"), either = c("yes", "no"),
xray = c("yes", "no"), dysp = c("yes", "no"))
jevi <- new_jev( ev, levels=uni )
jevi
bn3 <- setJEvi( bn, evidence=jevi)
evidence( bn3 )
# }
Run the code above in your browser using DataLab