Melhor maneira de colocar dois histogramas na mesma escala?


14

Digamos que tenho duas distribuições que quero comparar em detalhes, ou seja, de uma maneira que torne a forma, a escala e a mudança facilmente visíveis. Uma boa maneira de fazer isso é plotar um histograma para cada distribuição, colocá-los na mesma escala X e empilhar um embaixo do outro.

Ao fazer isso, como o binning deve ser feito? Os dois histogramas devem usar os mesmos limites de compartimento, mesmo que uma distribuição seja muito mais dispersa que a outra, como na Imagem 1 abaixo? A divisão deve ser feita independentemente para cada histograma antes do zoom, como na Imagem 2 abaixo? Existe mesmo uma boa regra de ouro nisso?

Imagem 1 Imagem 2


5
Os gráficos QQ são ferramentas muito melhores para comparação incisiva de distribuições empíricas. Usá-los evita o problema do binning.
whuber

3
@whuber: Concordo, se você quer apenas uma visualização sensível da diferença entre duas distribuições, mas a abordagem do histograma é IMHO melhor se você quiser uma visão detalhada de como elas são diferentes.
dsimcha

3
@dsimcha Minha experiência tem sido o oposto. O gráfico QQ mostra claramente (de maneira quantitativa) diferenças de escala, localização e forma, especialmente na espessura das caudas. (Tente comparar dois SDs diretamente dos histogramas, por exemplo: é impossível quando eles estão próximos em valor. Em um gráfico QQ, você só precisa comparar inclinações, o que é rápido e relativamente preciso.) Um gráfico QQ é inferior a um histograma em termos de seleção de modos, mas nenhum histograma é bom até que uma quantidade decente de dados tenha sido coletada e uma boa escolha de posições tenha sido feita.
whuber

1
Concordo que os gráficos QQ são a melhor solução, embora não evitem o problema do compartimento, apenas o forçam a colocar as caixas em locais específicos (os quantis :-) Por outro lado, isso implica que as caixas não , de fato, não deve ser compartilhado pelas duas distribuições.
conjugateprior

1
@dsimcha, acho que algo como gráficos de idade / sexo podem ser imagens úteis. Enfim, por que usar histogramas para isso? Basta plotar diretamente as funções de distribuição. No entanto, se você estiver jogando com coisas empíricas, a sugestão de plot QQ é a melhor escolha.
Dmitrij Celov

Respostas:


7

Eu acho que você precisa usar as mesmas caixas. Caso contrário, a mente prega peças em você. Normal (0,2) parece mais disperso em relação a Normal (0,1) na Imagem 2 do que na Imagem 1. Nada a ver com estatísticas. Parece que Normal (0,1) fez uma "dieta".

-Ralph Winters

Os pontos finais do ponto médio e do histograma também podem alterar a percepção da dispersão. Observe que, neste applet, uma seleção máxima de posições implica um intervalo de> 1,5 - ~ 5, enquanto uma seleção mínima de posições implica um intervalo de <1 -> 5,5

http://www.stat.sc.edu/~west/javahtml/Histogram.html


1
Você poderia fornecer alguma justificativa teórica para essa opinião?
whuber

Não, apenas uma opinião. Mas se eu tivesse tempo, começaria minha pesquisa no mundo das embalagens de varejo (percepção do corpo magro) e incorporaria parte do trabalho da Tufte.
Ralph Winters

@ whuber: está principalmente relacionado à maneira como nosso cérebro processa as informações. Quando existem caixas menores, nossa mente também "encolhe" os limites da curva. Tente inverter o tamanho das caixas na fig. # 2 para ver o que eu quero dizer.
Nico

@nico Sim, há um elemento perceptivo na pergunta. Mas, na vanguarda, está a questão estatística, porque ela tem uma influência muito maior: compartimentos menores ==> mais variabilidade da amostra nos compartimentos ==> mais histogramas "irregulares" ==> maior dificuldade em comparação. Assim, na IMO, qualquer resposta que valha a pena deve agregar apoio da teoria estatística (no mínimo).
whuber

@ whuber: eu estava me referindo ao fato de que a distribuição parece diferentemente dispersa nas duas imagens. É claro que a aparência deles não tem nada a ver com o quanto eles estão realmente dispersos.
Nico

2

Outra abordagem seria plotar as diferentes distribuições no mesmo gráfico e usar algo como o alphaparâmetro ggplot2para resolver os problemas de overplotting. A utilidade desse método dependerá das diferenças ou semelhanças em sua distribuição, pois elas serão plotadas com os mesmos compartimentos. Outra alternativa seria exibir curvas de densidade suavizadas para cada distribuição. Aqui está um exemplo dessas opções e as outras opções discutidas no segmento:

library(ggplot2)

df <- melt(
    data.frame( 
        x = rnorm(1000)
        , y = rnorm(1000, 0, 2)
    )
)


ggplot(data = df) + 
#   geom_bar(aes(x = value, fill = variable), alpha = 1/2)
#   geom_bar(aes(x = value)) + facet_grid(variable ~ .)
#   geom_density(aes(x = value, colour = variable))
#   stat_qq(aes(sample = value, colour = variable))

Isso não apenas leva a questão para a questão da seleção de larguras apropriadas do kernel e se (e como) podemos comparar dois smooths usando larguras diferentes do kernel?
whuber

1
@whuber - ponto válido. Eu não estava tentando sugerir que as curvas de densidade fossem o método completo, simplesmente oferecendo outras alternativas. Fica claro a partir deste post que existem prós e contras em qualquer abordagem, então estava oferecendo isso como outra alternativa viável a ser incorporada.
Chase

Por isso, estou votando na sua resposta, +1.
whuber

0

Portanto, é uma questão de manter o mesmo tamanho de compartimento ou manter o mesmo número de compartimentos? Eu posso ver argumentos para ambos os lados. Uma solução alternativa seria padronizar os valores primeiro. Então você pode manter os dois.


Isso funcionaria quando os dois tamanhos de amostra forem semelhantes. Porém, quando são diferentes, o tamanho de compartimento comum (mesmo em unidades padronizadas) pode ser apropriado para um ou outro histograma, mas não para ambos. Como você lidaria com esse caso?
whuber

Talvez estejamos pensando em diferentes significados de padronizar. Eu quis dizer aquele ao qual vinculei onde, por exemplo, se uma população tem um stdev de 5 e a outra tem um stdev de 10, após a padronização, ambos teriam um stdev de 1. Eles poderiam então ser comparados de maneira mais justa com o mesmo tamanho do compartimento, pois cada compartimento tem uma quantidade comparável de pixels e dados. Ou talvez você estivesse entendendo a questão maior de que "tamanho apropriado de compartimento" é um pouco de arte negra e exclusivo para todos os conjuntos de dados ...
xan

Compartilhamos o mesmo significado de "padronizar". A escolha de um tamanho de lixeira exige julgamento e conhecimento do contexto, mas é muito difícil caracterizá-lo como uma "arte negra": veja, por exemplo, stats.stackexchange.com/q/798/919 .
whuber
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.