Software para desenho de redes bayesianas (modelos gráficos)

50

Estou procurando um software [gratuito] que possa produzir modelos gráficos com boa aparência, por exemplo

insira a descrição da imagem aqui

Todas as sugestões serão apreciadas.

C. Reed
fonte
11
Você quer dizer que desenhou figuras assim vinculadas ou desenhou modelos prontos de algum outro software? Se o último, de qual?
As imagens do desenho gostaram do que eu liguei
C. Reed
2
Foi criado manualmente no Inkscape , para que você possa tentar fazer o mesmo.
10
Isso é incrível - a imagem que você fornece é uma que eu desenhei para a Wikipedia em 2008, e eu encontrei essa pergunta quando descobri como redesenhar em 2012. Você fornece um PNG, mas era originalmente um SVG . Naquela época, eu usava o Inkscape e era terrível - eu tinha que editar manualmente o SVG para adicionar as letras gregas, porque ele não podia lidar com isso naquela época (talvez ainda não possa). Eu não recomendo para ninguém. Vou dar uma chance ao tikz.
Bkkbrad 13/07/12
Quando eu disse que não recomendo para ninguém, quis dizer que não recomendo o Inkscape para quem tenta desenhar vários diagramas de placas consistentes.
Bkkbrad

Respostas:

34

Atualmente, tenho um problema semelhante (desenhando vários diagramas de caminho para minha dissertação) e, portanto, estava examinando muitas das opções listadas aqui para desenhar diagramas semelhantes. Muitos dos recursos listados para desenhar esses gráficos vetoriais (como no microsoft office ou no google desenhos) podem produzir diagramas de caminho realmente agradáveis, com um esforço mínimo. Mas, parte da razão pela qual eu não estava satisfeito com esses programas é que eu precisava produzir muitos diagramas, com apenas pequenas alterações entre cada diagrama (por exemplo, adicionar outro nó, alterar um rótulo). As ferramentas de gráficos vetoriais de apontar e clicar não são adequadas para isso e exigem mais esforço do que o necessário para fazer essas pequenas alterações. Também fica difícil manter um modelo entre muitos desenhos. Então, decidi examinar as opções para produzir esses gráficos programaticamente.

β

insira a descrição da imagem aqui

\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

Agora, já estou escrevendo minha dissertação em Latex, portanto, se você deseja apenas a imagem sem precisar compilar um documento inteiro, é um pouco inconveniente, mas existem algumas soluções menores para produzir uma imagem mais diretamente (consulte esta pergunta em no stackoverflow). Existem muitos outros benefícios em usar o Tikz para esse projeto.

  • Documentação extensa. O manual pgf segura sua mão através da criação de alguns diagramas semelhantes. E assim que você molhar os pés ...
  • Uma enorme biblioteca de exemplos existe para demonstrar como produzir uma enorme variedade de gráficos.
  • E, finalmente, o site de troca de pilhas Tex é um bom lugar para fazer qualquer pergunta sobre Tikz. Eles têm alguns assistentes por aí, fazendo alguns gráficos bem chiques (confira o blog para alguns exemplos).

No momento, não considerei algumas das bibliotecas para desenhar os diagramas no pacote estatístico R diretamente dos modelos especificados, mas no futuro posso considerá-los em maior extensão. Existem alguns bons exemplos da biblioteca qgraph para uma prova do conceito do que pode ser realizado em R.

Andy W
fonte
11
Para os interessados ​​em desenhar diagramas de caminho para o SEM (ou para mais algumas idéias sobre o que pode ser realizado nos produtos Microsoft Office), sugiro que você verifique o arquivo ppt de diagramas de caminho de Jeremy Mile (na parte inferior da página da Web referenciada).
Andy W
11
Ótima resposta, é um pouco de uma curva de aprendizado, mas como qualquer coisa TeX, acho que valerá a pena a longo prazo. Obrigado!
C. Reed
30

Laura Dietz escreveu uma biblioteca muito legal para o tikz que permite desenhar redes Bayesian em látex sem precisar usar o tikz diretamente.

Para demonstrar este pacote, consulte o seguinte exemplo para esta pergunta:

\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

