Melhorando a análise de dados através de uma melhor visualização de dados?

8

Eu executei quatro programas a, b, c, d paralelamente em duas máquinas diferentes Xe Yseparadamente por 10 vezes. A seguir, é apresentada uma amostra dos dados. Os tempos de execução (milissegundos) nas 10execuções de cada programa são dados sob seus respectivos nomes.

Machine-X:

a b  c d
29 40 21 18
28 43 20 18
30 49 20 28
29 50 19 19
28 51 21 19
29 41 30 29
32 47 10 18
29 43 20 18
28 51 30 29
29 41 21 19


Machine-Y:

a b c d
16 24 19 18
16 24 19 18
16 23 19 18
16 24 19 18
16 24 19 18
16 22 19 18
16 24 19 18
16 24 19 18
16 24 19 18
16 24 19 18

Preciso criar gráficos para visualizar o seguinte:

  1. Compare o desempenho de cada programa (ou seja, tempo de execução) nas máquinas X e Y.
  2. Compare a variação nos tempos de execução de cada programa nas máquinas X e Y
  3. Qual máquina é justa em fornecer recursos de computação para cada programa?
  4. Compare o tempo total de execução (a + b + c + d) dos quatro programas em cada execução nas máquinas X e Y.
  5. Compare a variação no tempo total de execução dos quatro programas nas 10 execuções.

Para 1 e 2, criei a Figura A, a Figura B é para 3 e a figura C é para 4 e 5. No entanto, não estou satisfeito porque há três gráficos e é difícil encaixar todos os três gráficos no meu artigo. Além disso, acredito que podemos produzir melhor que estes. Eu realmente aprecio se alguém me ajudar a desenhar um ou dois gráficos agradáveis ​​em vez de três em R, satisfazendo meus requisitos. Veja abaixo o código R que usei para produzir esses gráficos.

Figura A:

Figura A

Figura B: O eixo X mostra as execuções, o eixo Y mostra os tempos de execução dos quatro programas em uma execução específica.

Figura B

Figura C:

Figura C

Código R

> pdf("Figure A.pdf")
> par(mfrow=c(1,2))
> boxplot(x,boxwex=0.4, ylim=c(15, 60))
> mtext("Time", side=2, line=2)
> mtext("Running times of each program in 10 runs", side=3, line=2, at=6,cex=1.4)
> mtext("Machine X", side=3, line=0.5, at=2,cex=1.1)
> boxplot(y,boxwex=0.4, ylim=c(15, 60))
> mtext("Machine Y", side=3, line=0.4, at=2,cex=1.1)
> dev.off()



> pdf("Figure B.pdf")
> par(mfrow=c(1,2))
>  boxplot(t(x),boxwex=0.4, ylim=c(0,50))
> mtext("Run Number", side=1, line=2, at=12, cex=1.2)
> mtext("Fairness", side=3, line=2, at=12,cex=1.4)
>  mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> boxplot(t(y),boxwex=0.4, ylim=c(0,50))
> mtext("Machine Y", side=3, line=0.4, at=5,cex=1.1)
> dev.off()


> pdf("Figure C.pdf")
> par(mfrow=c(1,2))
> barplot(t(x), ylim=c(0,150),names=1:10,col=mycolor)
> mtext("Run Number", side=1, line=2, at=14, cex=1.2)
> mtext("Total Running-Times in 10 Runs", side=3, line=2, at=14, cex=1.2)
> mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> barplot(t(y), ylim=c(0,150), names=1:10,col=mycolor)
> mtext("Machine Y", side=3, line=0.5, at=5,cex=1.1)
> legend("topright",legend=c("a","b","c","d"),fill=mycolor,cex=1.1)
> dev.off()
samarasa
fonte

Respostas:

12

Embora os outros entrevistados tenham fornecido informações úteis, eu me discordo de alguns de seus pontos de vista. Em particular, acredito que os gráficos que podem mostrar os detalhes dos dados (sem serem desordenados) são mais ricos e mais recompensadores de visualizar do que aqueles que resumem ou ocultam os dados, e acredito que todos os dados são interessantes, não apenas aqueles para computador X. Vamos dar uma olhada.

Gráfico de tempo por algoritmo e computador

(Estou mostrando pequenos gráficos aqui para enfatizar que muitos números podem ser úteis, detalhadamente, em pequenos espaços.)

Este gráfico mostra os valores de dados individuais, todos 80=2×4×10deles. Ele usa a distância ao longo do eixo y para representar os tempos de computação, porque as pessoas podem comparar com mais rapidez e precisão as distâncias em um eixo comum (como os estudos de Bill Cleveland mostraram). Para garantir que a variabilidade seja entendida corretamente no contexto do tempo real, o eixo y é estendido até zero: cortá-lo com qualquer valor positivo exagerará a variação relativa no tempo, introduzindo um "fator de mentira" (na terminologia de Tufte) .

