¿Cómo entender el Teorema de Bayes en forma simple?
José Enrique González Cornejo
Diciembre 2015
Versión 2.0

Indice

Para empezar, seleccione usted mismo parámetros de la siguiente aplicación y genere un diagrama de árbol, dado que serán la base de los experimentos que haremos para desarrollar el concepto.
 

Aplicación para Generar Diagrama de Árbol

Evento 1 Evento2 Evento 3
Carriles Ramas Condicionales Sub Ramas


 

Prologo

Siempre quise explicar el Teorema de Bayes de una forma sencilla, siguiendo un poco las pautas del matemático Paul R. Halmos en su obra Teoría Intuitiva de Conjuntos.

En realidad, el Teorema de Bayes entrega una regla sencilla para calcular la probabilidad de un evento E, dado una serie de sucesos con sus probabilidades condicionales que lo anteceden. Sin embargo, la mayoría de los ingenieros, economistas o profesionales que alguna vez lo estudiaron, - que yo he encontrado en mi trabajo -, cuando han necesita aplicar el concepto, simplemente lo han olvidado casi por completo e incluso tienen un mal recuerdo del teorema. ¿Por qué será?

Recuerdo el año 1972, en la Universidad Federico Santa María de Valparaíso, haberme inscrito en la asignatura Algebra Abstracta, - después de haber estudiado y aprobado ramos como Lógica y Conjuntos, Algebras Vectoriales y Lineales, Cálculos, Probabilidades y Estadísticas y tres asignaturas de Física-, para encontrarme con que la bibliografía de base de este ramo Algebra Abstracta, era un libro llamado por todos los conocedores, como “el Halmos” a secas.

Cuando comencé a hojearlo, grande fue mi sorpresa. Casi no había nomenclatura en sus textos, se describían los conceptos con ejemplos simples, sin expresiones matemáticas y creo, que todos aquellos jóvenes que deseábamos ser científicos, quedamos bastante descolocados. Incluso algunos preguntaron si el curso era de literatura. (Estábamos mal acostumbrados y con una concepción desviada de lo que realmente es la Matemática)

Al menos, desacomodados en muchos aspectos, dado que habíamos cursado todas esas materias en forma aislada e inconexa, siempre basado en un enjambre de notación,  nomenclatura matemática, demostraciones por el absurdo etc., que consecutivamente eran evaluadas en pruebas, por los docentes.

Creo que cada uno de nosotros, - en sus largas y nocturnas horas de estudio y repetición de ejercicios, habíamos aprendido a sobrevivir y lograr, - de alguna forma-, pasar aquellos presionados certámenes. Me gustaría preguntarle a cada uno de estos destacados profesionales de hoy y jóvenes de ayer, ¿Cuánto le sirvieron los ejercicios del Schaum para preparar sus pruebas?. Es posible que mis compañeros Sansanos, nieguen haber preparado sus pruebas con estas útiles ediciones de la Mc Grau-Hill. (Utilizada por millones de estudiantes en el mundo).

Luego, mis preguntas son:

  • ¿Encuentra repuesta,- a su avidez por aprender-, un estudiante con esta concepción de enseñanza?

  • ¿Se le ayuda a facilitar el camino en su construcción individual del conocimiento?


Introducción

Bueno, el presente artículo intenta enseñar el Teorema de Bayes basado centralmente en diagrámas de árbol, sin asustarnos por la expresión de sus fórmulas, conceptos y notación, que son impresionantemente complejas cuando la vemos por primera vez. Aún más, sin tener aun mucha comprensión de cuál es su utilidad y de verse obligados a aprender desmenuzando nomenclaturas complejas.

Seré uno más de los que intentan mejorar la reputación de Thomas Bayes, de modo que partiré con el simple y frecuente ejemplo de dos buzones con bolitas de colores y su correspondiente diagrama de árboles, para explicar haciendo un experimento de probabilidades condicionales e ir introduciendo paulatinamente ciertos conceptos formales.

Después ingresar del mismo modo al cálculo de Bayes, con varios ejemplos y un segmento de una aplicación computacional DocIRS (con javascript), para generar árboles mediante ingreso de parámetros (Ver Aplicación) . Finalmente mostrar la formalización matemática del Teorema de Bayes, para lo cual Internet está repleto de documentación, videos, aplicaciones y bibliografía, en investigación médica, Teoría de Juegos y las más diversas áreas del conocimiento. Obviamente incluyendo Wikipedia.

