-
Notifications
You must be signed in to change notification settings - Fork 8
/
02-redes_bayesianas.Rmd
2541 lines (1985 loc) · 89.6 KB
/
02-redes_bayesianas.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Redes bayesianas
Los paquetes que usaremos en esta sección son:
* CRAN: @R-tidyverse (dplyr, ggplot2, purrr), @R-bnlearn, @R-igraph, @R-gRain.
```
install.packages(c("tidyverse", "bnlearn", "igraph, "gRain", "BiocManager"))
```
* Bioconductor: @R-Rgraphviz, @R-RBGL:
```
install.packages("BiocManager")
BiocManager::install("Rgraphviz")
```
Y las referencias bibliográficas son @koller, @ross y @wasserman.
## Gráficas dirigidas
Una gráfica dirigida ${\mathcal G}$ es un conjunto de vértices junto con
un subconjunto de aristas dirigidas (pares ordenados de vértices).
En nuestro caso, cada vértice corresponde a una variable aleatoria, y cada
arista dirigida representa una asociación probabilística entre las variables
(vértices) que conecta. Nos interesan en particular las **gráficas dirigidas
acíclicas** (GADs), estas son aquellas que no tienen caminos dirigidos partiendo
de un vértice y regresando al mismo (ciclos).
**Ejemplo.**
```{r, fig.height=4, fig.width = 5, warning=FALSE}
library(igraph, warn.conflicts = FALSE)
library(bnlearn)
gr <- graph(c(1, 2, 3, 2, 3, 4))
plot(gr,
vertex.label = c('Dieta', 'Enf. corazón', 'Fuma', 'Tos'),
layout = matrix(c(0, 0.5, 2, 0, 4, 0.5, 6, 0), byrow = TRUE, ncol = 2),
vertex.size = 23, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
Nos interesan estas gráficas por lo que pueden representar acerca de la
estructura de la distribución conjunta de las variables. Recordemos que
la distribución conjunta es el modelo completo del fenómeno, a partir de la cual
podemos contestar cualquier pregunta de inferencia, asociación, independencia,
etc.
En las siguientes secciones explicaremos dos enfoques para
interpretar una gráfica dirigida probabilísticamente (en términos de la
distribución conjunta).
* Por una parte la gráfica define un esqueleto que sirve para
representar de manera compacta una distribución de dimensión alta, esto es:
En lugar de codificar la probabilidad de todos los posibles valores de las
variables en nuestro dominio, podemos separar la distribución en factores
más chicos, cada uno sobre un conjunto de posibilidades mucho más chico. Una
vez que definimos los factores podemos definir la distribución conjunta como
el producto de los factores.
* La segunda perspectiva es que la gráfica es una representación compacta
de un conjunto de independencias que se sostienen en la distribución (la
distribución que codifica nuestras creencias de una situación particular).
### Probabilidad conjunta y factorizaciones
<div class="caja">
Siempre es posible representar a una distribución conjunta como un
producto de condicionales de una sola variable. Dado un ordenamiento
$X_1,X_2,\ldots, X_k$, podemos escribir (por la regla del producto)
$$p(x_1,\ldots, x_k)=p(x_1)p(x_2|x_1)p(x_3|x_1,x_2)\cdots p(x_k|x_1,\ldots, x_{k-1}).$$
</div>
<br/>
Por ejemplo, si tenemos tres variables $X_1,X_2,X_3$ podemos usar la regla del
producto para obtener
$$p(x_1,x_2,x_3)= p(x_1)p(x_2|x_1)p(x_3|x_1,x_2),$$
también podemos ordenar las variables de manera distinta y escribir:
$$p(x_1,x_2,x_3)= p(x_3)p(x_1|x_3)p(x_2|x_1,x_3).$$
Estas son representaciones válidas para la conjunta de $X_1,X_2,X_3$.
Para modelar $X_1,X_2,X_3$ podríamos entonces estimar primero la marginal
de $X_3$, después entender la condicional de $X_1$ dada $X_3$ y finalmente
la condicional de $X_2$ dado $X_1$ y $X_3$. Algunas representaciones
son más fáciles para trabajar, calcular y entender que otras.
**Ejemplo.** Si sacamos sucesivamente tres cartas de una baraja y registramos
si son rojas o negras, lo más fácil es definir $X_i$ = color de la $i$-ésima
carta, y entonces si buscamos calcular
$$p(X_1=roja, X_2=roja, X_3=negra),$$
simplemente calculamos:
$$P(X_1=roja)=26/52, P(X_2=roja|X_1=roja)=25/51$$
y finalmente
$$P(X_3=negra|X_1=roja,X_2=roja)=25/50,$$
de modo que la probabilidad que nos interesa es
$$\frac{26\cdot 25\cdot 26}{52\cdot 51\cdot 50}.$$
Otro caso en que la factorización que escogemos es importante, es cuando existen
independencias condicionales, la factorización puede resultar en un modelo más
compacto o más conveniente.
**Ejemplo.** Si $X_2$ y $X_3$ son independentes y $X_2$ es condicionalmente
independiente de $X_1$ dado $X_3$, podemos comenzar con la segunda factorización
$$p(x_1,x_2,x_3)= p(x_3)p(x_1)p(x_2|x_1,x_3),$$
y finalmente
$$p(x_1,x_2,x_3)=p(x_3)p(x_1)p(x_2|x_3)$$
el cual es un modelo considerablemente más simple que el original pues
incluye dos marginales y sólo es necesario modelar cómo depende $x_2$ de $x_3$.
Esto lo expresamos en el siguiente resultado:
<div class="caja">
Una factorización de la conjunta puede ser entendida como una parametrización
particular de la conjunta a través de sus distribuciones condicionales.
</div>
<br/>
**Ejemplo.** Supongamos la factorización $p(x,y)=p(x)p(y|x)$, y que $x$ y $y$
son variables binarias que toman los valores $0$ y $1$. La parametrización usual
para $p(x,y)$ está dada por $p_{00},p_{01},p_{10},p_{11}$ donde
$p(x,y)=p_{xy}$ y $p_{00} +p_{01}+p_{10}+p_{11}=1$ (3 parámetros en total). De
esta forma tenemos que especificar, por ejemplo, los parámetros
$p_{00},p_{01},p_{10}$.
Por otra parte, la factorización sugiere los parámetros $p_0,p_{0|1},p_{0|0},$
donde $p_0=p(x=0)$, $p_{0|1}=p(y=0|x=1)$ y $p_{0|0}=p(y=0|x=0)$. Los otros
parámetros están dados por $p_1=1-p_0$, $p_{1|0}=1-p_{0|0}$ y
$p_{1|1}=1-p_{0|1}$.
<br/>
<div class="caja">
Nótese que la idea general es
1. Usar la regla de la cadena, lo que siempre nos da una expresión válida para
la conjunta, y en la cual aparece la condicional de cada variable una sola vez
para una ordenamiento adecuado de las variables.
2. Simplificar la expresión obtenida usando las independencias condicionales
que suponemos.
3. Hacer los cálculos/inferencia, etc. usando la parametrización de
condicionales.
</div>
### Factorizaciones de la conjunta y gráficas dirigidas.
<div class="clicker">
```{r, echo=FALSE, warning=FALSE}
gr <- graph(c(1, 3, 2, 3, 2, 4, 3, 5))
plot(gr,
vertex.label = c('Dificultad', 'Inteligencia', 'Calificación', 'GRE',
'Recomendación'),
layout = matrix(c(-1, 2, 1, 2, 0, 1, 2, 1, 0, 0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
3. ¿Qué factorización crees que es apropiada para la distribución conjunta
$p(d, i, c, g, r)$?
a) $p(d)p(i)p(c|i)p(c|d)$
b) $p(d)p(i)p(c|i,d)p(g|i)p(r|c)$
c) $p(d)p(i)p(c)p(g)p(r)$
d) $p(d|c)p(i|c,g)p(c|r)p(g)p(r)$
e) Ninguna de las anteriores.
</div>
<br/>
En primer lugar, las _gráficas dirigidas acíclicas_ asociadas a una distribución
conjunta dan una factorización particular $p$ para la conjunta.
Sea ${\mathcal G}$ una gráfica dirigida con vértices $X_1,X_2,...,X_k$,
denotamos por $Pa(x_i)$ a todos los padres de $X_i$ en ${\mathcal G}$.
<br/>
<div class="caja">
Sea $p$ una distribución conjunta para $X_1,X_2,\ldots, X_k$. Decimos que
${\mathcal G}$ **representa** a $p$ cuando la conjunta se factoriza como
$$p(x_1,x_2,\ldots, x_n)=\prod_{i=1}^k p(x_i|Pa(x_i)).$$
El conjunto de distribuciones que son representadas por ${\mathcal G}$ lo
denotamos por $M({\mathcal G})$ (llamadas distribuciones markovianas con
respecto a $\mathcal G$).
</div>
<div class="caja">
Nótese que una gráfica acíclica no dirigida (GAD) *no* establece una
distribución particular, sino un conjunto de posibles distribuciones: todas
las distribuciones que se factorizan bajo ${\mathcal G}$.
</div>
<br/>
**Nota.** La factorización del lado derecho del resultado
$$p(x_1,x_2,\ldots, x_n)=\prod_{i=1}^k p(x_i|Pa(x_i))$$
siempre es una distribución de probabilidad. Por ejemplo, si consideramos
la siguiente factorización de $p(x,u,d,f,e,y,t)$:
$$p(x)p(u)p(d)p(f|d)p(e|f)p(y|f)p(t|d,u).$$
Veremos que es una distribución de probabilidad como sigue: en primer lugar,
este producto es no negativo, pues todas son distribuciones condicionales. Basta
demostrar que si sumamos sobre todos los posibles valores de $x,u,d,f,e,y,t$,
entonces esta expresión suma 1:
$$\sum_{x,u,d,f,e,y,t}p(x)p(u)p(d)p(f|d)p(e|f)p(y|f)p(t|d,u) $$
$$\left (\sum_{u,d,f,e,y,t}p(u)p(d)p(f|d)p(y|f)p(t|d,u)\right)\left(\sum_{x}p(x)\right) $$
$$\sum_{u,d,f,t}\left \{ p(u)p(d)p(f|d)p(t|d,u)\sum_y p(y|f)\sum_e p(e|f) \right\}$$
$$\sum_{u,d,f,t}p(u)p(d)p(f|d)p(t|d,u)$$
$$\sum_{u,d,t}\left \{ p(u)p(d)p(t|d,u)\sum_f p(f|d)\right \}$$
$$\sum_{u,d,t}p(u)p(d)p(t|d,u)$$
$$\sum_{u,d}p(u)p(d)$$
$$\sum_{d}p(d)\sum_u p(u)=1$$
**Discusión.** Ordenamiento topológico de vértices en un gráfica dirigida
acíclica.
En este último ejemplo vimos que el cálculo de la suma total se hace
_empujando_ primero dentro de la suma los índices de las variables que no tienen
descendientes (o que no aparecen como condicionadoras), y trabajando hacia
arriba. En términos de la gráfica, trabajamos de los _últimos vértices_ hasta
los _primeros_.
De hecho, una GAD siempre da un ordenamiento (topológico) de los vértices,
módulo variables que están al mismo _nivel_. Por ejemplo, en la gráfica de la
figura anterior, los ordenamientos son $D,I,C,G,R$ o $I,D,C,G,R$.
¿Qué ordenamiento da la siguiente gráfica?
```{r, fig.height=4, fig.width = 5, warning=FALSE}
gr <- graph(c(1, 2, 1, 3, 3, 2, 2, 4))
plot(gr,
layout = matrix(c(0, 0.5, 0.5, 0, 0, -0.5, 1, 0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
**Ejemplo: Gráficas cíclicas.** Cuando hay ciclos en una gráfica, no hay una
manera clara de entender qué factorización produce. Por ejemplo, si tenemos
tres variables $X$, $Y$,$Z$ asociados con un ciclo $X\rightarrow Y\rightarrow Z\rightarrow X$, esto quizá sugiere una factorización $p(y|x)p(z|y)p(x|z)$. Pero
se puede ver que esta expresión en general no es una distribución de
probabilidad.
```{r, warning=FALSE}
# x: inteligencia, y: examen, z: trabajo
# y|x
mar_1 <- expand.grid(x = c("i_0", "i_1"), y = c("e_0", "e_1"))
mar_1$p1 <- c(0.95, 0.2, 0.05, 0.8)
# z|y
mar_2 <- expand.grid(y = c("e_0", "e_1"), z = c("t_0", "t_1"))
mar_2$p2 <- c(0.8, 0.4, 0.2, 0.6)
# x|z
mar_3 <- expand.grid(z = c("t_0", "t_1"), x = c("i_0", "i_1"))
mar_3$p3 <- c(0.8, 0.4, 0.2, 0.6)
tab_1 <- inner_join(mar_1, mar_2)
tab_2 <- inner_join(tab_1, mar_3)
tab_2$p <- tab_2$p1 * tab_2$p2 * tab_2$p3
sum(tab_2$p)
```
En el ejemplo anterior vemos que $p(y|x)p(z|y)p(x|z)$ no suma uno. Por otra
parte $p(x)p(y|x)p(z|y,x)$ si suma uno:
```{r}
# x: inteligencia, y: examen, z: trabajo
# x
mar_1 <- data.frame(x = c("i_0", "i_1"), p1 = c(0.6, 0.4))
# y|x
mar_2 <- expand.grid(x = c("i_0", "i_1"), y = c("e_0", "e_1"))
mar_2$p2 <- c(0.95, 0.2, 0.05, 0.8)
# z|x,y
mar_3 <- expand.grid(y = c("e_0", "e_1"), x = c("i_0", "i_1"),
z = c("t_0", "t_1"))
mar_3$p3 <- c(0.8, 0.6, 0.5, 0.1, 0.2, 0.4, 0.5, 0.9)
tab_1 <- inner_join(mar_1, mar_2)
tab_2 <- inner_join(tab_1, mar_3)
tab_2$p <- tab_2$p1 * tab_2$p2 * tab_2$p3
sum(tab_2$p)
```
## Redes bayesianas
Ahora podemos definir _red bayesiana_:
<div class="caja">
Una **red bayesiana** es una gráfica GAD ${\mathcal G}$ junto con una
distribución de probabilidad particular que se factoriza sobre $G$.
</div>
<br/>
Dado que $p$ se factoriza sobre $\mathcal G$, podemos usar la factorización
para evitar dar explícitamente la conjunta sobre todas las posibles
combinaciones de las variables. Es decir, podemos usar la parametrización dada
por la factorización en condicionales.
**Ejemplo.** Sea ${\mathcal G}$ la siguiente gráfica
```{r, warning=FALSE}
gr <- graph(c(1,2,3,2,2,4))
plot(gr,
vertex.label=c('llueve', 'mojado', 'regar', 'piso'),
layout = matrix(c(0, 1, 1, 0, 0, -1, 2, 0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
La conjunta $p(m,l,r,z)$ ($z$ es piso resbaloso) se factoriza como
$$p(l)p(r)p(m|l,r)p(z|m)$$
En este ejemplo construiremos la red como si fuéramos los expertos. Esta
es una manera de construir redes que ha resultado útil y exitosa en varias
áreas (por ejemplo diagnóstico).
De forma que podemos construir una red bayesiana simplemente dando los
valores de cada factor. En nuestro ejemplo, empezamos por las marginales de $l$
y $r$:
```{r}
llueve <- c('No', 'Sí')
p_llueve <- data.frame(llueve = factor(llueve, levels= c("No", "Sí")),
prob_l = c(0.9, 0.1))
p_llueve
regar <- c('Apagado', 'Prendido')
p_regar <- data.frame(regar = factor(regar, levels = c('Apagado', 'Prendido')),
prob_r = c(0.7, 0.3))
p_regar
```
Ahora establecemos la condicional de mojado dado lluvia y regar:
```{r}
mojado <- c('Mojado','Seco')
# los niveles son todas las combinaciones de los valores de las variables
niveles <- expand.grid(llueve = llueve, regar = regar, mojado = mojado)
# mojado|lluve,regar
p_mojado_lr <- data.frame(niveles, prob_m = NA)
p_mojado_lr$prob_m[1:4] <- c(0.02, 0.6, 0.7, 0.9)
p_mojado_lr$prob_m[5:8]<- 1 - p_mojado_lr$prob_m[1:4]
p_mojado_lr
```
Y finalmente la condicional de piso resbaloso dado piso mojado:
```{r}
p_piso_mojado <- data.frame(expand.grid(
piso = c('Muy.resbaladizo', 'Resbaladizo', 'Normal'),
mojado=c('Mojado','Seco')))
p_piso_mojado
p_piso_mojado$prob_p <- c(0.3, 0.6, 0.1, 0.02, 0.3, 0.68)
p_piso_mojado
```
Con esta información podemos calcular la conjunta. En este caso, como el
problema es relativamente chico, podemos hacerlo explícitamente para todos los
niveles:
```{r}
p_1 <- inner_join(p_piso_mojado, p_mojado_lr)
p_2 <- inner_join(p_1, p_llueve)
p_conj <- inner_join(p_2, p_regar)
p_conj$prob <- p_conj$prob_p * p_conj$prob_m * p_conj$prob_l * p_conj$prob_r
p_conj
sum(p_conj$prob)
```
Usamos el paquete **bnlearn** para construir el objeto que corresponde a
esta red bayesiana:
```{r, warning=FALSE}
# nodos
graf_jardin <- empty.graph(c('llueve', 'regar', 'mojado', 'piso'))
# arcos
arcs(graf_jardin) <- matrix(c('llueve', 'mojado', 'regar', 'mojado', 'mojado',
'piso'), ncol = 2, byrow = T)
node.ordering(graf_jardin)
plot(graf_jardin)
```
```{r}
modelo_jardin <- bn.fit(graf_jardin,
data = data.frame(p_conj[, c('llueve', 'regar', 'mojado', 'piso')]))
```
Y este es el objeto que representa nuestra red (aunque falta corregir las
probabilidades):
```{r}
str(modelo_jardin)
```
Ahora pondremos las probabilidades condicionales correctas (también llamados
modelos locales):
```{r}
tab_1 <- table(p_conj$llueve)
tab_1[c(1, 2)] <- p_llueve[, 2]
tab_1
modelo_jardin$llueve <- tab_1
tab_2 <- table(p_conj$regar)
tab_2[c(1,2)] <- p_regar[,2]
tab_2
modelo_jardin$regar <- tab_2
tab_3 <- xtabs(prob_m ~ mojado + llueve + regar, data = p_mojado_lr)
tab_3
modelo_jardin$mojado <- tab_3
tab_4 <- xtabs(prob_p ~ piso + mojado, data = p_piso_mojado)
tab_4
modelo_jardin$piso <- tab_4
modelo_jardin
```
Finalmente, para hacer inferencia en la red (es decir, calcular probabilidades
dado cierto conocimiento), necesitamos usar un algoritmo eficiente (por ejemplo
en [SAMIAM](http://reasoning.cs.ucla.edu/samiam/) o [GeNIe](https://www.bayesfusion.com/)). Aquí usamos el paquete **gRain**. Los _query_ que hacemos son
la inferencia, pero también se llaman así en la literatura de modelos gráficos.
En este caso, podemos examinar las marginales condicionales a toda la evidencia
(información) que tenemos.
Por ejemplo, ¿cómo se ven las marginales cuando sabemos que el piso está muy resbaladizo?
```{r, warning=FALSE}
library(gRain)
comp_jardin <- compile(as.grain(modelo_jardin))
querygrain(comp_jardin)
query_1 <- setEvidence(comp_jardin, nodes = c('piso'),
states = c('Muy.resbaladizo'))
querygrain(query_1)
```
Podemos ver que llueve y mojado son independientes (sin condicionar).
```{r}
query_2 <- setEvidence(comp_jardin, nodes = c('llueve'), states = c('Sí'))
querygrain(query_2)$regar
query_3 <- setEvidence(comp_jardin, nodes = c('llueve'), states = c('No'))
querygrain(query_2)$regar
```
Y ahora vemos la dependencia entre llueve y regar si condicionamos a piso
resbaladizo:
```{r}
query_4 <- setEvidence(comp_jardin, nodes = c('piso', 'regar'),
states = c('Muy.resbaladizo', 'Apagado'))
querygrain(query_4)$llueve
query_5 <- setEvidence(comp_jardin, nodes = c('piso', 'regar'),
states = c('Muy.resbaladizo','Prendido'))
querygrain(query_5)$llueve
```
![](img/manicule2.jpg) Abrir esta red en samiam, y
repetir los queries.
### Independencia condicional y redes bayesianas
Ahora abordamos el segundo enfoque de las redes bayesianas. En este, leemos
directamente independencias condicionales a partir de la estructura de la
gráfica (es esencialmente equivalente al criterio de factorización).
<div class="caja">
**Independencias condicionales locales**
Una distribución de probabilidad $p\in M({\mathcal G})$ (es decir, se factoriza
en $\mathcal G$) si y sólo si para toda variable $W$, $W$ es condicionalmente
independiente de cualquier variable que no sea su padre o descendiente dados los
padres $Pa(W)$. Es decir $$W \bot Z|Pa(W)$$ para cualquier $Z$ que no sea
descendiente o padre de $W$. Otra manera de decir esto es que dados los padres,
un nodo sólo puede transmitir información probabilística a sus descendientes y
a ningún otro nodo.
</div>
<br/>
Por ejemplo, en la siguiente gráfica, el nodo rojo, dado los nodos azules, es
condicionalmente independiente de los nodos grises:
```{r, warning=FALSE}
gr <- graph(c(1, 4, 2, 5, 3, 5, 4, 6, 5, 6, 7, 8, 6, 8, 8, 9, 8, 10))
plot(gr,
vertex.size = 20,
vertex.color = c(rep('gray80', 3), rep('blue', 2), 'red', 'gray80', 'salmon',
'salmon', 'salmon'),
vertex.label.cex = 1.2, vertex.label.color = 'gray50', vertex.frame.color = NA,
asp = 0.7, edge.arrow.size = 1)
```
#### Discusión de demostración.
Supongamos que las independencias locales se satisfacen según el enunciado
anterior. Si tomamos las variables según el orden topológico de
$\mathcal G$, dado por $X_1,\ldots, X_k$, entonces por la regla del producto:
$$p(x)=\prod_{i=1}^k p(x_i|x_1,\ldots, x_{i-1}).$$
Ahora, nótese que 1) para cada $X_i$, ninguna de las variables
$X_1,\ldots, X_{i-1}$ es descendiente de $X_i$ y 2) que $Pa(X_i)$ está contenido
en $X_1,\ldots, X_{i-1}$. Por lo tanto, por el supuesto de las independencias
locales, vemos que
$$p(x_i|x_1,\ldots, x_{i-1})=p(x_i|Pa(x_i)),$$
y así hemos demostrado que $p$ se factoriza en $\mathcal G$.
El otro sentido de la demostración es más difícil, veamos un ejemplo. En la
siguiente gráfica, describimos una factorización para la conjunta de
varias variables: inteligencia de un alumno, dificultad del curso,
calificación obtenida en el curso, calificación obtenida en el examen GRE y
si el alumno recibe o no una carta de recomendación de su profesor:
```{r}
library(igraph)
gr <- graph( c(1,3,2,3,2,4,3,5) )
plot(gr,
vertex.label = c('Dificultad','Inteligencia','Calificación','GRE',
'Recomendación'),
layout = matrix(c(-1,2,1,2,0,1,2,1,0,0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
La conjunta se factoriza como
$$p(i,d,c,g,r)=p(i)p(d)p(c|d,i)p(g|i)p(r|c).$$
Queremos demostrar que dada la inteligencia, la calificación del GRE es
condicionalmente independiente del resto de las variables (pues el resto no son
ni padres ni descendientes de GRE), es decir, busamos demostrar que
$$p(g|i,d,c,r)=p(g|i).$$
Comenzamos por la factorización de arriba:
$$p(i,d,c,g,r)=p(i)p(d)p(c|d,i)p(g|i)p(r|c).$$
Necesitamos calcular
$$p(g|i,d,c,r)=\frac{p(g,i,d,c,r)}{p(i,d,c,r)}.$$
Así que comenzamos con la factorización y sumamos sobre $s$ para obtener
$$p(i,d,c,r)=\sum_g p(i)p(d)p(c|d,i)p(g|i)p(r|c),$$
$$p(i,d,c,r)=p(i)p(d)p(c|d,i)p(r|c),$$
y dividiendo obtenemos que
$$p(g|i,d,c,r)=p(g|i),$$
que era lo que queríamos demostrar.
De acuerdo a la gráfica, la calificación en el GRE es independiente de la dificultad una vez que conocemos la inteligencia, es decir
$p(g | i, d) = p(g | i)$, veamos la factorización. Usando el teorema de Bayes
podemos calcular la densidad condicional como,
$$p(g|i,d) = \frac{p(g,i,d)}{p(i,d)}$$
Ahora, comencemos calculando la densidad marginal $p(g,i,d)$:
\begin{align}
\nonumber
p(g,i,d) &= \sum_c \sum_r p(i,d,c,r)
\nonumber
&= \sum_c \sum_r p(i)p(d)p(c|d,i)p(g|i)p(r|c)
\nonumber
&= \sum_c p(i)p(d)p(c|d,i)p(g|i)\sum_r p(r|c)
\nonumber
&= p(i)p(d)p(g|i) \sum_c p(c|d,i)
\nonumber
&= p(i)p(d)p(g|i)
\end{align}
Calculemos ahora el denominador en la regla de Bayes,
\begin{align}
\nonumber
p(i,d) &= \sum_g p(g,i,d)
\nonumber
&= \sum_g p(i)p(d)p(g|i)
\nonumber
&= p(i)p(d)\sum_g p(g|i)
\nonumber
&= p(i)p(d) \mbox{ (inteligencia y dificultad son indep.)}
\end{align}
Por lo tanto, la densidad condicional es
$$p(g|i,d) = \frac{p(g,i,d)}{p(i,d)} = \frac{p(i)p(d)p(g|i)}{p(i)p(d)} = p(g|i),$$
esto es, la calificación es independiente de la dificultad condicional a la
inteligencia del alumno.
![](img/manicule2.jpg) Repetir para $p(c|d,i)$.
Este último resultado explica cuáles son las independencias condicionales
necesarias y suficientes para que una distribución se factorice según la gráfica
${\mathcal G}$. Ahora la pregunta que queremos resolver es:
¿hay otras independencias condicionales representadas en la gráfica? Buscamos
independencias condicionales **no locales**. La respuesta es sí, pero
necesitamos conceptos adicionales a los que hemos visto hasta ahora
(d-separación).
**Ejemplo.** Antes de continuar, podemos ver un ejemplo de independencias no
locales implicadas por la estructura gráfica. Si tenemos:
$$X \rightarrow Y \rightarrow Z \rightarrow W$$
es fácil ver que $X$ es independiente de $W$, dada $Y$, aunque esta
independencia no es de la forma del resultado anterior, pues no estamos
condicionando a los padres de ningún vértice.
### Flujo de información probabilística
En esta parte entenderemos primero como se comunica localmente la información
probabilística a lo largo de los nodos cuando tenemos información acerca de
alguno de ellos. Utilizaremos las factorizaciones implicadas por las gráficas
asociadas.
**¿En cuáles de los siguientes casos información sobre $X$ puede
potencialmente cambiar la distribución sobre $Y$?**
1. **Razonamiento causal**: $X\rightarrow Z \rightarrow Y$
* Si no tenemos información acerca de $Z$, $X$ y $Y$ pueden estar asociadas.
En este caso tenemos $p(x,y,z)=p(x)p(z|x)p(y|z)$, de forma que, haciendo un
cálculo simple:
$$p(x,y)= p(x) \sum_z p(y|z)p(z|x).$$ Como siempre es cierto que
$p(x,y)=p(x)p(y|x)$, tenemos
$$p(y|x)=\sum_z p(y|z)p(z|x),$$
donde vemos que cuando cambia $x$, puede cambiar también $p(y|x)$.
En el ejemplo $Edad \to Riesgo \to Accidente$, si alguien es más joven,
entonces es más probable que sea arriesgado, y esto hace más probable que
tenga un accidente.
* Si sabemos el valor de $Z$, sin embargo, $X$ no nos da información de $Y$.
En este caso tenemos $p(x,y)=p(x)p(z|x)p(y|z)$, como $z$ está fija
tenemos que $p(x,y)=p(x)h(x)g(y)$, donde $h$ y $g$ son funciones fijas. Como
la conjunta se factoriza, $X$ y $Y$ son independientes dada $Z$.
En nuestro ejemplo, si conociemos la aversión al riesgo, la edad del
asegurado no da información adicional acerca de la probabilidad de tener un
accidente.
2. **Razonamiento evidencial**: $Y\rightarrow Z \rightarrow X.$
* Si no sabemos acerca de $Z$, sí, por un argumento similar al del inciso
anterior. Es un argumento de probabilidad inversa en
$Edad \to Riesgo \to Accidente$. Si alguien tuvo un accidente, entonces
es más probable que sea arriesgado, y por tanto es más probable que sea joven.
* Si sabemos el valor que toma $Z$, entonces $X$ no puede influenciar a $Y$,
por un argumento similar.
3. **Razonamiento de causa común**: $X\leftarrow Z \rightarrow Y$.
* Sí, pues en este caso: $$p(x,y,z)=p(z)p(y|z)p(x|z),$$
Sumando sobre $z$ tenemos
$$p(x,y)=\sum_z p(y|z)p(x,z),$$
así que $p(y|x)=\sum_z p(y|z)p(z|x).$
En el ejemplo podríamos tener
$Tiempo manejando \leftarrow Edad \rightarrow Riesgo$.
Una persona que lleva mucha tiempo manejando es más probablemente mayor, lo
cual hace más probable que sea aversa al riesgo.
* No. Si conocemos el valor de $Z$, entonces $X$ y $Y$ son condicionalmente
independientes, pues $p(x,y,z)=p(z)p(y|z)p(x|z)$, donde vemos que una vez que
está dada la $z$ $x$ y $y$ no interactuán (están en factores distintos).
4. **Razonamiento intercausal**: Colisionador o estructura-v: $X\rightarrow Z \leftarrow Y$.
* Si no tenemos información acerca de $Z$, __no__. Esto es porque tenemos
$$p(x,y,z)=p(x)p(y)p(z|x,y),$$ de donde vemos que la conjunta de $X$ y $Y$
satisface $p(x,y)=p(x)p(y)$ (sumando sobre $z$).
Podríamos tener que
$Calidad de conductor \rightarrow Accidente \leftarrow Condicion de calle$.
Que alguien vaya por una calle en mal estado no cambia las probabilidades de
ser un mal conductor (en nuestro modelo).
* Si sabemos el valor de $Z$, __sí__ conocimiento de $X$ puede cambiar
probabilidades de $Y$. Como tenemos $$p(x,y,z)=p(x)p(y)p(z|x,y),$$
el término (z está fijo) $p(z|x,y)=h(x,y)$ puede incluir interacciones entre
$x$ y $y$.
En nuestro ejemplo, si sabemos que hubo un accidente, las condiciones de la
calle si nos da información acerca de la calidad del conductor: por ejemplo,
si la calle está en buen estado, se hace más probable que se trate de un
conductor malo.
<div class="clicker">
```{r, echo=FALSE}
library(igraph)
gr <- graph( c(1,3,2,3,2,4,3,5) )
plot(gr,
vertex.label = c('Dificultad', 'Inteligencia', 'Calificación', 'GRE',
'Recomendación'),
layout = matrix(c(-1,2,1,2,0,1,2,1,0,0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = c('lightblue', 'salmon', 'lightblue',
'salmon', 'salmon', 'salmon'),
vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
Si sabemos que la clase es difícil y que el estudiante obtuvo 6, ¿como cambia
la probabilidad posterior de inteligencia alta?
a) sube
b) baja
c) no cambia
d) No se puede saber?
</div>
#### Caminos: pelota de Bayes
Un camino (no dirigido) esta activo si una pelota de Bayes que viaja a través
del camino NO se topa con un símbolo de bloqueo (->|). En los esquemas los nodos
sombreados indican que se tiene información de esas variables (ya no son
aleatorios).
<img src="img/bayes_ball.png" width="600px" />
<!-- ![](img/bayes_ball.png) -->
En la figura de la izquierda (abajo) notamos que (siguiendo las reglas de la pelota de Bayes) la pelota no puede llegar del nodo $X$ al nodo $Y$, esto es no existe un camino activo que conecte $X$ y $Y$. Por otra parte, la figura del lado derecho muestra que al condicionar en el conjunto $\{X, W\}$ se _activa_ un camino que permite que la pelota de Bayes viaje de $X$ a $Y$.
<img src="img/bayes_ball_1.png" width="500px" />
<!-- ![](img/bayes_ball_1.png) -->
Ahora veamos alegbráicamente que si condicionamos únicamente a $Z$, entonces $X \perp Y | Z$, esto es lo que vemos en la figura de la izquierda. Para esto escribamos la densidad conjunta:
$$p(z,a,y,x,b,c) = p(z)p(a|z)p(y|z)p(x|a)p(b|a,y)p(c|b)$$
Y la utilizamos para obtener la densidad marginal $p(x,y,z)$:
\begin{align}
\nonumber
p(x,y,z) &= \sum_a \sum_b \sum_c p(z,a,y,x,b,c)
\nonumber
&= \sum_a \sum_b \sum_c p(z)p(a|z)p(y|z)p(x|a)p(b|a,y)p(c|b)
\nonumber
&= \sum_a \sum_b p(z)p(a|z)p(y|z)p(x|a)p(b|a,y)\sum_c p(c|b)
\nonumber
&= \sum_a p(z)p(a|z)p(y|z)p(x|a) \sum_b p(b|a,y)
\nonumber
&= p(z)p(y|z) \sum_a p(a|z) p(x|a)
\nonumber
&= g(y,z)h(x,z)
\end{align}
donde $g(y,z) = p(z)p(y|z)$ y $h(y,z) = \sum_a p(a|z) p(x|a)$.
Por lo tanto $X \perp Y | Z$.
![](img/manicule2.jpg) Utilizando la gráfica del lado
derecho demuestra algebráicamente que dados $Z,W$, $X$ no es necesariamente
independiente de $Y$.
### Flujo de probabilidad y d-Separación
De la discusión anterior, definimos **caminos activos** en una
gráfica los que, dada cierta evidencia $Z$, pueden potencialmente transmitir
información probabilística.
<div class="caja">
Sea $U$ un camino no dirigido en una gráfica ${\mathcal G}$. Decimos que el
**camino es activo** dada evidencia $W$ si:
* Todos los colisionadores en el camino $U$ están o tienen un descendiente en
$W$.
* Ningún otro vértice de el camino está en $W$.
</div>
<br/>
Un caso adicional interesante es cuando los
descendiente de un colisionador activan un camino.
<img src="img/bayes_ball_2.png" width="250px" />
<!-- ![](img/bayes_ball_2.png) -->
<div class="clicker">
```{r, fig.width=7, fig.height=4.8, echo=FALSE}
library(igraph)
gr <- graph(c(1, 2, 2, 4, 3, 4, 3, 5, 4, 6, 6, 7, 5, 7, 7, 8, 4, 8))
plot(gr,
vertex.label = c('Coherencia', 'Dificultad', 'Inteligencia',
'Calificación', 'GRE', 'Recomendación', 'Trabajo', 'Feliz'),
layout = matrix(c(-1, 5.5, -1, 3, 1, 3, 0, 2, 2, 1, 0, 0, 1, -1, -1, -1.7),
byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
4. ¿Cuáles de los siguientes son caminos activos si observamos Calificación?
a) $Coh \rightarrow Dif \rightarrow Calif \leftarrow Int \rightarrow GRE$
b) $Int \rightarrow Cal \rightarrow Rec \leftarrow Tra \rightarrow Fel$
c) $Int \rightarrow GRE \rightarrow Tra \rightarrow Fel$
d) $Coh \rightarrow Dif \rightarrow Cal \leftarrow Int \rightarrow GRE \rightarrow Tra \leftarrow Rec$
</div>
</br>
Volviendo al ejemplo anterior
<img src="img/bayes_ball_2.png" width="250px" />
<!-- ![](img/bayes_ball_2.png) -->
**Algebráicamente:**
La distribución conjunta se factoriza como:
$$p(z,a,y,x,b,w)=p(z)p(a|z)p(y|z)p(x|a)p(b|a,y)p(w|b)$$
Por lo que la marginal $p(x,y,w,z)$ se obtiene de la siguiente manera:
$$p(x,y,w,z) = \sum_a \sum_b p(z,a,y,x,b,w)$$
$$= \sum_a \sum_b p(z)p(a|z)p(y|z)p(x|a)p(b|a,y)p(w|b)$$
$$= p(z)p(y|z) \sum_a p(a|z)p(x|a) \sum_b p(b|a,y)p(w|b)$$
Notamos que $X$ y $Y$ interactúan a través de $A$ y $B$, por lo que no es posible encontrar dos funciones $g$, $h$, tales que $p(x,y,w,z) \propto g(x,w,z) h(y,w,z)$ y concluímos que $X \not \perp Y | W$.
<br/>
<div class="caja">
Sean $X$ y $Y$ vértices distintos y $W$ un conjunto de vértices que no contiene
a $X$ o $Y$. Decimos que $X$ y $Y$ están **d-separados dada** $W$ si no existen
caminos activos dada $W$ entre $X$ y $Y$.
</div>
<br/>
Es decir, la $d$-separación desaparece cuando hay información condicionada en
colisionadores o descendientes de colisionadores.
Este concepto de $d$-separación es precisamente el que funciona para encontrar
todas las independencias condicionales:
<div class="caja">
Supongamos que $p$ se factoriza sobre $\mathcal G$. Sean $A$, $B$ y $C$ conjuntos disjuntos de vértices de ${\mathcal G}$. Si $A$ y $B$ están $d$-separados por $C$
entonces $A\bot B | C$ bajo $p$ .
</div>
<br/>
#### Discusión
El resultado anterior no caracteriza la independencia condicional de una
distribución $p$ por una razón simple, que podemos entender como sigue: si agregamos
aristas a una gráfica ${\mathcal G}$ sobre la que se factoriza $p$, entonces
$p$ se factoriza también sobre la nueva gráfica ${\mathcal G}'$. Esto reduce
el número de independencias de $p$ que representa ${\mathcal G}$.
Un ejemplo trivial son dos variables aleatorias independientes $X$ y $Y$ bajo
$p$. $p$ claramente se factoriza en $X\to Y$, pero de esta gráfica no se puede
leer la independencia de $X$ y $Y$.
¿Qué es lo malo de esto?
En primer lugar, si usamos ${\mathcal G}'$ en lugar de ${\mathcal G}$, no
reducimos la complejidad del modelo al usar las independencias condicionales
gráficas que desaparecen al agregar aristas. En segundo lugar, la independencia
condicional no mostrada en la gráfica es más difícil de descubrir: tendríamos
que ver directamente la conjunta particular de nuestro problema, en lugar de
leerla directamente de la gráfica.
Finalmente, estos argumentos también sugieren que quisiéramos encontrar mapeos
que no sólo sean *mínimos* (no se pueden eliminar aristas), sino también
*perfectos* en el sentido de que representan exactamente las independencias
condicionales. Veremos estos temas más adelante.
Algo que sí podemos establecer es cómo se comporta la familia de distribuciones
que se factorizan sobre una gráfica $\mathcal G$:
<br/>
<div class="caja">
Sea $\mathcal G$ una DAG. Si $X$ y $Y$ no están $d$-separadas en $\mathcal G$,
entonces existe **alguna** distribución $q$ (que se factoriza sobre
${\mathcal G}$) tal que $X$ y $Y$ **no** son independientes bajo $q$.
</div>
<br/>
Para que existan independencias que no están asociadas a $d$-separación los
parámetros deben tomar valores paticulares. Este conjunto de valores es
relativamente chico en el espacio de parámetros (son superficies), por lo tanto
podemos hacer más fuerte este resultado:
<br/>
<div class="caja">
Sea $\mathcal G$ una DAG. Excepto en un conjunto de "medida cero" en el espacio
de distribuciones $M({\mathcal G})$ que se factorizan sobre $\mathcal G$,
tenemos que $d$-separación es equivalente a independencia condicional. Es decir,
$d$-separación caracteriza precisamente las independencias condicionales de cada
$p\in M(\mathcal G)$, excepto para un conjunto relativamente chico de $p \in M({\mathcal G})$ .
</div>
### Equivalencia Markoviana
En esta parte trataremos el problema de la unicidad de la representación gráfica
dada un conjunto de independencias condicionales. La respuesta corta es que
las representaciones no son únicas, pues algunas flechas pueden
reorientarse sin que haya cambios en términos de la conjunta representada.
<div class="caja">
Decimos que dos gráficas ${\mathcal G}_1$ y ${\mathcal G}_2$ son **Markov
equivalentes** cuando el conjunto de independencias implicadas de ambas es el
mismo. Otra manera de decir esto, es que ambas gráficas tienen exactamente la
misma estructura de $d-$separación.
</div>
La equivalencia Markoviana limita nuestra capacidad de inferir la dirección de
las flechas únicamente de las probabilidades, esto implica que dos gráficas
Markov equivalentes no se pueden distinguir usando solamente una base de datos.
Por ejemplo, en la siguiente gráfica, cambiar la dirección del arco que une
$X_1$ y $X_2$ genera una gráfica Markov equivalente, esto es, la dirección del
arco que une a $X_1$ y $X_2$ no se puede inferir de información probabilística.
```{r}
library(igraph)
gr <- graph( c(1,2,1,3,2,4,3,4,4,5) )
plot(gr, vertex.label=c('X1','X2','X3','X4','X5'),
layout = matrix(c(-0.3,0,0,-0.3,0, 0.3,0.3,0,0.6,0), byrow = TRUE, ncol = 2),
vertex.size = 20, vertex.color = 'salmon', vertex.label.cex = 1.2,
vertex.label.color = 'gray40', vertex.frame.color = NA, asp = 0.5,
edge.arrow.size = 1)
```
Decimos que un colisionador *no está protegido* cuando las variables que apuntan
a la colisión no tienen vértice entre ellas. Definimos adicionalmente el *esqueleto*
de una GAD como la versión no dirigida de $\mathcal G$. El siguiente resultado establece
que la distribución sólo puede determinar la dirección de las flechas
en presencia de un colisionador no protegido:
<div class="caja">
Dos gráficas ${\mathcal G}_1$ y ${\mathcal G}_2$ son Markov equivalentes si y sólo si
* Sus esqueletos son iguales y
* ${\mathcal G}_1$ y ${\mathcal G}_2$ tienen los mismos colisionadores no protegidos.
</div>
<br/>
Las equivalencias que señala este teorema son importantes. Por ejemplo,
las gráficas $X\rightarrow Y \rightarrow Z$ y $X\leftarrow Y \leftarrow Z$ son
equivalentes, lo que implica que representan a las mismas distribuciones condicionales.
Solamente usando datos (o el modelo), **no podemos distinguir estas dos estructuras**, sin embargo,
puede ser que tengamos información adicional para preferir una sobre otra (por ejemplo,
si es una serie de tiempo).
Una estructura que sí podemos identificar de manera dirigida es el colisionador. El resto
de las direcciones pueden establecerse por facilidad de interpretación o razones causales.
Regresando a la gráfica anterior, notamos que al revertir el sentido del arco que une a $X_1$ con $X_2$ no se crea ni se destruye ningun colisionador y por tanto la gráfica resultante del cambio de sentido es efectivamente Markov equivalente. Consideremos ahora los arcos dirigidos que unen a $X_2$ con $X_4$ y a $X_4$ con $X_5$, notamos que no hay manera de revertir la dirección de estos arcos sin crear un nuevo colisionador, esto implica que algunas funciones de probabilidad $p$ restringen la dirección de éstas flechas en la gráfica.
En el siguiente ejemplo, mostramos la clase de equivalencia
de una red de ejemplo. Ahí vemos cuáles son las aristas que se pueden orientar
de distinta manera, y cuáles pertenecen a colisionadores en los cuales las direcciones están identificadas:
```{r, fig.height=4.5,fig.width=4.5}
library(bnlearn)
grafica.1 <- gs(insurance[c('Age', 'RiskAversion', 'Accident', 'DrivQuality',
'Antilock', 'VehicleYear')], alpha = 0.01)
graphviz.plot(grafica.1)
```
<div class = "clicker">
<img src="img/markov_equivalencia.png" width="600px"/>
¿Cuáles de las gráficas anteriores son Markov equivalentes?
a) 1 y 2
b) 1 y 3
c) 2 y 4
d) 2 y 4
e) Ninguna
</div>
#### Resumen {-}
* Dada una gráfica $G$ podemos encontrar las as independencias condicionales que
establece, $I(G)$.
* Dada una distribución $p$ podemos encontrar las independencias que implica,
$I(p)$ (en teoría).
* Las independencias condicionales definidas por la red bayesiana son un
subconjunto de las independencias en $p$, esto es $I(G) \subset I(p)$.
* Equivalencia Markoviana se expresa como: $I(G) = I(G')$.
#### Ejemlos {-}