A geometria gráfica (marcadores de ponto versus segmentos de linha) distingue claramente o computador X (marcadores) do computador Y (segmentos). Variações no simbolismo - forma e cor para os marcadores de ponto - bem como variação na posição ao longo do eixo x distinguem claramente os programas. (O uso da forma garante que as distinções persistam mesmo em uma renderização em escala de cinza, o que provavelmente ocorre em um diário impresso.)

Os programas parecem não ter nenhuma ordem inerente; portanto, não faz sentido apresentá-los alfabeticamente pelos nomes de código "a", ..., "d". Essa liberdade foi explorada para sequenciar os resultados pelo tempo médio exigido pelo computador X. Essa alteração simples, que não requer complexidade ou tinta adicional, revela um padrão interessante: os tempos relativos dos programas no computador Y diferem dos tempos relativos no computador. computador X. Embora isso possa ou não ser estatisticamente significativo, é um recurso dos dados que esse gráfico torna aparente por acaso. É isso que esperamos que um bom gráfico faça.

Ao fazer os marcadores de ponto grandes o suficiente, eles quase se misturam visualmente em uma representação gráfica da variabilidade total por programa. (A mistura perde algumas informações: não vemos exatamente onde as sobreposições ocorrem. Isso pode ser corrigido agitando os pontos levemente na direção horizontal, resolvendo todas as sobreposições.)

Somente este gráfico pode ser suficiente para apresentar os dados. No entanto, há mais a ser descoberto usando as mesmas técnicas para comparar tempos de uma execução para outra.

Trama "justiça"

Desta vez, a posição horizontal distingue o computador Y do computador X, basicamente usando painéis lado a lado. (Os contornos ao redor de cada painel foram apagados, porque interfeririam nas comparações visuais que queremos fazer no gráfico.) Dentro de cada painel, a posição distingue a execução. Exatamente como no primeiro gráfico - e usando o mesmo esquema de marcadores para distinguir os programas - os marcadores variam em forma e cor. Isso facilita as comparações entre as duas parcelas.

Observe o contraste visual nos padrões dos marcadores entre os dois painéis: isso tem um imediatismo não proporcionado pelas tabelas de números, que devem ser cuidadosamente examinadas antes que se perceba que o computador Y é tão consistente em seus tempos.

Os marcadores são unidos por linhas tracejadas fracas para fornecer conexões visuais dentro de cada programa. Essas linhas são tinta extra, aparentemente desnecessárias para a apresentação dos dados, então eu suspeito que o professor Tufte os evitaria. No entanto, acho que eles servem como guias visuais úteis para separar a desordem em que marcadores de diferentes programas quase se sobrepõem.

Novamente, presumo que as execuções sejam independentes e, portanto, o número da execução não tem sentido. Mais uma vez, podemos explorar isso: separadamente em cada painel, as execuções foram sequenciadas pelo tempo total dos quatro algoritmos. (O eixo x não rotula os números de execução, porque isso seria apenas uma distração.) Como no primeiro gráfico, esse seqüenciamento revela vários padrões interessantes de correlação entre os tempos dos quatro algoritmos em cada execução. A maior parte da variação do computador X é devida a alterações no algoritmo "b" (quadrados vermelhos). Já vimos isso no primeiro gráfico. Os piores desempenhos totais, no entanto, são devidos a dois longos tempos para os algoritmos "c" e "d" (diamantes dourados e triângulos verdes, respectivamente), e ocorreram nas mesmas duas execuções. Também é interessante que os outliers dos programas "a" e "c" tenham ocorrido na mesma execução. Essas observações podem revelar informações úteis sobre a variação no tempo do programa para o computador X. Eles são exemplos de como, porque esses gráficos mostram os detalhes dos dados (em vez de resumos como barras ou boxplots ou qualquer outra coisa), muito pode ser visto sobre variações e correlações - -mas não preciso detalhar isso aqui; você pode explorá-lo por si mesmo.

Construí esses gráficos sem pensar em uma "história" ou "girar" os dados, porque queria primeiro ver o que os dados têm a dizer. Esses gráficos nunca serão exibidos nas páginas do USA Today, talvez, mas devido à sua capacidade de revelar padrões , permitindo comparações visuais rápidas e precisas,eles são bons candidatos para comunicar resultados a um público científico ou técnico. (O que não quer dizer que eles não tenham falhas: existem algumas maneiras óbvias de melhorá-las, incluindo tremer na primeira e fornecer boas lendas e rótulos criteriosos em ambas.) Portanto, sim, concordo que a atenção ao público potencial é importante, mas não estou convencido de que os gráficos devam ser criados com a intenção de defender ou pressionar um ponto de vista específico.