Aprenderemos dibujando el diagrama de árbol. Recuerden el enunciado de un problema siempre debe tener los datos de base explícitos o implícitos. En su trabajo, es probable que no siempre tengan data empírica para determinadas variables, pero si tienen el conocimiento del comportamiento, pueden asumir valores a priori que posteriormente podrán irse ajustando.

Finalizaremos con una conclusión basada en la experiencia de la empresa DocIRS en tratamiento estadístico de datos y un anexo con pautas para el lector.

 

I. Concepto a través de dos Buzones

Experimento 1

Se tienen dos buzones. El Buzón 1 con 3 bolitas negras y 2 rojas. El Buzón 2, con 4 negras y 3 rojas.


Dibujo 1

El experimento aleatorio que utilizaremos, consiste en sacar una bolita del primer buzón e introducirla en el segundo, para después extraer una bolita de este último buzón y ahí preguntar probabilidades de ocurrencia. El hecho de sacar una bolita lo llamaremos evento, cuya probabilidad es siempre diferente de cero. (El experimento tiene como condición, siempre sacar una bolita)


Dibujo 2

· Primer evento: Sacar una bolita del Buzón 1, esta acción puede seguir dos carriles: Comenzar sacando una bolita de color Negro o sacar una de color Rojo. Inmediatamente introducirla en el Buzón 2. En ambas situaciones, se aumenta en una bolita el espacio muestral o número total de bolitas del segundo buzón.

· Segundo evento: Sacar una bolita del Buzón 2,- después de haber introducido la bolita que proviene del Buzón 1, - la cual también sigue los dos mismos carriles (N o R)-,

Pregunta: ¿Cuál es la probabilidad que sea roja?

Para responder esta pregunta, se  construye un diagrama en árbol, donde se definen dos carriles, y  se asocia la probabilidad cada a cada rama. Nótese que Cada carril cuenta con dos ramas. (Utilizar Aplicación con parametros (2,2,0) para dibujarlo)


Diagrama 1

En el diagrama de árbol a continuación, asociamos las probabilidades a cada rama.


Diagrama 2

Primero se definen los eventos o sucesos con una notación clara:

Evento 1

i) Suceso N: Sacar una bolita negra, probabilidad 3/5)
ii) Suceso R: Sacar una bolita roja, probabilidad 2/5)

De ahí, utilizaremos la notación convencional, sobre el segundo evento condicionado:
 

Evento 2 (i)
• Sacar una bolita negra cuando la primera fue negra, N/N
• Sacar una bolita roja cuando la primera fue negra, R/N
 

Evento 2 (ii)
• Sacar una bolita negra cuando la primera fue roja, N/R
• Sacar una bolita roja cuando la primera fue roja, R/R
 

 Después marcamos con un circulo rojo cada uno de los rojos posibles de sacar del Buzón 2.

A partir del diagrama, calculamos la probabilidad de sacar una bolita roja del Buzón 2, dado el experimento en cuestión. Respondiendo la pregunta formulada:  ¿Cuál es la probabilidad que sea roja?

(Nótese que esto significa que primero calcularemos la Probabilidad Total del sacar una bolita roja)

La regla de ir calculando la probabilidad total de un experimento condicionado, basado en el diagrama de árbol es simple y ordenado. Cuando vamos por un carril (ramas consecutivas), se van multiplicando las probabilidades asociadas a las ramas (conectiva booleana conjunción y).


Diagrama 3

Enseguida en el diagrama ,  nos movemos por el Carril Rojo y usamos la regla de la suma. Es decir, cuando bifurcan los carriles, entonces se debe sumar las probabilidades (conectiva booleana v, disyunción o) . De ese modo llegamos al suceso bolita Roja, usando regla de la multiplicación y la regla de la suma.


Diagrama 4

Nótese que la suma de las probabilidades de las ramas bifurcadas siempre debe sumar 1.

Ahora, veamos qué se preguntaría el reverendo Thomas Bayes, autor del teorema que analizaremos más adelante:

¿Cuál es la probabilidad de sacar una bolita roja del segundo buzón, dado que la primera bolita fue negra?
 

Llamemos PB(R/N) a esta probabilidad formulada por Bayes, para tener una notación coherente.


La respuesta es fácil, y sin mayor análisis mostramos la operación. En efecto, ahora que tenemos diagramado el árbol y las probabilidades asociadas a cada rama en el Diagrama 2. De modo que tenemos la probabilidad de sacar una bolita roja del segundo evento cuando partimos por el carril de las negras, P(R/N) y también tenemos la probabilidad total de Roja [1]. Por tanto,

