1

我是贝叶斯网络的新手。我正在尝试在 R 中使用 catnet 包,但是,我很难理解 cnProb() 函数的输出。例如,这是一个新的 catnetwork 对象:

cnet_test <- cnNew(
  nodes = c("a", "b", "c"),
  cats = list(c("1","2"), c("1","2"), c("1","2")),
  parents = list(NULL, c(1), c(1,2)))

这应该会导致这样的网络,对吧?我假设 parents = 参数在这里意味着节点 X 是...的父节点

在此处输入图像描述

但是,当对这个 catnet 对象执行 cnProb() 时,它会返回以下内容:

$a
   1    2 
0.19 0.81 
$b
  a 1     2    
A 1 0.396 0.604
B 2 0.611 0.389
$c
  a b 1     2    
A 1 1 0.519 0.481
B 1 2 0.878 0.122
A 2 1 0.666 0.334
B 2 2 0.89  0.11 

这似乎与网络图完全相反。根据文档,cnprob:

返回由 catNetwork 对象的哪个参数指定的节点的条件概率列表。节点概率以下列格式报告。首先,给出节点名称及其父节点,然后给出与父类别(放在括号中)和节点类别的所有组合相对应的概率值列表。例如,具有两个父节点的节点的条件概率,即节点及其父节点都具有三个类别,由 27 个值给出,每个值对应于 3 3 3 组合。

我想知道我们如何准确地解释 cnProb 的输出?还是我对cnNew的父母参数的解释错误。任何信息都会有所帮助。

4

1 回答 1

0

您对 cnNew() 中“父母”参数的解释不正确,并且您的图表与您实际定义的网络不对应。“parents = list(NULL, c(1), c(1,2))” 表示“1”是“2”的父级,“1 和 2”是“3”的父级。所以,网络是 {a->b; a->c,b->c}。

于 2022-02-21T17:40:20.807 回答