在R中,对于使用bnlearn的贝叶斯网络,计算出的概率是否必须传递到下一个节点?

时间:2019-02-27 10:51:38

标签: r bayesian bayesian-networks bnlearn

我正在尝试定义我的询问。也许我的话是错的。抱歉造成任何误会。

cptD中的四个概率是指根据“ C”事件对“ D”事件的预测。例如“ C”事件:“ TRUE”,“ FALSE”和“ D”可能的事件:“ y”,“ n”。因此,它是具有给定概率的2x2表。我的问题是:

  • 先前的知识:如何将来自“ A”和“ B”事件的“ C”可能事件的预测传递到“ D”节点?

  • 因为如果我理解正确,C是由A和B预测的,而D是由C预测的。 但是,在“ C”节点中再次定义了概率。

  • 我们可以在C-D交互中传递计算出的概率吗?怎么样 ? 请提供清晰的R示例,因为我很困惑。 请用简单的词描述节点“ D”的概率。

  • 网络是由专家知识定义的。我们能否定义A事件,B事件,仅C事件,仅D事件的概率, 然后C(与A,B)和D(与C)事件交互的概率从一个节点传递到另一个节点?

  • 事件和交互的概率都必须独立于先前的节点事件计算吗?

  • 那么,如果A和B节点中的概率发生变化,这将不会影响D节点中的概率?如果是,怎么办?如果没有,为什么?如果同时出现,怎么办?

这里是示例:

library(bnlearn)

net = model2network("[A][B][C|A:B][D|C]")

cptA = matrix(c(0.4, 0.6), ncol = 2, dimnames = list(NULL, c("LOW", "HIGH")))
cptB = matrix(c(0.8, 0.2), ncol = 2, dimnames = list(NULL, c("GOOD", "BAD")))
cptC =  array(c(0.5, 0.5, 0.4, 0.6, 0.3, 0.7, 0.2, 0.8), dim = c(2, 2, 2), dimnames = list("C" = c("TRUE", "FALSE"), "A" =  c("LOW", "HIGH"),"B" = c("GOOD", "BAD")) )

cptD = matrix( c(0.4, 0.6, 0.2, 0.8), ncol = 2, dimnames =  list("D" = c("y", "n"), "C" =  c("TRUE", "FALSE") ) )

cfit = custom.fit( net, dist = list( A = cptA, B = cptB, C = cptC, D=cptD ) )

graphviz.chart( cfit )

enter image description here

0 个答案:

没有答案