Es decir, tomamos la probabilidad de sacar una bolita roja, cuando partimos por el carril de las negras y lo dividimos por la probabilidad total de sacar una roja calculada en [1] y ahí tenemos una aplicación concreta del Teorema de Bayes.

Formalizando el Experimento 1

Observamos que el Evento2 está condicionado por el Evento1, por eso son eventos llamados mutuamente excluyentes (o independientes). Es decir, para que ocurra el segundo evento debe ocurrir el primero. Otra propiedad de estos eventos, es que su probabilidad siempre es diferente de cero.

• p(A B) = p(A) • p(B). Es la probabilidad del suceso consecutivo de A y B.
Si se sigue una de los dos carriles del árbol, en la medida que avancemos por cada rama iremos aplicando la multiplicación de las probabilidades que están asociada a la conectiva (conjunción) del Algebra de Boole, o equivalentemente a la intersección de la Teoría de Conjuntos. Se dice p(A B) = p(A) • p(B) si los sucesos A y B son independientes.

• p(A B) = p(A) + p(B). Es la probabilidad que ocurra el procesa A o el procesos B. (Ver axioma de la probabilidad, Regla de la Adición)
Si se bifurca por uno de los carriles, se aplica la suma de la probabilidades que siguen por la rama, dado que se asocia la conectiva v (disyunción) del Algebra Booleana, o equivalentemente la unión de la Teoría de conjuntos. Nótese que siempre estamos aplicando esta regla a conjuntos disjuntos (A B = Φ).

Entonces, el proceso estocástico se dará sobre los buzones 1 y 2, los cuales están cargados inicialmente con bolitas negras y rojas. Al poner en movimiento el experimento, observamos que cada uno de los eventos que lo constituyen, son sucesos probabilísticas y parte del espacio muestral (número total de posibilidades del experimento).

Por tanto, la expresión con notación formal del calculo de la probabilidad en [1] es:

Pc(R) = P(N)·P(R/N)+P(R)·P(R/R)

Y la expresión con notación formal, calculada en [2] de acuerdo al Teorema de Bayes  es:

Es decir, PB(R/N) en el marco del Experimento1, responde la pregunta ¿Cuál es la probabilidad de sacar una bolita roja del segundo buzón, dado que la primera bolita fue negra?

II. Experimento Dado el Arbol y Cantidades

Experimento 2

Realicemos un experimento al revés, donde está dado un diagrama de árbol con cinco fuentes de entregables, los cuales - en un segundo evento-, pueden ser rechazados o aprobados. Los valores de cada carril y rama son absolutos y nos preguntan:

 ¿Cuál es la probabilidad de que un entregable Aprobado provenga de D?.

Transcribamos el árbol en tablas para determinar sus distribuciones probabilísticas. Al tener las cantidades de entregables A, B, C , D y E , con sus respectivas distribuciones en el segundo evento de Rechazados o Aprobados, entonces podemos asumir y asignar sus probabilidades. En efecto, la suma de los entregables es el espacio muestral del primer evento, los cuales suman 200 entregables:

E1: Distribución Cantidades por Carriles de Entregables
A B C D E Total
40 25 30 55 50 200

E1: Distribución de Probabilidades por Carril
 de Entregables
P(A) P(B) P(C) P(D) P(E)
40/200 25/200 30/200 55/200 50/200
0.2 0.125 0.15 0.275 0.25

A continuación la distribución por ramas del segundo evento E2:

E2: Distribución de Rechazo o Aprobaciones por Carril
A B C D E
Rechazado Aprobado Rechazado Aprobado Rechazado Aprobado Rechazado Aprobado Rechazado Aprobado
10 30 12 13 14 16 25 30 8 42
10/40 39/40 12/25 13/25 14/30 16/30 25/55 30/55 8/50 42/50
0.25 0.75 0.48 0.52 0.47 0.53 0.45 0.55 0.16 0.84
1 1 1 1 1

Por tanto la Probabilidad Total de ser un Entregable Aprobado es:

 

y la probabilidad de que un entregable Aprobado que proviene de D, la obtenemos aplicando Bayes. Por tanto,  siguiendo el carril E hasta Aprobado y diviendo ese valor por la Probabilidad Total de Los Aprobados:

Formalmente con la notación que estamos usando, la expresión queda así:

 

III. Asociando Datos Estadísticos

