La difficulté d'utiliser des histogrammes pour déduire une forme
Bien que les histogrammes soient souvent pratiques et parfois utiles, ils peuvent être trompeurs. Leur apparence peut beaucoup changer avec les changements d’emplacement des limites des casiers.
Ce problème est connu depuis longtemps *, mais peut-être pas aussi largement qu'il devrait l'être - on le voit rarement mentionné dans les discussions au niveau élémentaire (bien qu'il y ait des exceptions).
* Paul Rubin [1], par exemple, l’exprime ainsi: " Il est bien connu que changer les points de terminaison dans un histogramme peut modifier considérablement son apparence ". .
Je pense que c'est une question qui devrait être plus largement discutée lors de l'introduction d'histogrammes. Je vais donner quelques exemples et discussion.
Pourquoi vous devriez vous garder de vous fier à un seul histogramme d'un ensemble de données
Jetez un coup d'œil à ces quatre histogrammes:
C'est quatre histogrammes très différents.
Si vous collez les données suivantes dans (j'utilise R ici):
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)
Ensuite, vous pouvez les générer vous-même:
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)
Maintenant, regardez ce graphique à bandes:
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)
(S'il est toujours pas évident, voir ce qui se passe lorsque vous soustrayez les données d'Annie de chaque série: head(matrix(x-Annie,nrow=40))
)
Les données ont simplement été décalées de 0,25 à chaque fois.
Pourtant, les impressions tirées des histogrammes - asymétrie droite, uniforme, asymétrie gauche et bimodal - étaient tout à fait différentes. Notre impression a été entièrement régie par l'emplacement de la première origine de la corbeille par rapport au minimum.
Donc, pas seulement «exponentielle» contre «pas vraiment exponentielle», mais «droite asymétrique» contre «gauche asymétrique» ou «bimodal» vs «uniforme» simplement en se déplaçant où vos bacs commencent.
Edit: Si vous modifiez la largeur de bin, vous pouvez obtenir des choses comme celles-ci:
Il s'agit des mêmes 34 observations dans les deux cas, juste différents points d'arrêt, l'un avec binwidth et l'autre avec binwidth .0.810.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)
Nifty, hein?
Oui, ces données ont été générées délibérément pour le faire ... mais la leçon est claire: ce que vous pensez voir dans un histogramme peut ne pas donner une impression particulièrement précise des données.
Que pouvons-nous faire?
Les histogrammes sont largement utilisés, souvent faciles à obtenir et parfois attendus. Que pouvons-nous faire pour éviter ou atténuer de tels problèmes?
Comme Nick Cox l'a souligné dans un commentaire à une question connexe : La règle de base devrait toujours être que les détails qui résistent aux variations de la largeur et de l'origine de la corbeille sont vraisemblables; les détails fragiles sont susceptibles d'être fallacieux ou triviaux .
Au minimum, vous devez toujours créer des histogrammes avec plusieurs largeurs de bin ou origines de bin différentes, ou de préférence les deux.
Vous pouvez également vérifier une estimation de la densité du noyau avec une largeur de bande pas trop large.
Une autre approche permettant de réduire le caractère arbitraire des histogrammes est celle des histogrammes décalés ,
(c’est l’une des données les plus récentes), mais si vous voulez y arriver, je pense que vous pourriez aussi bien utiliser une estimation de la densité du noyau.
Si je fais un histogramme (je les utilise malgré le fait que je suis très conscient du problème), je préfère presque toujours utiliser beaucoup plus de bacs que les programmes par défaut ont tendance à donner et très souvent j'aime faire plusieurs histogrammes avec des largeurs de bacs variables (et, parfois, origine). Si leur impression est raisonnablement cohérente, vous ne rencontrerez probablement pas ce problème. Sinon, essayez de regarder de plus près, essayez peut-être une estimation de la densité du noyau, un CDF empirique, un graphique QQ ou quelque chose de ce genre. similaire.
Bien que les histogrammes puissent parfois être trompeurs, les boîtes à moustaches sont encore plus sujettes à de tels problèmes; avec une boîte à moustaches, vous n'avez même pas la possibilité de dire "utilisez plus de bacs". Voir les quatre ensembles de données très différents de cet article , tous dotés de boîtes à moustaches identiques et symétriques, même si l’un des ensembles de données est plutôt asymétrique.
[1]: Rubin, Paul (2014) "Abus d'histogramme!",
Article de blog, OU dans un monde OB , 23 janvier 2014
lien ... (lien alternatif)