R bnlearn结构学习无向弧:cextend,pdag2dag

时间:2018-06-07 14:53:45

标签: r graph-theory bnlearn

我面临的问题是在bnlearn中使用结构学习算法bnlearn::iambbnlearn::pc.stable,我会收到部分无向图(pdag)。我的代码bn.fit中的后续操作需要有向非循环图(dag),因此我运行的程序崩溃。

我已经找到了类似的问题(例如here),在那里我了解到如果评分中存在“平局”,则返回pdag,因为不能做出关于指示弧的决定。在包裹作者的书errata(p.35)中也提到了这个问题。

我尝试了不同的方法来解决问题。使用作者的推荐cextend,我得到:

Error in cextend(x = bnlearn::iamb(x = structure_data)) : 
  no consistent extension of bnlearn::iamb(x = structure_data) is possible.
In addition: There were 29 warnings (use warnings() to see them)

由于我也有关于变量的因果/时间序列的指示,我尝试将bnlearn's pdag2dag传递给ordering参数。我明白了:

Error in pdag2dag.backend(x$arcs, ordering) : 
  this complete orientation of the graph is not acyclic.

我猜这是同样的问题。我不知道我是否能够以某种方式提出“更好”的排序,但是手动定义排序似乎很难。另外,如果我的排序导致不一致/循环图,那么是否应该找到一种方法来找到“最佳排序”而不是导致一个矛盾的图形?

有没有办法强制创造一个dag?如果没有,你通常如何处理这个问题?

不幸的是,我无法提出一个正在运行的示例,因为我的数据是私有的,我无法在标准R数据集上重现错误。

我希望有人可以提供帮助。

0 个答案:

没有答案