A continuación ilustraremos como se asocia la frecuencia relativa, capturada como dato,  a la la probabilidad del evento. En efecto, el uso práctico en el transporte, medicina, finanzas,  usabilidad de determinadas navegaciones o rutinas de los usuarios en un sistema, o en todas las actividades y disciplinas donde se recaban datos en forma sistemática y bien clasificada, se utiliza como probabilidad la proporción del espacio muestral que ocupa. Estas observaciones, pueden ir creciendo en el tiempo. Es decir, la proporcionalidad de lo coeficientes y del tamaño del espacio muestral son dinámicos.

En efecto, se asume que cuando las repeticiones son  grandes y su número de observaciones crece en forma indefinida, entonces  la frecuencia relativa converge hacia la probabilidad del evento, y  se considera que las frecuencias relativas tienden a estabilizarse. La noción de frecuencia o de "a posteriori" es entonces de tipo empírico.

Es necesario comprender que cuando la escala en ordenes de magnitud aumenta, seguramente variables discretas hay que intentar tratarlas como continuas e incorporar la estadística y modelos estadísticos bayesianos computacionalmente.

Experimento 3

En un sector de la ciudad, se contabilizaron 220.000 pasajeros que viajan en un período determinado, - entre las 12:00 y las 13:00 horas -, las cifras señalan que el 20% de esta población se transporta en la línea E1, un 35% se moviliza en la línea E2 y el restante en otras líneas (Llamemos E3).

Distribución - Evento1
E1 fr E2 fr E3 fr
77.000 35% 44.000 20% 99.000 45%

La estadística muestra además que el 25% que ocupa la línea E1 son hombres, el 15% de los hombres la línea E2 y el 60% de las mujeres viaja en las otras líneas de transporte.

Las distribuciones discretas de probabilidad se muestran, es las siguientes tablas a continuación:

Distribución Género por Líneas
E1 E2 E3
H M H M H M
25% 75% 15% 85% 40% 60%


 

¿Cuál es la probabilidad que un hombre haya utilizado la línea de transporte E2?


Diagrama 5

Es claro que se definen tres carriles en el Diagrama 5 de árbol, E1, E2 y E3. Donde cada uno de ellos cuenta con dos ramas binarias de género. Por tanto los eventos son:  Pasajeros que pueden utilizar una de las tres líneas y desde ahí, el evento que el Pasajero pueda ser hombre.

La Probabilidad Total de ser Hombre se calcula como:

 Pc(H) = P(E1) · P(H/E1) + P(E2) · P(H/E2) + P(E3)·P(H/E3)

Es decir, en términos numéricos:

Aplicando el Teorema de Bayes:

 

IV. Formalización Matemática del Teorema de Bayes

Sea E un evento de un espacio muestral S, y sean A1,A2,A3,...,An , eventos disjuntos, cuya unión es S.  (Ver concepto de Partición en Conjuntos)

Entonces para i = 1,2,3,....n,  se tiene la siguiente fórmula:

Se considera que los eventos A = {A1,A2,A3,...,An} son causas posibles del evento E, de ahí que el Teorema de Bayes nos permite estimar la probabilidad de que un elemento particular de  A ocurra siempre que el suceso E haya ocurrido.

Nótese que una sucesión de observaciones A1,A2,A3,...,An se denomina Proceso Estocástico, cuando los valores de los Ai no son predecibles exactamente, pero si es posible tener sus probabilidades y responden a una relación de orden (generalmente en el tiempo).

V. Conclusión

La importancia que tiene para empresas como DocIRS, donde uno de sus focos es el tratamiento documental de datos, análisis estadístico de contenidos, desarrollo y gestión de plataformas tecnológicas, para el control y seguimiento de proyectos y contratos, es entender que el Teorema de Bayes nos ayuda y nos induce a abrir conocimiento permanentemente, mejorar los algoritmos y la gestión de calidad.

La experiencia directa y sorprendente en DocIRS e inimaginable para cualquier pedagogo de la matemática, nos demuestra que un joven programador de computadoras, puede ir haciendo y desarrollando complejos algoritmos, sin tener el más mínimo conocimiento formal, ni teórico de la matemática. Tengo evidencias fehacientes de programadores, que en varias ocasiones han construido complicadas funciones  en un lenguaje de alta programación-, respondiendo a un requerimiento determinado de un sistema.

En efecto, al analizar los códigos de lo desarrollado, siempre encuentro relaciones complejas y múltiples, recurrencia, condicionales anidados con lógica de Boole, aplicación de series, espacios de probabilidades y clases de intervalos. Todas la rutinas las han construido intuitivamente, sin saber siquiera que existen esos conceptos, teoremas, propiedades y definiciones. Ni siquiera conocen su notación matemática y menos Teoría de la Medida. El logro es sólo por su oficio con el computador, en su lenguaje de programación y manejo que tienen sobre Internet.

