57 votos

Software para dibujar redes bayesianas (modelos gráficos)

Estoy buscando un software [gratuito] que pueda producir modelos gráficos de buen aspecto, por ejemplo

enter image description here

Se agradecerá cualquier sugerencia.

1 votos

¿Te refieres a dibujar imágenes como esta que enlazaste o a dibujar modelos listos desde algún otro software? Si es esto último, ¿de cuál?

0 votos

Dibujos como el que he enlazado

2 votos

Se creó manualmente en Inkscape Así que puedes intentar hacer lo mismo.

37voto

Judioo Puntos 625

Actualmente tengo un problema similar (dibujar diagramas de trayectorias múltiples para mi disertación), y por eso estaba examinando muchas de las opciones enumeradas aquí ya para dibujar diagramas similares. Muchos de los recursos listados para dibujar este tipo de gráficos vectoriales (como en microsoft office o google drawings) pueden producir diagramas de trayectoria realmente bonitos, con un esfuerzo bastante mínimo. Pero, parte de la razón por la que estaba insatisfecho con tales programas es que necesitaba producir muchos diagramas, con sólo cambios bastante menores entre cada diagrama (por ejemplo, añadir otro nodo, cambiar una etiqueta). Las herramientas de gráficos vectoriales de apuntar y hacer clic no son adecuadas para esto, y requieren más esfuerzo del necesario para hacer esos pequeños cambios. Además, resulta difícil mantener una plantilla entre muchos dibujos. Así que decidí examinar las opciones para producir tales gráficos programáticamente.

Graphviz, como ya fue mencionado por thias, estuvo muy cerca de tener todas las campanas y silbatos que quería para mis gráficos (así como un código bastante simple para producirlos), pero se quedó corto para mis necesidades en dos aspectos; 1) faltan fuentes matemáticas (por ejemplo, no estoy seguro de si se puede etiquetar un nodo con el $\beta$ en Graphviz, 2) las líneas curvas son difíciles de dibujar (ver este post sobre dibujar diagramas de recorrido utilizando Graphviz en el sitio web de @Stask). Debido a estas limitaciones, actualmente me he conformado (muy felizmente) con el uso del Tikz/pgf biblioteca de dibujo en Latex. A continuación se muestra un ejemplo de mi intento de reproducir su gráfico (¡el mayor dolor fueron las etiquetas en las esquinas inferiores derechas de las cajas!)

enter image description here

\documentclass[11pt]{report}
\usepackage{tikz}
\usetikzlibrary{fit,positioning}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\tikzstyle{main}=[circle, minimum size = 10mm, thick, draw =black!80, node distance = 16mm]
\tikzstyle{connect}=[-latex, thick]
\tikzstyle{box}=[rectangle, draw=black!100]
  \node[main, fill = white!100] (alpha) [label=below:$\alpha$] { };
  \node[main] (theta) [right=of alpha,label=below:$\theta$] { };
  \node[main] (z) [right=of theta,label=below:z] {};
  \node[main] (beta) [above=of z,label=below:$\beta$] { };
  \node[main, fill = black!10] (w) [right=of z,label=below:w] { };
  \path (alpha) edge [connect] (theta)
        (theta) edge [connect] (z)
        (z) edge [connect] (w)
        (beta) edge [connect] (w);
  \node[rectangle, inner sep=0mm, fit= (z) (w),label=below right:N, xshift=13mm] {};
  \node[rectangle, inner sep=4.4mm,draw=black!100, fit= (z) (w)] {};
  \node[rectangle, inner sep=4.6mm, fit= (z) (w),label=below right:M, xshift=12.5mm] {};
  \node[rectangle, inner sep=9mm, draw=black!100, fit = (theta) (z) (w)] {};
\end{tikzpicture}
\end{figure}
\end{document}
%note - compiled with pdflatex

