R bnlearn无向弧

时间:2016-07-01 17:14:10

标签: r

我使用bnlearn:hc使用以下步骤构建了一个图形:

  1. bootstrap使用hc算法500 bns
  2. 计算最佳门槛
  3. 提取具有阈值的最佳弧> “最佳阈值计算”和方向> 0.5
  4. 因此,如果我尝试使用1 bn进行自举,为了在小测试中更快,有时我会有一些无向弧。

    在bnlearn中我怎么知道来自bn对象(学习结构)的无向弧是什么并将其删除?这将是最好的解决方案吗?

    韩国社交协会

2 个答案:

答案 0 :(得分:0)

要查看哪些弧是无向的,您可以绘制网络。使用plot(network)或者,如果您拥有Rgraphviz包,则可以使用graphviz.plot(network)

答案 1 :(得分:0)

当有许多节点时,很难在图表中挑选出无向弧。在这种情况下,您可以使用undirected.arcs()来查找它们。

用法如下:

boot = boot.strength(data = df, R=500, algorithm = 'hc', 
                     algorithm.args = list(score = 'bde'))
boot.avg = averaged.network(boot)
undirected.arcs(boot.avg)

您可以检查每个弧形方向的分数,以确保其不大于另一个:

score(set.arc(boot.avg, from="A", to="B", df)
score(set.arc(boot.avg, from="B", to="A", df)

最后你会想要设定这样的方向:

boot.avg = set.arc(boot.avg, from="A", to="B")

如果你想完全删除弧线,可以使用:

boot.avg = drop.arc(boot.avg, from="A", to="B")