R bnlearn Grow-Shrink结构学习返回无向图

时间:2014-02-05 23:55:39

标签: r

Nagarajan等人。本书( Bayesian Networks in R ,O' Reilly 2013,p.35)说当我获取R bnlearn包的标记数据集并要求使用grow-shrink实现来学习结构时写

library(bnlearn)
data(marks)
bn.gs = gs(marks)

然后我应该获得有向图:

model: [STAT][ANL|STAT][ALG|ANL:STAT][VECT|ALG] [MECH|VECT:ALG]
nodes: 5
arcs: 6
undirected arcs: 0
directed arcs: 6

而不是我得到一个无向图:

model: [undirected graph]
nodes: 5 
arcs: 6 
undirected arcs: 6 
directed arcs: 0 

即使我将选项undirected = FALSE添加到gs方法,我仍然得到相同的结果。 我究竟做错了什么?或者R实现中是否存在错误?我在我的Mac和Debian机器上都尝试过,结果是一样的......

2 个答案:

答案 0 :(得分:6)

答案由作者在他们的网站上提供(我刚刚发现):http://www.bnlearn.com/book-useR/

“第35页:bnlearn 3.2及更高版本在设置弧形方向时更加挑剔;因此,bn.gs是一个无向图,必须使用cextend()扩展到DAG以结束示例。“

换句话说,用

替换最后一行代码
bn.gs = cextend(gs(marks))

很可惜斯普林格没有为勘误提供标准服务,例如O'Reilly。本书的作者必须创建自己的网站,花了一些时间才找到它......

答案 1 :(得分:0)

这不是错误。方向测试的p值对于两个方向都是相同的,因此返回了无向边。也就是说,使用cextend()是我的工作,