Ejemplo incorrecto, consulte el segundo ejemplo
Acabo de intentar modelar una red bayesiana compuesta por 3 variables de la siguiente manera
$A\sim N(0,1)$
$B\sim A + N(0,1)$
$T\sim A + B + N(0,1)$
En el DAG asociado a este experimento, $A$ representa un camino trasero de $B$ a $T$, por lo tanto, espero que, al condicionar en $A$, la dependencia entre $B$ y $T$ disminuya. Sin embargo, en el escenario simulado (código R a continuación) esto no parece suceder, ya que el valor p al probar $B\perp T|\emptyset$ es menor que el valor p de la prueba $B\perp T|A$.
¿Alguna idea de por qué sucede esto? ¿Podría ser porque la distribución de probabilidad de las variables no es fiel al DAG como se señala en la respuesta aquí?
library(bnlearn)
set.seed(120395)
A = rnorm(n = 100, mean = 0, sd = sqrt(1))
B = A + rnorm(n = 100, mean = 0, sd = sqrt(1))
T = A + B + rnorm(n = 100, mean = 0, sd = sqrt(1))
df <- data.frame(A, B, T)
t1 <- ci.test("B", "T", data = df, test = "cor")
t2 <- ci.test("B", "T", "A", data = df, test = "cor")
print(c(t1$p.value, t2$p.value))
Resultado:
6.70679e-37 1.66561e-20
Nuevo ejemplo corregido
Consideremos
$A\sim N(0,1)$
$B\sim A + N(0,1)$
$C\sim A + B + N(0,1)$
$D\sim A + B + C + N(0,1)$
$T\sim A + B + C + D + N(0,1)$
El DAG asociado a este experimento es el siguiente
Estudiemos la asociación entre $C$ y $T$. El criterio de d-separación nos dice que en esta BN, sin condicionar en ninguna variable, todos los caminos de $C$ a $T$ están abiertos y espero que, al cerrar algunos de ellos, la dependencia entre $C$ y $T$ disminuya. En este grafo particular, esperamos que la dependencia al condicionar en $\{A,D\}$ sea mayor que la obtenida al condicionar en $\{A,B,D\}$, ya que el último caso bloquea $T\leftarrow B \rightarrow C$ así como los caminos a través de $A$ y $D$. Poniendo esto en fórmulas, esperamos ver
$dep(C,T|\{A,D\}) > dep(C,T|\{A,B,D\})$
Al usar el valor p negativo como medida de dependencia (como se sugiere aquí), estas suposiciones se ven violadas, ya que el código R produce los siguientes resultados
$dep(C,T|\{A,D\}) = -pvalue_{C\perp T|\{A,D\}} = -1.78*10^{-09}$
$dep(C,T|\{A,B,D\}) = -pvalue_{C\perp T|\{A,B,D\}}= -1.52*10^{-11}$
por lo tanto
$dep(C,T|\{A,D\}) < dep(C,T|\{A,B,D\})$
¿Alguna idea de por qué sucede esto? ¿Podría ser que los valores p (y los valores p negativos también) no son adecuados para estudiar comparaciones de dependencias como la que hice?
Aquí está el código para este ejemplo
library(bnlearn)
set.seed(120395)
A = rnorm(n = 100, mean = 0, sd = sqrt(1))
B = A + rnorm(n = 100, mean = 0, sd = sqrt(1))
C = A + B + rnorm(n = 100, mean = 0, sd = sqrt(1))
D = A + B + C + rnorm(n = 100, mean = 0, sd = sqrt(1))
T = A + B + C + D + rnorm(n = 100, mean = 0, sd = sqrt(1))
df <- data.frame(A, B, C, D, T)
t1 <- ci.test("C", "T", data = df, test = "cor")
t2 <- ci.test("C", "T", "A", data = df, test = "cor")
t3 <- ci.test("C", "T", "B", data = df, test = "cor")
t4 <- ci.test("C", "T", "D", data = df, test = "cor")
t5 <- ci.test("C", "T", c("A","B"), data = df, test = "cor")
t6 <- ci.test("C", "T", c("A","D"), data = df, test = "cor")
t7 <- ci.test("C", "T", c("B","D"), data = df, test = "cor")
t8 <- ci.test("C", "T", c("A","B","D"), data = df, test = "cor")
print(c(t1$p.value, t2$p.value, t3$p.value, t4$p.value,
t5$p.value, t6$p.value, t7$p.value, t8$p.value))
Resultado:
[1] 5.008861e-67 2.379113e-42 2.425548e-32 6.708171e-09 2.204601e-25
[6] 1.783842e-09 1.329351e-09 1.521039e-11