Na minha área de pesquisa, uma maneira popular de exibir dados é usar uma combinação de um gráfico de barras com "guias". Por exemplo,
O "guidão" alterna entre erros padrão e desvios padrão, dependendo do autor. Normalmente, os tamanhos das amostras para cada "barra" são bastante pequenos - cerca de seis.
Esses gráficos parecem ser particularmente populares nas ciências biológicas - veja os primeiros artigos da BMC Biology, volume 3, para exemplos.
Então, como você apresentaria esses dados?
Por que eu não gosto desses enredos
Pessoalmente, não gosto dessas tramas.
- Quando o tamanho da amostra é pequeno, por que não exibir apenas os pontos de dados individuais.
- É o sd ou o se que está sendo exibido? Ninguém concorda com o que usar.
- Por que usar barras? Os dados não (geralmente) vão de 0, mas uma primeira passagem no gráfico sugere que sim.
- Os gráficos não dão uma idéia sobre o intervalo ou o tamanho da amostra dos dados.
Script R
Este é o código R que eu usei para gerar o gráfico. Dessa forma, você pode (se quiser) usar os mesmos dados.
#Generate the data
set.seed(1)
names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")
prevs = c(38, 37, 31, 31, 29, 26, 40, 32, 39)
n=6; se = numeric(length(prevs))
for(i in 1:length(prevs))
se[i] = sd(rnorm(n, prevs, 15))/n
#Basic plot
par(fin=c(6,6), pin=c(6,6), mai=c(0.8,1.0,0.0,0.125), cex.axis=0.8)
barplot(prevs,space=c(0,0,0,3,0,0, 3,0,0), names.arg=NULL, horiz=FALSE,
axes=FALSE, ylab="Percent", col=c(2,3,4), width=5, ylim=range(0,50))
#Add in the CIs
xx = c(2.5, 7.5, 12.5, 32.5, 37.5, 42.5, 62.5, 67.5, 72.5)
for (i in 1:length(prevs)) {
lines(rep(xx[i], 2), c(prevs[i], prevs[i]+se[i]))
lines(c(xx[i]+1/2, xx[i]-1/2), rep(prevs[i]+se[i], 2))
}
#Add the axis
axis(2, tick=TRUE, xaxp=c(0, 50, 5))
axis(1, at=xx+0.1, labels=names, font=1,
tck=0, tcl=0, las=1, padj=0, col=0, cex=0.1)
data-visualization
csgillespie
fonte
fonte
Respostas:
Obrigado por todas as respostas. Para completar, pensei em incluir o que costumo fazer. Costumo fazer uma combinação das sugestões fornecidas: pontos, gráficos de caixa (quando n é grande) e intervalos se (ou sd).
( Removido pelo moderador porque o site que hospeda a imagem não parece mais funcionar corretamente. )
A partir do gráfico de pontos, fica claro que os dados estão muito mais dispersos do que os gráficos do "guiador" sugerem. De fato, existe um valor negativo em A3!
Eu fiz essa resposta uma CW para não ganhar rep
fonte
A palestra de Frank Harrell (mais excelente) intitulada "Alergia à informação" na useR! o mês passado mostrou alternativas para isso: em vez de ocultar os dados brutos pela agregação fornecida pelas barras, os dados brutos também são mostrados como pontos (ou pontos). "Por que esconder os dados?" foi o comentário de Frank.
Dada a mistura de alpa, isso parece a sugestão mais sensata (e o todo fala mais cheio de pepitas boas e importantes).
fonte
jitter
também está na planície R.Do ponto de vista psicológico, defendo a plotagem dos dados, além da sua incerteza sobre os dados. Assim, em um gráfico como você mostra, eu nunca me preocuparia em estender as barras até zero, o que serve apenas para minimizar a capacidade do olho de distinguir diferenças no intervalo de dados.
Além disso, sou francamente antigráfico; Os gráficos de barras mapeiam duas variáveis para o mesmo atributo estético (localização do eixo x), o que pode causar confusão. Uma abordagem melhor é evitar o mapeamento estético redundante, mapeando uma variável para o eixo x e outra variável para outro atributo estético (por exemplo, forma ou cor do ponto ou ambas).
Finalmente, no gráfico acima, você inclui apenas barras de erro acima do valor, o que dificulta a capacidade de comparar os intervalos de incerteza em relação às barras acima e abaixo do valor.
Aqui está como eu plotaria os dados (através do pacote ggplot2). Note que eu adiciono linhas conectando pontos da mesma série; alguns argumentam que isso só é apropriado quando as séries através das quais as linhas estão conectadas são numéricas (como parece ser neste caso), no entanto, desde que haja alguma relação ordinal razoável entre os níveis da variável do eixo x, acho linhas de conexão são úteis para ajudar o olho a associar pontos através do eixo x. Isso pode se tornar particularmente útil para detectar interações, que realmente se destacam nas linhas.
fonte
geom_ribbon()
indicando o erro. Se você não gosta de produzir estimativas aparentes para regiões entre 1 e 2, reduza pelo menos a largura da barra de erro.Estou curioso para saber por que você não gosta dessas tramas. Eu os uso o tempo todo. Sem querer afirmar o óbvio do florescimento, eles permitem comparar as médias de diferentes grupos e ver se seus ICs de 95% se sobrepõem (ou seja, a verdadeira média provavelmente será diferente).
É importante obter um equilíbrio de simplicidade e informações para diferentes propósitos, eu acho. Mas quando uso esses enredos, estou dizendo: "esses dois grupos são diferentes um do outro de alguma maneira importante" [ou não].
Parece ótimo para mim, mas eu estaria interessado em ouvir contra-exemplos. Suponho implícito no uso do gráfico que os dados não têm uma distribuição bizzare que torna a média inválida ou enganosa.
fonte
Se os dados são taxas : esse é o número de sucessos dividido pelo número de tentativas, um método muito elegante é um gráfico de funil. Por exemplo, consulte http://qshc.bmj.com/content/11/4/390.2.full (desculpas se o link exigir uma assinatura - avise-me e vou encontrar outra).
Pode ser possível adaptá-lo a outros tipos de dados, mas não vi nenhum exemplo.
ATUALIZAR:
Aqui está um link para um exemplo que não requer uma assinatura (e tem uma boa explicação de como eles podem ser usados): http://understandingunertaty.org/fertility
Eles podem ser usados para dados não-taxa, simplesmente plotando a média contra o erro padrão; no entanto, eles podem perder parte de sua simplicidade.
O artigo da wikipedia não é ótimo, pois apenas discute seu uso em meta-análises. Eu diria que eles poderiam ser úteis em muitos outros contextos.
fonte
Eu usaria boxplots aqui; limpo, significativo, não paramétrico ... Ou vioplot, se a distribuição for mais interessante.
fonte
Simplifying @csgillespie's terrific code from above:
fonte
I prefer geom_pointrange to errorbar and think the lines are distracting rather than helpful. Here is version that I find much cleaner than the @James or @csgillespie version:
fonte