El programa Elvira está destinado a la edición y evaluación de modelos gráficos probabilistas, concretamente redes bayesianas y diagramas de influencia. Elvira cuenta con un formato propio para la codificación de los modelos, un lector-intérprete para los modelos codificados, una interfaz gráfica para la construcción de redes, con opciones específicas para modelos canónicos (puertas OR, AND, MAX, etc.), algoritmos exactos y aproximados (estocásticos) de razonamiento tanto para variables discretas como continuas, métodos de explicación del razonamiento, algoritmos de toma de decisiones, aprendizaje de modelos a partir de bases de datos, fusión de redes, etc.
Elvira está escrito y compilado en Java, lo cual permite que funcione en diferentes plataformas y sistemas operativos (MS-DOS/Windows, linux, Solaris, etc.).
Ejemplo 1. Para una enfermedad que tiene una prevalencia del 8% existe una prueba que tiene una sensibilidad del 75% y una especificidad del 96% respecto de dicha enfermedad. ¿Cuáles son los valores predictivos de la prueba?
Vemos que en este problema intervienen dos variables: Enfermedad y Prueba. La enfermedad puede tener dos valores, presente y ausente, y la prueba puede dar dos resultados, positivo y negativo. Dado que la primera variable influye causalmente sobre la segunda, vamos a trazar un enlace Enfermedad->Prueba.
Luego hacemos clic en el lugar donde queremos que aparezca el nodo Enfermedad. Haciendo doble-clic sobre este nodo, se abre la ventana Propiedades de nodo. En el campo Título de esta ventana escribimos Enfermedad. Pulsando en la pestaña Valores de la misma ventana podemos comprobar que los valores que Elvira ha asignado por defecto a esta variable son "presente" y "ausente", precisamente los que nosotros deseábamos. Por eso pulsamos el botón Aceptar.
Del mismo modo creamos un segundo nodo, hacemos doble-clic sobre él para abrir la ventana Propiedades de nodo, y en el campo Título escribimos Prueba. En la pestaña Valores de esta ventana, vamos al campo Tipo de valores y en la lista desplegable seleccionamos Positivo-Negativo. Luego pulsamos en Aceptar para cerrar la ventana.
Para completar la estructura de la red, vamos a añadir un
enlace desde primer nodo hasta el segundo. Primero hemos de cambiar
de la herramienta Añadir nodo aleatorio ()
a Añadir enlace dirigido (
),
que está también en la segunda barra de herramientas. Después
hay que arrastrar el ratón desde el nodo origen, Enfermedad, hasta
el nodo destino, Prueba. ("Arrastrar" significa pulsar con el botón
izquierdo del ratón sobre el nodo Enfermedad y, sin soltar el botón,
desplazamos el puntero hasta el nodo Prueba.) El resultado debe ser similar
al que aparece en la figura anterior.
Si desea mover de posición un nodo, cambie a la herramienta
Selección
pulsando en el icono correspondiente de la segunda barra de herramientas
() y arrástrelo con
el ratón.
Nota sobre los nombres de los nodos. En
Elvira cada nodo tiene un nombre y, opcionalmente, un título. La
diferencia es que el nombre es más restrictivo en cuanto al tipo de
caracteres que puede contener; por ejemplo, el nombre no puede contener
espacios, mientras que el título sí. Además, Elvira a veces da
problemas cuando el nombre de un nodo tiene eñes o caracteres
acentuados. Por eso recomiendamos que el nombre contenga sólo letras
(excepto la "ñ") sin acentuar, números y el guión bajo, "_".
Generalmente, Elvira muestra el título de cada nodo (si lo tiene; si
no, muestra el nombre). Este comportamiento puede cambiarse escogiendo
la opción Ver / Por nombre en vez de Ver / Por título.
Para la variable Enfermedad, la TPC viene dada por su prevalencia, que nos dice que P(Enfermedad=presente) = 0.08. Para introducir este dato, hacemos doble-clic sobre el nodo Enfermedad y seleccionamos la pestaña Relación; en el menú Tipo de relación escogemos "General", luego escribimos el 0.09 en la casilla correspondiente y pulsamos la tecla Intro. Observe que el valor la celda inferior cambia a 0.92, porque la suma de las probabilidades debe ser la unidad.
En esta figura aparecen ambas probabilidades porque está seleccionado el botón Todos los parámetros. En cambio, si seleccionamos el botón Parámetros independientes sólo aparece el valor 0.08; el valor 0.92 no aparece, porque no es necesario mostrarlo.
Para la variable Prueba, la TPC se construye teniendo en cuenta que la sensibilidad (75%) es la probabilidad de que la prueba dé positivo cuando la enfermedad está presente, y la especificidad (96%) es la probabilidad de que la prueba dé negativo cuando la enfermedad está ausente. La TPC introducida en Elvira debe quedar así:
En principio, el grafo de la red no ofrece información sobre
las probabilidades condicionadas. Sin embargo, al pulsar el botón ,
Elvira ofrece una idea aproximada de la información numérica
contenida. Esto hace que cada nodo se muestre con un color y una anchura
propios. Hablando grosso modo, los enlaces coloreados en rojo indican
que hay una influencia positiva, es decir que al aumentar el valor del
nodo padre aumenta el valor del nodo hijo; los enlaces en azul indican
influencia negativa; los enlaces negro indican que el enlace no transmite
información; los enlaces en violeta indican que hay influencia ambigua,
es decir, que en unos para ciertos valores del padre hay influencia positiva
y para otros negativa. Cuanto mayor es la influencia de un nodo sobre otro,
mayor es la anchura del enlace.
Se observa que la segunda barra de herramientas ha cambiado: han desaparecido los botones de edición, como cortar, copiar y pegar, y han aparecido otros botones y campos nuevos: umbral de expansión, guardar caso en fichero, guardar caso en memoria, expandir/contraer nodo, opciones de inferencia, etc.
Hay un segundo cambio, no visible para el usuario, que consiste en que Elvira crea una estructura de datos interna, que será utilizada para calcular la probabilidad de cada variable. Este proceso, conocido como compilación de la red, es el que hace que para redes grandes Elvira tarde unos segundos en pasar de modo edición a modo inferencia.
También se observa que los nodos se han expandido. De hecho,
en el ejemplo que estamos describiendo, comprobamos que al pasar a modo
inferencia, Elvira nos muestra la probabilidad de cada valor de dos modos:
mediante una barra de longitud proporcional a la probabilidad y mediante
un número. Como aún no hemos introducido ningún hallazgo,
aparecen las probabilidades a priori. La probabilidad de Enfermedad=presente
es 0.08, uno de los datos que habíamos introducido de acuerdo con
el enunciado del problema. En cambio, la probabilidad a priori para la
variable prueba ha sido calculada por Elvira. En efecto, podemos comprobar
que
P(Prueba=positivo) = | P(Prueba=positivo| Enfermedad=presente)×P(Enfermedad=presente) | |
+ P(Prueba=positivo| Enfermedad=ausente)×P(Enfermedad=ausente) | ||
= | 0.75×0.08 + 0.04×0.92 = 0.0968 | |
P(Prueba=negativo) = | P(Prueba=negativo| Enfermedad=presente)×P(Enfermedad=presente) | |
+ P(Prueba=negativo| Enfermedad=ausente)×P(Enfermedad=ausente) | ||
= | 0.25×0.08 + 0.96×0.92 = 0.9032 |
En principio, Elvira muestra los valores numéricos con dos decimales. Para ver más decimales, seleccione la opción Ver de la barra de menú y escoja la Precisión que desee.
La forma de introducir un hallazgo en Elvira consiste en hacer doble-clic en el valor correspondiente. En este caso, debemos ir al nodo Prueba y hacer doble-clic en "positivo". Se observa que la probabilidad de "Prueba=positivo" pasa a ser 1, porque conocemos con certeza este valor, y la probabilidad del otro valor, "Prueba=negativo", pasa a ser 0, porque los valores de una variable son mutuamente exclusivos. También se observa que la probabilidad de Enfermedad=presente ha aumentado de 0.08 a 0.62, que es precisamente el valor que estábamos buscando:
VPP = P(Enfermedad=presente| Prueba=positivo) = 0.62 = 62%
Comprobamos así que, como era de esperar, un resultado positivo en el test tiende a confirmar la presencia de la enfermedad.
El valor predictivo negativo (VPN) es la certeza con que podemos descartar la enfermedad cuando la prueba da negativo: P(Enfermedad=ausente|Prueba=negativo). Para calcularlo con Elvira, introducimos el hallazgo "Prueba=negativo" y vemos cuál es la probabilidad a posteriori para el valor "Enfermedad=ausente".
Si nos interesa observar cómo varía la probabilidad de
Enfermedad en función del resultado de la prueba, debemos almacenar
el caso de evidencia actual. (Un caso de evidencia se caracteriza
por un conjunto de hallazgos. En este caso, el único hallazgo que
tenemos es "Prueba=positivo".) Para almacenar el caso de evidencia actual
hay que pulsar en el icono Guardar el caso en memoria ()
de la segunda barra de herramientas. Se observa que en esta barra de herramientas
el campo de texto que decía
Caso número 1 sobre fondo
rojo, ahora dice Caso número 2 sobre fondo azul.
Ahora que estamos en el caso de evidencia nº 2, hacemos doble-clic sobre el valor "negativo" del nodo Prueba. La probabilidad de "Prueba=negativo" pasa a ser 1 y la de "Prueba=positivo" se queda en 0. Observamos también que P(Enfermedad=presente|Prueba=negativo) = 0.02 y P(Enfermedad=ausente|Prueba=negativo) = 0.98. Por tanto,
VPN = P(Enfermedad=ausente| Prueba=negativo) = 0.98 = 98%
con lo que queda resuelto el problema que teníamos planteado.
En la barra de inferencia hay un botón que permite borrar la evidencia del caso actual, y otro que permite borrar todos los casos de evidencia (excepto el caso inicial, correspondiente a la probabilidad a priori).
Observe que en esta figura hemos seleccionado Parámetros independientes en vez de Todos los parámetros. También hemos seleccionado Parámetros canónicos. Si seleccionamos TPC se mostrará la tabla de probabilidad condicionada, que se calcula a partir de los parámetros canónicos.
Una vez editado el grafo, se pueden introducir las tablas de probabilidad condicionada para los nodos Enfermedad y Prueba, como hemos indicado en el apartado 2.2.3. El nodo Terapia no tiene una tabla de probabilidad porque no representa una variable aleatoria sino una decisión, que se tomará en función de la información disponible, como veremos en el apartado siguiente. Sólo falta incluir la tabla de utilidad para el nodo Utilidad.
Para ello, haga doble clic en el nodo utilidad e introduzca los valores que aparecen en la siguiente figura:
Puede guardar este diagrama de influencia en disco.
De esta tabla se deduce que cuando la prueba da positivo la mejor decisión es aplicar la terapia (porque conlleva una mayor utilidad esperada: 8.38 frente a 5.66), mientras que cuando da negativo es mejor no aplicar la terapia (la utilidad es 9.845, frente a 8.978).