Por esa razón, dada una exigencia en una de nuestras plataformas, desarrollé una simple rutina a modo de ejemplo, donde apliqué el Teorema de Bayes, - sin mencionar el teorema, ni nada por el estilo -, solo utilizando un diagrama de árbol para la estimación de los resultados. La expliqué y traspasé al equipo de desarrollo asignándoles una serie de tareas  análogas, pero más complejas. La experiencia me demostró una vez más, que es posible transmitir un conocimiento en forma "mecánica" o por recetas de cocina, como dirían los académicos.

En efecto, una acertada aplicación del Teorema de Bayes nos fue señalando cómo debemos ir adaptando nuestros procesos, en función de las probabilidades, estimadas desde los datos almacenados en las bases de datos, requerimientos y accesos de usuarios, incidentes, fallas, reclamos, funcionamiento de nuestro networking, seguridad de la información, evolución del negocio del cliente, elementos que se están generando permanentemente.

La estadística bayesiana de las transacciones en nuestras plataformas, las iniciamos con un conjunto de supuestos, que nos han permitido ir ajustándolos y mejorándolos en función de la evidencia empírica que recolectamos diariamente. Colección de datos que permiten estar creando posibles escenarios, probando y analizando, a fin de determinar resultados  y su posible variabilidad, con eventos independientes, o dependientes,  variables aleatorias, distribuciones de probabilidad, regresión lineales y proyecciones futuras.

 

 

Artículos Relacionados
Logo DocIRS : Grafo conexo definido como árbol
Arbol Scoring de Crédito ~ DocIRS
Geometrías Cualitativas
Algoritmo de Arquímedes para el Cálculo de PI
Análisis de una función logarítmica asintótica en los Reales
Logit: Función de distribución dicotómica para el Scoring
Algoritmo de Arquímedes para el Cálculo de PI
Algoritmo para el Cambio de Base Numérica
El Profesor Josegonzky resuelve ganar al hipnotizador
Modelo de estimación del factor Fc ~ Acerca de variables de entorno
El Problema de la Ruta Óptima para Visitar Clientes (Simulador y Matrices)
Modelo Insumo-Producto, Costeo y Arquitectura de Negocios
Algoritmo Indicadores PMO
Fundamentos de los Lenguajes Estructurados.
Estimación de Precios de los Servicios-Productos DocIRS, Bajo el Modelo SAAS 
Complemento de Conceptos Matemáticos ~ Mínimos Cuadrados
Complemento de Conceptos Matemáticos ~ Regresión Múltiple
Complemento de Conceptos Matemáticos ~ Distancia de un Punto a una Recta
Descripción Algoritmo de Distribución Aleatoria de Suma 1
Algoritmo en Acción ~ Herramienta de Distribución Aleatoria de Suma 1
Por Tramos: Simulación Aleatoria de Algoritmo DocIRS para la Ruta Optima
Por Permutaciones: Simulación Aleatoria de Algoritmo DocIRS para la Ruta Optima
Ejemplo Simple Permutaciones para la Ruta Optima
Descripción Algoritmo Cuadrados Mágicos Impares
Aplicación MagicoDocIRS v1.0 ~ Algoritmo Cuadrados Mágicos Impares




Anexos del Artículo

Un problema para el lector

Experimento 3

Continuemos diseñando un experimento  que es una variante más compleja del experimento anterior, pero con magnitudes mayores, a fin de ir comprendiendo que la aplicación del Teorema de Bayes, - (que formalizaremos matemáticamente al final del articulo)-, requiere necesariamente la utilización del computador. Aún más, principalmente la combinatoria de muchos eventos exige el tratamiento computacional. Así mismo la graficación del correspondiente diagrama de árbol.

Supóngase   en forma limitada un problema de probabilidades de transporte público.  Haremos abstracción de estaciones del año, días, horarios -, así mismo, inventaremos las distribuciones probabilísticas de datos. En efecto,  trabajaremos con cifras de pasajeros que van utilizar la Línea 1 del Metro de Santiago de Chile, ingresando en la vecindad del barrio Estación Central.

Nótese que sabemos que, - para cualquier empresa de transporte metropolitano-, contar los ingresos en las estaciones, son datos capturables mediante la tarjeta BIP (o torniquetes). No obstante, también sabemos que la estimación de las afluencias de salida, se emplean otras técnicas estadísticas para obtener mediciones. La variables género son aun más difíciles de medir, sólo las introduje para hacer más complicado el experimento.

