A dificuldade de usar histogramas para inferir forma
Embora os histogramas sejam frequentemente úteis e às vezes úteis, eles podem ser enganosos. Sua aparência pode alterar bastante com as mudanças nos locais dos limites da lixeira.
Esse problema é conhecido há muito tempo *, embora talvez não seja tão amplo quanto deveria - você raramente o vê mencionado em discussões de nível elementar (embora haja exceções).
* por exemplo, Paul Rubin [1] colocou desta maneira: " é sabido que alterar os pontos finais em um histograma pode alterar significativamente sua aparência ". .
Eu acho que é uma questão que deve ser discutida mais amplamente ao introduzir histogramas. Vou dar alguns exemplos e discussão.
Por que você deve ter cuidado com um único histograma de um conjunto de dados
Veja estes quatro histogramas:
São quatro histogramas de aparência muito diferente.
Se você colar os seguintes dados (estou usando R aqui):
Annie <- c(3.15,5.46,3.28,4.2,1.98,2.28,3.12,4.1,3.42,3.91,2.06,5.53,
5.19,2.39,1.88,3.43,5.51,2.54,3.64,4.33,4.85,5.56,1.89,4.84,5.74,3.22,
5.52,1.84,4.31,2.01,4.01,5.31,2.56,5.11,2.58,4.43,4.96,1.9,5.6,1.92)
Brian <- c(2.9, 5.21, 3.03, 3.95, 1.73, 2.03, 2.87, 3.85, 3.17, 3.66,
1.81, 5.28, 4.94, 2.14, 1.63, 3.18, 5.26, 2.29, 3.39, 4.08, 4.6,
5.31, 1.64, 4.59, 5.49, 2.97, 5.27, 1.59, 4.06, 1.76, 3.76, 5.06,
2.31, 4.86, 2.33, 4.18, 4.71, 1.65, 5.35, 1.67)
Chris <- c(2.65, 4.96, 2.78, 3.7, 1.48, 1.78, 2.62, 3.6, 2.92, 3.41, 1.56,
5.03, 4.69, 1.89, 1.38, 2.93, 5.01, 2.04, 3.14, 3.83, 4.35, 5.06,
1.39, 4.34, 5.24, 2.72, 5.02, 1.34, 3.81, 1.51, 3.51, 4.81, 2.06,
4.61, 2.08, 3.93, 4.46, 1.4, 5.1, 1.42)
Zoe <- c(2.4, 4.71, 2.53, 3.45, 1.23, 1.53, 2.37, 3.35, 2.67, 3.16,
1.31, 4.78, 4.44, 1.64, 1.13, 2.68, 4.76, 1.79, 2.89, 3.58, 4.1,
4.81, 1.14, 4.09, 4.99, 2.47, 4.77, 1.09, 3.56, 1.26, 3.26, 4.56,
1.81, 4.36, 1.83, 3.68, 4.21, 1.15, 4.85, 1.17)
Então você pode gerá-los você mesmo:
opar<-par()
par(mfrow=c(2,2))
hist(Annie,breaks=1:6,main="Annie",xlab="V1",col="lightblue")
hist(Brian,breaks=1:6,main="Brian",xlab="V2",col="lightblue")
hist(Chris,breaks=1:6,main="Chris",xlab="V3",col="lightblue")
hist(Zoe,breaks=1:6,main="Zoe",xlab="V4",col="lightblue")
par(opar)
Agora, veja este gráfico:
x<-c(Annie,Brian,Chris,Zoe)
g<-rep(c('A','B','C','Z'),each=40)
stripchart(x~g,pch='|')
abline(v=(5:23)/4,col=8,lty=3)
abline(v=(2:5),col=6,lty=3)
(Se ainda não for óbvio, veja o que acontece quando você subtrai os dados de Annie de cada conjunto head(matrix(x-Annie,nrow=40))
:)
Os dados foram simplesmente deslocados para a esquerda de cada vez em 0,25.
No entanto, as impressões que obtemos dos histogramas - inclinação direita, uniforme, inclinação esquerda e bimodal - eram totalmente diferentes. Nossa impressão foi inteiramente governada pela localização da primeira origem no depósito em relação ao mínimo.
Portanto, não apenas 'exponencial' vs 'não-exponencial', mas 'inclinação à direita' vs 'inclinação à esquerda' ou 'bimodal' vs 'uniforme' apenas movendo-se para onde suas caixas começam.
Edit: Se você variar a largura da lixeira, poderá obter coisas como esta:
10,8
x <- c(1.03, 1.24, 1.47, 1.52, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99, 2.72, 2.75, 2.78, 2.81, 2.84, 2.87, 2.9, 2.93, 2.96, 2.99, 3.6,
3.64, 3.66, 3.72, 3.77, 3.88, 3.91, 4.14, 4.54, 4.77, 4.81, 5.62)
hist(x,breaks=seq(0.3,6.7,by=0.8),xlim=c(0,6.7),col="green3",freq=FALSE)
hist(x,breaks=0:8,col="aquamarine",freq=FALSE)
Bacana, hein?
Sim, esses dados foram deliberadamente gerados para fazer isso ... mas a lição é clara - o que você acha que vê em um histograma pode não ser uma impressão particularmente precisa dos dados.
O que podemos fazer?
Os histogramas são amplamente utilizados, frequentemente fáceis de obter e às vezes esperados. O que podemos fazer para evitar ou mitigar esses problemas?
Como Nick Cox aponta em um comentário para uma pergunta relacionada : A regra geral sempre deve ser que detalhes robustos a variações na largura e na origem do escaninho provavelmente sejam genuínos; detalhes frágeis a esses provavelmente são espúrios ou triviais .
No mínimo, você deve sempre fazer histogramas em várias larguras de caixas ou origens de caixas diferentes, ou preferencialmente ambas.
Como alternativa, verifique uma estimativa de densidade do kernel com uma largura de banda não muito ampla.
Uma outra abordagem que reduz a arbitrariedade dos histogramas é a média dos histogramas deslocados ,
(esse é um dos dados mais recentes), mas se você fizer esse esforço, acho que pode usar uma estimativa de densidade do kernel.
Se estou fazendo um histograma (eu os uso apesar de estar ciente do problema), quase sempre prefiro usar consideravelmente mais compartimentos do que os padrões típicos do programa costumam dar, e muitas vezes gosto de fazer vários histogramas com largura de compartimento variável (e, ocasionalmente, origem). Se eles são razoavelmente consistentes na impressão, é provável que você não tenha esse problema, e se eles não forem consistentes, você deve observar com mais cuidado, talvez tente uma estimativa da densidade do kernel, um CDF empírico, um gráfico de QQ ou algo assim semelhante.
Embora os histogramas às vezes sejam enganosos, os boxplots são ainda mais propensos a esses problemas; com um boxplot, você nem tem a capacidade de dizer "use mais caixas". Veja os quatro conjuntos de dados muito diferentes nesta postagem , todos com gráficos de caixa simétricos e idênticos, mesmo que um dos conjuntos de dados esteja bastante inclinado.
[1]: Rubin, Paul (2014) "Abuso de histograma!",
Publicação no blog, OU em um mundo OB , 23 de janeiro de 2014
link ... (link alternativo)