insira a descrição da imagem aqui

Embora não seja exatamente o mesmo, ele certamente transmite as mesmas informações e pode ser ajustado para melhor atender a requisitos específicos. Este pacote gera números muito aceitáveis ​​sem a necessidade de aprender o pacote tikz completo.

zelanix
fonte
11
Esta biblioteca é incrível! Simplifica bastante a criação de diagramas de rede bayesiano! Obrigado por compartilhar.
Fccoelho
Eu tentei esse software e o pop-pgm, esse é muito mais fácil de usar do que o outro. Obrigado ao autor pelo excelente software.
Good Will
12

Você não pode vencer http://daft-pgm.org/

Daft é um pacote Python que usa matplotlib para renderizar modelos gráficos probabilísticos perfeitos em pixels para publicação em um periódico ou na internet. Com um script Python curto e uma sintaxe intuitiva de criação de modelo, você pode criar modelos direcionados (Redes Bayesianas, gráficos acíclicos direcionados) e não direcionados (campos aleatórios de Markov) e salvá-los em qualquer formato compatível com o matplotlib (incluindo PDF, PNG, EPS e SVG )

Emre
fonte
daft é incrível! esta deve ser a resposta imho aceita
andreas Dominik
O Daft tem algumas desvantagens: não dimensiona automaticamente os nós para caber no texto, não calcula o layout da rede etc. Isso foi suficiente para me desligar.
Fccoelho 10/07
7

Você pode tentar o GraphViz .

Isso permite que você especifique o gráfico em um arquivo de texto e ele será desenhado automaticamente (evitando a sobreposição de setas e assim por diante). Vá aqui (pdf) para obter um exemplo mínimo e um manual.

thias
fonte
5

O Inkscape é essencialmente uma versão gratuita do Adobe Illustrator e é um programa muito forte para criar gráficos vetoriais, como a imagem que você postou. Também funciona muito bem com a maioria dos pacotes estatísticos para fazer edições finais / anotações / etc. para gráficos - R, SAS etc. podem gerar um gráfico como PDF ou outro formato vetorial (como .eps) e, em seguida, você pode trazê-lo para o Inkscape para mexer com cores, símbolos, rótulos de eixos etc.

Fomite
fonte
Prefiro as ferramentas que tratam as flechas como objetos especiais: quando movo as variáveis, espero que as flechas as sigam. Parece que o Inkscape não pode fazer isso.
ziyuang
4

Se você tem um interesse particular em usar o LaTeX, o programa LaTeXDraw possui algumas boas funcionalidades para criar fluxogramas com código de látex incorporado.

Importa / exporta código PSTricks e SVG e também pode exportar svg, pdf, eps, jpg, png, etc. É executado no Linux, Mac OS X e Windows.

David LeBauer
fonte
3

Dia é um programa de código aberto gratuito para desenhar diagramas. Acho útil e não é muito difícil começar.

Glen
fonte
1

Eu achei o Diagrammix um pacote muito flexível, disponível para Mac OS X. É um pacote de gráficos vetoriais bem arredondado e faz um bom trabalho em modelos gráficos. É bastante barato e tem alguns complementos bons que ajudaram a melhorar as formas e direções das arestas.

Firebug
fonte
Uma sugestão: você pode mostrar como reproduzir o modelo gráfico na pergunta com Diagrammixalgumas respostas.
Firebug
-1

Você pode experimentar o Google Docs Draw . Parece que ele fará o que você quer de graça, diretamente no seu navegador.

Ringold
fonte
Eu tentei, mas (IMHO) falta a flexibilidade do Inkscape.
suncoolsu
-1

Você pode ir para o PlantUML . É de código aberto e bastante flexível.

RockScience
fonte
-1

O SCAVIS possui uma rede bayesiana. Tente pesquisar no Google "scavis baysian network". O mesmo programa pode desenhar diagramas diferentes usando a sintaxe Python (ou Java).

Jim12
fonte
-1

você pode usar o draw.io e usar um ou vários modelos para criar esses ícones. Ajuda a criar SVGs ou qualquer outro formato. e não requer a instalação de nada no seu sistema.

Amir
fonte