Los pasajeros que analizaremos ficticiamente, realizan sus ingresos por una de las tres siguiente estaciones: Universidad de Santiago (E7); Estación Central (E8) o Unión Latinoamericana (E9). La Línea 1 del Metro de Santiago de Chile tiene 27 estaciones. Es decir, no consideraremos las otras líneas existentes.
 

Esto implica que se bajarán en una estación del metro de la Línea 1, diferente a donde se subieron. (No consideramos transbordos a las otras líneas existentes de Metro de Santiago).

Los pasajeros que analizaremos pueden ser estudiantes (ES) o no estudiantes (NE), de género Femenino o Masculino.
 

Ahora asignaremos probabilidades en porcentajes estadísticos ficticios. La tabla con la probabilidad de salida de las 27 estaciones se hizo con una distribución aleatoria (Ver Algoritmo en Acción ~ Herramienta de Distribución Aleatoria de Suma 1), a fin de seguir aproximándonos al Teorema de Bayes de una más compleja, pero siempre heurística.

Distribución Ingresos
Sigla Nombre Estación % de Ingreso
E7 Universidad de Santiago 45%
E8 Estación Central 30%
E9 Unión Latinoamericana 25%

 

Distribución Estudiantes
E7 E8 E9
ES NE ES NE ES NE
55%   25%   35%  

 

Distribución Género por Líneas
E7 E8 E9
H M H M H M
60% 40% 48% 52% 55% 45%

 

Distribución Salidas
Sigla Nombre Estación % de Salida
E1 San Pablo 4.20
E2 Neptuno 2.52
E3 Pajaritos 2.52
E4 Las Rejas 5.72
E5 Ecuador 1.68
E6 San Alberto Hurtado 1.68
E7 Universidad de Santiago 1.68
E8 Estación Central 5.04
E9 Unión Latinoamericana 1.68
E10 República 5.88
E11 Los Héroes 6.72
E12 La Moneda 3.36
E13 Universidad de Chile 6.72
E14 Santa Lucía 3.36
E15 Universidad Católica 3.36
E16 Baquedano 8.40
E17 Salvador 3.36
E18 Manuel Montt 1.68
E19 Pedro de Valdivia 4.20
E20 Los Leones 2.52
E21 Tobalaba 6.72
E22 El Golf 4.20
E23 Alcántara 2.52
E24 Escuela Militar 1.84
E25 Manquehue 2.52
E26 Hernando de Magallanes 3.36
E27 Los Dominicos 2.52

 


Diagrama Agregado del Experimento 3

El numero de combinaciones son 3 · 26 · 2 · 2 = 312, dado que se pueden elegir 3 carriles; después se pueden elegir 26 estaciones diferentes (una de las 27 fue ocupada por el carril inicial); dos posibilidades de ser estudiante o no;  y finalmente 2 posibilidades (hombre o mujer)

Carriles Estaciones Estudiantes Género
3 26 2 2

 

A fin de no tener que mostrar por extensión cada uno de los senderos, hemos agregado las estaciones en un conjunto E, de ese modo la rutina en javascript  sólo ilustrará con 12 carriles las combinaciones, asumiendo que cada sendero se configura con un elemento del conjunto E. Por ejemplo: E7E11-ES-HO, que significa que salió de la estación E7, se bajó en E11 que era un estudiante hombre.

Combinatoria Resultado del javascript
Carril1={E7E1,E7E2,E7E3,E7E4,E7E5,E7E6,E7E8,E7E9,E7E10,E7E11,E7E12,E7E13,
 E7E14,E7E15,E7E16,E7E17,E7E18,E7E19,E7E20,E7E21,E7E22,E7E23,E7E24,E7E25,E7E26,E7E27}|SE|MU
Carril1={E7E1,E7E2,E7E3,E7E4,E7E5,E7E6,E7E8,E7E9,E7E10,E7E11,E7E12,E7E13,
 E7E14,E7E15,E7E16,E7E17,E7E18,E7E19,E7E20,E7E21,E7E22,E7E23,E7E24,E7E25,E7E26,E7E27}|SE|HO
