当变量的顺序改变时因果关系图改变

问题描述 投票:0回答:1

我正在使用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的方向。我在这里错过了什么吗?注意:我知道骨架没有变化(没有箭头的图形)。

r bayesian-networks bnlearn causality
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.