Карта причинно-следственных связей меняется при изменении порядка переменных
Я использую bnlearn
а также pcalg
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)
Выше код дает мне следующий вывод:
Теперь я запускаю один и тот же код с другим порядком данных.
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)
Как можно видеть, стрелки изменили направление для v6 и v7. Я что-то здесь упускаю? Примечание: я знаю, что скелет не изменился (график без стрелок).
1 ответ
Я нашел ответ. Карта причинно-следственных связей можно сделать полностью независимой от заказа, установив conservative
или же maj.rule
в TRUE
с 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)