Carril1={E7E1,E7E2,E7E3,E7E4,E7E5,E7E6,E7E8,E7E9,E7E10,E7E11,E7E12,E7E13,
E7E14,E7E15,E7E16,E7E17,E7E18,E7E19,E7E20,E7E21,E7E22,E7E23,E7E24,E7E25,E7E26,E7E27}|NE|MU
Carril1={E7E1,E7E2,E7E3,E7E4,E7E5,E7E6,E7E8,E7E9,E7E10,E7E11,E7E12,E7E13,
E7E14,E7E15,E7E16,E7E17,E7E18,E7E19,E7E20,E7E21,E7E22,E7E23,E7E24,E7E25,E7E26,E7E27}|NE|HO
Carril2={E8E1,E8E2,E8E3,E8E4,E8E5,E8E6,E8E7,E8E9,E8E10,E8E11,E8E12,E8E13,
E8E14,E8E15,E8E16,E8E17,E8E18,E8E19,E8E20,E8E21,E8E22,E8E23,E8E24,E8E25,E8E26,E8E27}|SE|MU
Carril2={E8E1,E8E2,E8E3,E8E4,E8E5,E8E6,E8E7,E8E9,E8E10,E8E11,E8E12,E8E13,
E8E14,E8E15,E8E16,E8E17,E8E18,E8E19,E8E20,E8E21,E8E22,E8E23,E8E24,E8E25,E8E26,E8E27}|SE|HO
Carril2={E8E1,E8E2,E8E3,E8E4,E8E5,E8E6,E8E7,E8E9,E8E10,E8E11,E8E12,E8E13,
E8E14,E8E15,E8E16,E8E17,E8E18,E8E19,E8E20,E8E21,E8E22,E8E23,E8E24,E8E25,E8E26,E8E27}|NE|MU
Carril2={E8E1,E8E2,E8E3,E8E4,E8E5,E8E6,E8E7,E8E9,E8E10,E8E11,E8E12,E8E13,
E8E14,E8E15,E8E16,E8E17,E8E18,E8E19,E8E20,E8E21,E8E22,E8E23,E8E24,E8E25,E8E26,E8E27}|NE|HO
Carril3={E9E1,E9E2,E9E3,E9E4,E9E5,E9E6,E9E7,E9E8,E9E10,E9E11,E9E12,E9E13,
E9E14,E9E15,E9E16,E9E17,E9E18,E9E19,E9E20,E9E21,E9E22,E9E23,E9E24,E9E25,E9E26,E9E27}|SE|MU
Carril3={E9E1,E9E2,E9E3,E9E4,E9E5,E9E6,E9E7,E9E8,E9E10,E9E11,E9E12,E9E13,
E9E14,E9E15,E9E16,E9E17,E9E18,E9E19,E9E20,E9E21,E9E22,E9E23,E9E24,E9E25,E9E26,E9E27}|SE|HO
Carril3={E9E1,E9E2,E9E3,E9E4,E9E5,E9E6,E9E7,E9E8,E9E10,E9E11,E9E12,E9E13,
E9E14,E9E15,E9E16,E9E17,E9E18,E9E19,E9E20,E9E21,E9E22,E9E23,E9E24,E9E25,E9E26,E9E27}|NE|MU
Carril3={E9E1,E9E2,E9E3,E9E4,E9E5,E9E6,E9E7,E9E8,E9E10,E9E11,E9E12,E9E13,
E9E14,E9E15,E9E16,E9E17,E9E18,E9E19,E9E20,E9E21,E9E22,E9E23,E9E24,E9E25,E9E26,E9E27}|NE|HO

Javascript que genera combinaciones

<script language="javascript">

//función para el tratamiento bidimensional de arreglos
function CreaArreglo2D(filas) {
var arr = [];
for (var i=0;i<filas;i++) {
arr[i] = [];
}
return arr;
}

//Parámetros de Ingreso
var NumIngresos=3
var NumEstaciones=27

///Estaciones de Inicio Evento 1
var evento1=new Array()
evento1[1]=7     
evento1[2]=8
evento1[3]=9

///Evento 2 dicotómico, Estudiante o No
var evento2=new Array()
evento2[1]="SE"
evento2[2]="NE"

///Evento 2 dicotómico, Género
var evento3=new Array()
evento3[1]="MU"
evento3[2]="HO"

///Vectores auxiliares
var arreglo=new Array()
var s=new Array()
 

