Description Usage Arguments Note Author(s) Examples
Setting and removing joint evidence in grain objects.
1 2 3 4 5 | setJEvidence(object, evidence = NULL, propagate = TRUE, details = 0)
retractJEvidence(object, items = NULL, propagate = TRUE, details = 0)
new_jev(ev, levels)
|
object |
A "grain" object. |
evidence |
A list of evidence. Each element is a named array. |
propagate |
Should evidence be absorbed once entered; defaults to TRUE. |
details |
Amount of printing; for debugging. |
items |
Items in the evidence list to be removed. Here,
|
ev |
A named list. |
levels |
A named list. |
All the joint evidence functionality should be used with great care.
Søren Højsgaard, sorenh@math.aau.dk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | data(chest_cpt)
chest.bn <- grain(compileCPT(chest_cpt))
chest.bn <- compile(chest.bn)
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)) )
chest.bn
chest.bn2 <- setJEvidence(chest.bn, evidence=ev)
chest.bn2
# Notice: The evidence is defined on (subsets of) cliques of the junction tree
# and therefore evidence can readily be absorbed:
getgrain(chest.bn, "rip")$cliques %>% str
# On the other hand, below is evidence which 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)) )
setJEvidence(chest.bn, evidence=ev.fail)
## End(Not run)
## Evidence can be removed with
retractJEvidence(chest.bn2) ## All evidence removed.
retractJEvidence(chest.bn2, 0) ## No evidence removed.
retractJEvidence(chest.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")
setJEvidence(chest.bn2, evidence=ev2)
## End(Not run)
## Instead we can do
new.ev <- c(getEvidence(chest.bn2), list(smoke="yes"))
chest.bn
setJEvidence(chest.bn, evidence=new.ev)
## Create joint evidence object:
yn <- c("yes", "no")
db <- parray(c("dysp", "bronc"), list(yn, yn), values=c(.1, .2, .9, .8))
db
ev <- list(asia=c(1, 0), dysp="yes", db)
jevi <- new_jev(ev, levels=uni)
jevi
chest.bn3 <- setJEvidence(chest.bn, evidence=jevi)
evidence(chest.bn3)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.