Em resumo, gostaria de oferecer este conselho.

  • Use os princípios de design encontrados na literatura sobre cartografia e neurociência cognitiva (por exemplo, Alan MacEachren ) para aumentar as chances de os leitores interpretarem seu gráfico como você pretende e de que eles poderão tirar conclusões honestas e imparciais.

  • Use os princípios de design encontrados na literatura sobre gráficos estatísticos (por exemplo, Ed Tufte e Bill Cleveland ) para criar apresentações informativas ricas em dados.

  • Experimente e seja criativo. Os princípios são o ponto de partida para criar um gráfico estatístico, mas podem ser quebrados. Entenda quais princípios você está quebrando e por quê.

  • Procure mais por revelação do que mero resumo. Um gráfico satisfatório revela claramente padrões de interesse nos dados. Um ótimo gráfico revelará padrões inesperados e nos convida a fazer comparações que talvez nem pensássemos antes. Isso pode nos levar a fazer novas perguntas e mais perguntas. É assim que avançamos nosso entendimento.

whuber
fonte
2
+1 resposta fantástica! Somente o primeiro e o último parágrafos são ótimos conselhos, resumidos de maneira sucinta, e os detalhes no meio mostram exatamente como e como devem ser os ótimos gráficos.
Aaron saiu de Stack Overflow
@ whuber: Ótima resposta! Obrigado. Você também pode compartilhar o código usado para as figuras, por favor? É código R?
samarasa
@kkp Não é um código R: estes são gráficos do Mathematica . (Se você tiver acesso a esse software, ficaria feliz em compartilhar o código que usei.) Eles são fáceis de imitar no R usando os comandos de plotagem , linhas e pontos . A maior parte do trabalho envolve definir as opções gráficas e atribuir as coordenadas horizontais aos dados. Pacotes como o ggplot podem reduzir parte deste trabalho.
whuber
@ Aaron Obrigado; sua opinião, como especialista em gráficos estatísticos, é muito apreciada.
whuber
3

Os gráficos permitem contar uma história, para girar os dados da maneira que você deseja que o leitor interprete seus resultados. Qual é a mensagem de take-away? O que você quer colocar na mente deles? Determine essa mensagem e pense em como transformá-la em figura.

Nos seus gráficos, não sei que mensagem devo aprender e você devolve muitos dados brutos - quero resumos eficientes, não os dados em si.

Para o enredo 1, eu perguntaria: que comparações você deseja fazer? Os gráficos que você ilustrou os tempos de execução no programa para um determinado computador. Parece que você deseja fazer comparações entre computadores para um determinado programa. Se for esse o caso, você deseja que as estatísticas do programa a no computador x estejam no mesmo gráfico que as estatísticas do programa a no computador y. Eu colocaria todas as 8 caixas em seus dois boxplots na mesma figura, ordenado ax, ay, bx, by, ... para facilitar a comparação que você realmente está fazendo.

O mesmo vale para o enredo 2, mas acho esse enredo estranho. Você está basicamente mostrando todos os pontos de dados que possui --- uma caixa para cada execução e uma execução possui apenas 4 observações. Por que não me fornecer um gráfico de caixa do tempo total de execução para o computador xe um para o computador y?

A mesma crítica de "muitos dados" também se aplica à sua última plotagem. O gráfico 3 não adiciona nenhuma informação nova ao gráfico 2. Eu posso obter o tempo total se eu apenas multiplicar o tempo médio por 4 no gráfico 2. Aqui, também, você pode plotar uma caixa cada para o computador x e y, mas estas literalmente serão múltiplos do gráfico que propus substituir o gráfico 2.

Concordo com @ Andy W que o computador não é tão interessante e talvez você queira apenas declarar isso e excluí-lo das parcelas por brevidade (embora eu ache que as sugestões que eu fiz podem ajudá-lo a reduzi-las). Eu não acho que as mesas sejam muito boas maneiras de ir, no entanto.

Charlie
fonte
2

Seus gráficos parecem bons para mim e, se você tiver restrições de espaço, poderá colocá-los todos em um gráfico, em vez de três separados (por exemplo, use par(mfrow=c(3,2))e depois envie-os para o mesmo dispositivo).

Não há muito o que relatar Machine Y, literalmente, não tem variação, exceto o programa b. Eu acho que os gráficos são informativos para ver não apenas quanto tempo os tempos de execução são, Machine Xmas também quanto os tempos de execução variam.

No entanto, se esse for realmente o seu caso de uso, esses dados simples colocar todos os dados em uma tabela seriam suficientes para demonstrar a diferença entre as máquinas (embora eu acredite que os gráficos ainda sejam úteis se você puder ter espaço para colocá-los no documento também).

Andy W
fonte