///Combinatoria excluyendo estación de partida
for (var i=1;i<=NumIngresos;i++)
{
  var k=0
  s[i]=""
for (var j=1;j<=NumEstaciones;j++)
{
  if (evento1[i]!=j)
   {
    k=k+1
    if (k<(NumEstaciones-1))
   {
      arreglo[k]="E" + evento1[i]+"E" + j + ","
      s[i]=s[i] + arreglo[k]
   }
else
   {
    arreglo[k]="E" + evento1[i]+"E" + j
    s[i]=s[i]+arreglo[k]
   }
 }
}
  s[i]="{" + s[i] + "}"
}
 for (var i=1;i<=3;i++)
 {
x=CreaArreglo2D(6)
for (var j=1;j<=2;j++)
{
 if (j==1)
 {
  x[i][j]=s[i] + "|" + evento2[j] + "|"
  for (var k=1;k<=2;k++)
  {
   if (k==1)
    {document.write("Carril"+ i + "=" + x[i][j]+"MU<br>")}
   else
    {document.write("Carril"+ i + "=" + x[i][j]+"HO<br>")}
  }
 }
else
 {
  x[i][j]=s[i] + "|" + evento2[j] + "|"
  for (var k=1;k<=2;k++)
  {
   if (k==1)
   {document.write("Carril"+ i + "=" + x[i][j]+"MU<br>")}
    else
   {document.write("Carril"+ i + "=" + x[i][j]+"HO<br>")}
   }
  }
 }
}
</script>

 

Pautas Javascript para el Diagrama de Arbol (ver Collapsible Tree - Ocks)

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Diagramación de Arbol para Bayes</title>
    <style>
	.node circle {
	  fill: #fff;
	  stroke: steelblue;
	  stroke-width: 1px;
	}
	.node text {font: 11px Arial Narrow; }
	.link {
	  fill: none;
	  stroke: #ccc;
	  stroke-width: 1px;
	}
    </style>
  </head>
  <body>
<!-- load the d3.js library -->	
<script src="http://d3js.org/d3.v3.min.js"></script>
	
<script>
var treeData = [
  {
    "name": "Partida",
    "parent": "null",
    "children": [
{
        'name': 'E7',
        'parent': 'Partida',
        'children': [
          {
            'name': 'E7E1, ',
            'parent': 'E7',
			'children': [
{
			'name': 'S',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
{
			'name': 'N',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
            ]
          },
///////////////////////////////////////
          {
            'name': 'E7E2, ',
            'parent': 'E7',
			'children': [
{
			'name': 'S',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
{
			'name': 'N',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
            ]
          },
		  
///////////////////////////////////////
          {
            'name': 'E7E3, ',
            'parent': 'E7',
			'children': [
{
			'name': 'S',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
{
			'name': 'N',
            'parent': 'E7',
			'children': [
			{
			'name': 'MU',
            'parent': 'E7'
            },
			{
			'name': 'HO',
            'parent': 'E7'
            }
			]
},
            ]
          },
////////////////////////////////
		  ]
      }
    ]
 }
];
// ************** Generar diagrama	 *****************
var margin = {top: 40, right: 120, bottom: 20, left: 120},
	width = 960 - margin.right - margin.left,
	height = 500 - margin.top - margin.bottom;
	
var i = 0;
var tree = d3.layout.tree()
	.size([height, width]);
var diagonal = d3.svg.diagonal()
	.projection(function(d) { return [d.x, d.y]; });
var svg = d3.select("body").append("svg")
	.attr("width", width + margin.right + margin.left)
	.attr("height", height + margin.top + margin.bottom)
  .append("g")
	.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
root = treeData[0];
  
update(root);
function update(source) {
  // Compute the new tree layout.
  var nodes = tree.nodes(root).reverse(),
	  links = tree.links(nodes);
  // Normalize for fixed-depth.
  nodes.forEach(function(d) { d.y = d.depth * 100; });
  // Declare the nodes;
  var node = svg.selectAll("g.node")
	  .data(nodes, function(d) { return d.id || (d.id = ++i); });
  // Enter the nodes.
  var nodeEnter = node.enter().append("g")
	  .attr("class", "node")
	  .attr("transform", function(d) { 
		  return "translate(" + d.x + "," + d.y + ")"; });
  nodeEnter.append("circle")
	  .attr("r", 10)
	  .style("fill", "#fff");
  nodeEnter.append("text")
	  .attr("y", function(d) { 
		  return d.children || d._children ? -18 : 18; })
	  .attr("dy", ".35em")
	  .attr("text-anchor", "middle")
	  .text(function(d) { return d.name; })
	  .style("fill-opacity", 1);
  // Declare the links;
  var link = svg.selectAll("path.link")
	  .data(links, function(d) { return d.target.id; });
  // Enter the links.
  link.enter().insert("path", "g")
	  .attr("class", "link")
	  .attr("d", diagonal);
}
</script>
 </body>
</html>