8.1 Preparación de la red

Antes de trabajar con el conjunnto de datos Asia mostraremos un ejemplo de como crear una estructura de red sencilla desde cero. Podríamos empezar por crear bien una red vacía (sin arcos) o una red aleatoria (arcos que unen aleatoriamente los nodos), pero no haremos nada de eso (en el sitio de blearn se puede encontrar como hacerlo). Lo que haremos es crear una estructura de red particular, según nuestro antojo. Esto puede ser el caso cuando se tiene suficiente confianza en conocer la “verdader” estructura de la red.

#create an empty DAG with nodes
dag= empty.graph(LETTERS[c(1,19,20,12,2,5,24,4)])

#assign the DAG structure, from to 
asia.structure = matrix(c("A", "S", "S", "T", "T","L", "L","B", "B", "E","E", "X","X","D"), ncol = 2, byrow = TRUE, dimnames = list(NULL, c("from", "to"))) 
pander(asia.structure)
from to
A S
S T
T L
L B
B E
E X
X D
#now asign the structure to the empty graph using arcs, which makes it a bnlearn object
arcs(dag) <- asia.structure 
dag
## 
##   Random/Generated Bayesian network
## 
##   model:
##    [A][S|A][T|S][L|T][B|L][E|B][X|E][D|X] 
##   nodes:                                 8 
##   arcs:                                  7 
##     undirected arcs:                     0 
##     directed arcs:                       7 
##   average markov blanket size:           1.75 
##   average neighbourhood size:            1.75 
##   average branching factor:              0.88 
## 
##   generation algorithm:                  Empty
plot(dag)

Si optamos por usar arcos no dirigidos entonces podemos hacer esto.

dag2 = empty.graph(LETTERS[c(1,19,20,12)])
asia.structure2 = matrix(c("A", "S", "S", "A", "T","L", "L", "T"),
                      ncol = 2, byrow = TRUE,
                       dimnames = list(NULL, c("from", "to")))
arcs(dag2) = asia.structure2
plot(dag2)

Cuando ejecutamos estos comandos, automáticamente se realizan una serie de verificaciones para evitar faltas a los requerimientos en la estructuración de la red. Las fallas detectadas se reportarán mediante mensajees de error. La principal verificación de faltas es contra la falta de nodos, la presencia de ciclos y circuitos.

Este otro ejemplo muestra una estructura de red derivada de “opinión experta”, a la que añadimos estimadores justo en las distribuciones de probabilidad condicional conjunta del nodo.

Expert1 = matrix(c(0.4, 0.6), ncol = 2, dimnames = list(NULL, c("BAJO", "ALTO")))
dag
## 
##   Random/Generated Bayesian network
## 
##   model:
##    [A][S|A][T|S][L|T][B|L][E|B][X|E][D|X] 
##   nodes:                                 8 
##   arcs:                                  7 
##     undirected arcs:                     0 
##     directed arcs:                       7 
##   average markov blanket size:           1.75 
##   average neighbourhood size:            1.75 
##   average branching factor:              0.88 
## 
##   generation algorithm:                  Empty
Expert1
##      BAJO ALTO
## [1,]  0.4  0.6
Expert2 = c(0.5, 0.5, 0.4, 0.6, 0.3, 0.7, 0.2, 0.8)
dim(Expert2) = c(2, 2, 2)
dimnames(Expert2) = list("C" = c("CIERTO", "FALSO"), "A" =  c("BAJO", "ALTO"), "B" = c("BUENO", "MALO"))
Expert2
## , , B = BUENO
## 
##         A
## C        BAJO ALTO
##   CIERTO  0.5  0.4
##   FALSO   0.5  0.6
## 
## , , B = MALO
## 
##         A
## C        BAJO ALTO
##   CIERTO  0.3  0.2
##   FALSO   0.7  0.8