Calcul du nombre optimal de cases dans un histogramme

Je « suis intéressé à trouver une méthode aussi optimale que possible pour déterminer le nombre de cases à utiliser dans un histogramme. Mes données doivent aller de 30 à 350 objets au maximum, et en particulier jessaye dappliquer un seuillage (comme la méthode dOtsu) aux « bons » objets, dont je devrais avoir moins et être plus étalé, sont séparés des « mauvais » objets, dont la valeur devrait être plus dense. Une valeur concrète aurait un score de 1 à 10 pour chaque objet. Javais 5 à 10 objets avec des scores de 6 à 10 et 20 à 25 objets avec des scores de 1 à 4. Jaimerais trouver un modèle de regroupement dhistogramme qui permet généralement à quelque chose comme la méthode dOtsu de limiter les objets à faible score. Cependant, dans limplémentation dOtsu « s » que jai vu, la taille du bac était de 256, et jai souvent beaucoup moins de points de données que 256, ce qui me suggère que 256 nest pas un bon nombre de bac. Avec si peu de données, quelles approches dois-je adopter pour calculer le nombre de bacs à utiliser?

Commentaires

  • Je pense que Sturges peut être utilisée pour n < 200; où n est le nombre dobservations

Réponse

Le Freedman-Diaconis est très robuste et fonctionne bien dans la pratique. La largeur de la case est définie sur $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Le nombre de casiers est donc $ (\ max- \ min) / h $ , où $ n $ est le nombre dobservations, max est la valeur maximale et min est la valeur minimale.

En base R, vous pouvez utiliser:

 hist(x, breaks="FD")  

Pour les autres bibliothèques de traçage sans cette option (par exemple, ggplot2), vous pouvez calculer binwidth comme:

 bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)  

Commentaires

  • @nico. La valeur par défaut dans R est breaks =  » Sturges  » qui ne donne pas toujours de bons résultats.
  • Comment fait-on calculer IQR?
  • @KurtMueller IQR signifie intervalle interquartile. Recherchez le 1er quartile et le 3ème quartile et la différence est IQR. IQR est déjà fourni avec R pour que vous puissiez lutiliser.
  • Si je ne me trompe pas, la réponse devrait se lire num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD nexistait pas il y a neuf ans.

Réponse

Si vous utilisez trop peu de casiers, lhistogramme ne représente pas vraiment très bien les données. Si vous avez trop de casiers, vous obtenez un aspect de peigne cassé, ce qui ne donne pas non plus une idée de la distribution.

Un La solution consiste à créer un graphique qui montre chaque valeur. Soit un diagramme à points, soit une distribution de fréquence cumulative, qui ne nécessite aucun segment.

