变量顺序更改时因果关系图更改

时间:2019-02-12 11:18:02

标签: r bayesian-networks bnlearn causality

我正在使用bnlearnpcalg R包从数据集中获取因果关系图。有一种与顺序无关的算法,该算法声称与变量无关,作为输入给出。当我更改变量的顺序时,箭头的方向也在改变。下面是我正在使用的代码:

data("gmG")
set.seed(101)
cols = sample(ncol(gmG8$x))
suffStat <- list(C = cor(gmG8$x[,cols]), n = nrow(gmG8$x))
pc.gmG <- pc(suffStat, indepTest = gaussCItest,
               labels = colnames(gmG8$x)[cols], alpha = 0.01)
plot(pc.gmG)

以上代码为我提供了以下输出:

enter image description here

现在,我以不同的数据顺序运行相同的代码。

data("gmG")
set.seed(102)
cols = sample(ncol(gmG8$x))
suffStat <- list(C = cor(gmG8$x[,cols]), n = nrow(gmG8$x))
pc.gmG <- pc(suffStat, indepTest = gaussCItest,
               labels = colnames(gmG8$x)[cols], alpha = 0.01)
plot(pc.gmG)

enter image description here

正如人们所看到的,箭头已经改变了v6和v7的方向。 我在这里想念什么吗? 注意:我知道骨架没有改变(图形没有箭头)。

1 个答案:

答案 0 :(得分:0)

我找到了答案。 通过使用conservativemaj.ruleTRUE设置为solve.confl = TRUE,可以使因果关系图完全与顺序无关。

pc.gmG <- pc(suffStat, indepTest = gaussCItest,skel.method = 'stable',
                  conservative = TRUE,solve.confl = TRUE,
               labels = colnames(gmG8$x)[cols], alpha = 0.01)