Ahora, ya estoy escribiendo mi disertación en Latex, así que si sólo quieres la imagen sin tener que compilar todo un documento Latex es un poco inconveniente, pero hay algunas soluciones bastante menores para producir una imagen más directamente (ver esta pregunta en stackoverflow). Sin embargo, el uso de Tikz para un proyecto de este tipo tiene muchas otras ventajas

  • Amplia documentación. El manual de pgf te lleva de la mano al hacer algunos diagramas similares. Y una vez que te mojes los pies...
  • Una enorme biblioteca de ejemplos está ahí para demostrar cómo producir una gran variedad de gráficos.
  • Y por último, el Sitio de intercambio de pila textil es un buen lugar para hacer cualquier pregunta sobre Tikz. Tienen algunos magos por allí haciendo algunos gráficos bastante elegantes (echa un vistazo a su blog para algunos ejemplos).

En este momento no he considerado algunas de las bibliotecas para dibujar los diagramas en el paquete estadístico R directamente desde los modelos especificados, pero en el futuro puede que las considere en mayor medida. Hay algunos buenos ejemplos del Biblioteca qgraph para una prueba de concepto de lo que se puede lograr en R.

1 votos

Para aquellos interesados en dibujar diagramas de ruta para SEM (o para obtener más ideas sobre lo que se puede lograr en los productos de Microsoft Office), les sugiero que consulten Jeremy Mile's archivo ppt de diagramas de ruta (en la parte inferior de la página web de referencia).

1 votos

Gran respuesta, es un poco de curva de aprendizaje, pero como todo lo de TeX, creo que a la larga valdrá la pena. Gracias.

33voto

RAVI CHAWLA Puntos 1

Laura Dietz ha escrito un muy buen biblioteca para tikz que permite dibujar redes bayesianas en látex sin necesidad de usar tikz directamente.

Para demostrar este paquete, vea el siguiente ejemplo para esta pregunta:

\documentclass[11pt]{report}
\usepackage{tikz}
\usetikzlibrary{bayesnet}
\begin{document}
\begin{figure}
  \centering
  \tikz{ %
    \node[latent] (alpha) {$\alpha$} ; %
    \node[latent, right=of alpha] (theta) {$\theta$} ; %
    \node[latent, right=of theta] (z) {z} ; %
    \node[latent, above=of z] (beta) {$\beta$} ; %
    \node[obs, right=of z] (w) {w} ; %
    \plate[inner sep=0.25cm, xshift=-0.12cm, yshift=0.12cm] {plate1} {(z) (w)} {N}; %
    \plate[inner sep=0.25cm, xshift=-0.12cm, yshift=0.12cm] {plate2} {(theta) (plate1)} {M}; %
    \edge {alpha} {theta} ; %
    \edge {theta} {z} ; %
    \edge {z,beta} {w} ; %
  }
\end{figure}
\end{document}
%note - compiled with pdflatex

enter image description here

Aunque no es exactamente lo mismo, sin duda transmite la misma información y podría ajustarse para que se adapte mejor a las necesidades específicas. Este paquete genera cifras muy aceptables sin necesidad de aprender el paquete tikz completo.

1 votos

¡Esta biblioteca es impresionante! ¡Simplifica enormemente la creación de diagramas de redes bayesianas! Gracias por compartirla.

0 votos

He probado este software y aft-pgm, este es mucho más fácil de usar que el otro. Gracias al autor por el excelente software.

7voto

Abbey Puntos 11

Puedes probar GraphViz .

Esto permite especificar el gráfico en un archivo de texto y se dibujará automáticamente (evitando la superposición de flechas y demás). Ir a aquí (pdf) para un ejemplo mínimo y un manual.

5voto

Brettski Puntos 5485

Inkscape es esencialmente una versión gratuita de Adobe Illustrator, y es un programa muy fuerte para hacer gráficos vectoriales, como la imagen que has publicado. También funciona muy bien con la mayoría de los paquetes estadísticos para hacer ediciones/anotaciones finales/etc. a los gráficos - R, SAS, etc. puede dar salida a un gráfico como un PDF u otro formato vectorial (como .eps), y luego se puede llevar a Inkscape para jugar con los colores, símbolos, etiquetas de los ejes, etc.

0 votos

Prefiero las herramientas que tratan las flechas como objetos especiales: cuando muevo las variables, espero que las flechas las sigan. Parece que Inkscape no puede hacer esto.

-1voto

Abhinav Puntos 1161

Puedes probar Dibujo de Google Docs . Parece que hará lo que quieras de forma gratuita, directamente en tu navegador.

0 votos

Lo he probado, pero (IMHO) le falta la flexibilidad de Inkscape.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X