Si vous souhaitez créer une distribution de fréquence avec des segments également espacés, vous devez décider du nombre de segments (ou de la largeur La décision dépend clairement du nombre de valeurs. Si vous avez beaucoup de valeurs, votre graphique sera meilleur et sera plus informatif si vous avez beaucoup de classes. Ceci La page wikipedia répertorie plusieurs méthodes pour décider de la largeur du bac à partir du nombre dobservations. La méthode la plus simple consiste à définir le nombre de bacs égal à la racine carrée du nombre de valeurs que vous regroupez.

Cette page de Hideaki Shimazaki explique une méthode alternative. Elle est un peu plus compliquée à calculer, mais semble faire un excellent travail. La partie supérieure de la page est une application Java. Faites défiler pour voir la théorie et lexplication, puis continuez à faire défiler pour trouver des liens vers les articles qui expliquent la méthode.

Commentaires

Réponse

Peut-être le document «  Des variations sur lhistogramme « de Denby et Mallows seront intéressantes:

Ce nouvel affichage que nous appelons » dhist « (pour en diagonale -cut histogram) préserve les caractéristiques souhaitables de lhist de largeur égale et de lhist de surface égale. Il affichera de grands bacs étroits comme lhistogramme ea lorsquil y a des pics dans les données et affichera des valeurs aberrantes isolées, tout comme lhistogramme habituel.

Ils mentionnent également ce code en R est disponible sur demande.

Réponse

Avez-vous vu le Méthode Shimazaki-Shinomoto ?

Bien quelle semble coûteuse en calcul, elle peut vous donner de bons résultats. Cela vaut la peine de lessayer si le temps de calcul nest pas votre problème.Il y a quelques implémentations de cette méthode en java, MATLAB, etc., dans le lien suivant, qui sexécute assez rapidement: interface web

Commentaires

  • Voici une implémentation: gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . Et oui, cest plus cher puisque vous choisissez une plage pour le nombre de casiers et que vous devez créer un histogramme pour chacun, puis calculer un coût, puis choisir celui qui coûte le moins cher.

Réponse

Je ne suis pas sûr que cela compte comme une bonne pratique, mais jai tendance à produire plus dun histogramme avec des largeurs de bac différentes et à choisir lhistogramme à quel histogramme utilisation basée sur quel histogramme correspond à linterprétation que jessaie de communiquer le mieux. Bien que cela introduit une certaine subjectivité dans le choix de lhistogramme, je le justifie par le fait que jai eu beaucoup plus de temps pour comprendre les données que la personne à qui je donne lhistogramme, donc je dois leur donner un message très concis.

Je suis aussi un grand fan de présenter des histogrammes avec le même nombre de points dans chaque bac plutôt que la même largeur de bac. Je trouve généralement que ceux-ci représentent les données bien mieux que la largeur constante du bac, bien quils soient plus difficiles à produire.

Commentaires

  • désolé, jaurais dû mentionner que je dois le faire de manière automatisée. loption  » de le faire plusieurs fois jusquà ce que je trouve celui qui correspond le mieux à mon objectif  » a gagné ‘ t travailler pour moi. doit être fait par calcul …
  • Je suis daccord – lidée quil y a un  » optimal  » bin la largeur est une hypothèse simplificatrice énorme.

Réponse

Si jai besoin de déterminer le nombre de bins par programme, je Commencez avec un histogramme qui a beaucoup plus de bacs que nécessaire. Une fois lhistogramme rempli, je combine les bacs jusquà ce que jaie suffisamment dentrées par bac pour la méthode que jutilise, par ex. si je veux modéliser les incertitudes de Poisson dans une expérience de comptage avec des incertitudes dune distribution normale jusquà ce que jaie plus de quelque chose comme 10 entrées.

Réponse

Veuillez voir cette réponse comme un complément de M. Réponse de Rob Hyndman .

Pour créer des graphiques dhistogramme avec exactement les mêmes intervalles ou « binwidths » en utilisant la règle Freedman – Diaconis avec le package R de base ou ggplot2, nous pouvons en utiliser un des valeurs de la fonction hist() à savoir breaks. Supposons que nous voulions créer un histogramme de qsec à partir des données mtcars en utilisant la règle de Freedman – Diaconis. En R de base, nous utilisons

x <- mtcars$qsec hist(x, breaks = "FD") 

Pendant ce temps, dans ggplot2 package que nous utilisons

h <- hist(x, breaks = "FD", plot = FALSE) qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white")) 

Ou, alternativement

ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white") 

Tous génèrent des histogrammes avec exactement les mêmes intervalles et le même nombre de cases que prévu.

Réponse

I avoir 600 observations pour Au g / t. La taille du bac 1 me donne ceci: entrez la description de limage ici

La sélection automatique (omettre la plage de casiers) donne ceci: entrez la description de limage ici

Les données semblent O « K sur les premier et deuxième graphiques, comme si il ny a aucun problème dintégrité des données. Seule la taille du bac 0,1 (g / t) répond à la question: les mesures étaient à la fois inexactes et imprécises entrez la description de limage ici

Mon jugement: 1. Il y a aucune technique de mesure sur Terre pour montrer la vraie valeur du phénomène naturel. Toutes les mesures sont approximatives, certaines étant proches de la vraie valeur. Cela dépend du plan déchantillonnage, de létalonnage, des qualifications humaines, etc. 2. Cest pourquoi la distribution est asymétrique plutôt que symétrique. 3.Néanmoins, la forme de la distribution doit ressembler au moins à une section en forme de cloche. Une cloche à la fois (sauf sil existe plusieurs environnements géologiques). La distribution des fréquences avec la manipulation de la taille des bacs peut aider à révéler un modèle de précision et de précision des mesures. Alors quil faut un relevé expérimental de la taille du bac plutôt quune règle taillée dans la pierre.

Commentaires

  • Cest plus un commentaire quun répondez à moins que vous ne précisiez la morale. Je ‘ d dire que la morale est la suivante: toutes les règles sont des règles empiriques, certaines ont une base plus statistique que dautres, mais la plupart des règles peuvent ne pas faire ce que vous souhaitez si les distributions ont une asymétrie très élevée ou kurtosis. Alors, utilisez votre jugement aussi.
  • Vous avez ajouté des commentaires, mais je ne suis pas certain que de nouveaux détails utiles soient apportés au fil de discussion. 1.est bien pour moi mais pas le problème ici. 2. ne ‘ t ne découle pas de 1. car certaines distributions sont presque symétriques. 3. est douteux: il existe de nombreuses situations où des formes autres que des cloches sont attendues. 4. est également douteuse car la qualité des mesures originales nest souvent pas évidente à partir dun histogramme, mais il est souvent préférable de lexaminer en tenant compte de la structure très fine dune distribution.
  • 2. Presque symétrique nest pas symétrique. Vous ne pouvez pas être presque enceinte: enceinte ou non.
  • Bien sûr, mais la symétrie exacte des données est si rare que si javais dit  » symétrique  » quelquun pourrait raisonnablement sy opposer aussi. Il ‘ est très facilement presque symétrique; cest pourquoi et comment nous avons des mesures dasymétrie.
  • Cest noté, mais votre commentaire était général et manquait du contexte que vous donnez maintenant. À mon tour, jai dit  » dubious  » pas  » faux « . Mon commentaire majeur reste que votre réponse najoute pas ‘ beaucoup au fil de discussion sur la façon de choisir la taille du bac ou, de manière équivalente, le nombre de bacs. Avoir un autre exemple dans lequel il est ‘ difficile est une rotation sur la question, pas vraiment une réponse.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *