Карта причинно-следственных связей меняется при изменении порядка переменных - PullRequest
0 голосов
/ 12 февраля 2019

Я использую пакеты 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)

Приведенный выше код дает мне следующий вывод:

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 голосов
/ 14 февраля 2019

Я нашел ответ.Карту причинно-следственных связей можно сделать полностью независимой от заказа, установив 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...