Je suis intéressé à trouver une méthode optimale pour déterminer le nombre de casiers à utiliser dans un histogramme. Mes données devraient aller de 30 à 350 objets au maximum, et en particulier j'essaie d'appliquer un seuillage (comme la méthode d'Otsu) où les "bons" objets, pour lesquels je devrais avoir moins d'éléments et qui devraient être plus dispersés, sont séparés " "mauvais" objets, dont la valeur devrait être plus dense. Une valeur concrète aurait un score de 1-10 pour chaque objet. J'avais eu 5-10 objets avec des scores 6-10, et 20-25 objets avec des scores 1-4. J'aimerais trouver un modèle de regroupement d'histogrammes qui permette généralement à une méthode comme la méthode d'Otsu de définir un seuil pour les objets à faible score. Cependant, dans l'implémentation d'Otsu que j'ai vue, la taille de la corbeille était de 256, et souvent j'ai beaucoup moins de points de données que 256, ce qui pour moi suggère que 256 n'est pas un bon numéro de casier. Avec si peu de données, quelles approches dois-je adopter pour calculer le nombre de bacs à utiliser?
la source
Réponses:
La règle Freedman-Diaconis est très robuste et fonctionne bien dans la pratique. La largeur de la corbeille est définie sur . Le nombre de cases est donc , où est le nombre d'observations, max la valeur maximale et min la valeur minimale.h=2×IQR×n−1/3 (max−min)/h n
En base R, vous pouvez utiliser:
Pour les autres bibliothèques de traçage sans cette option (par exemple,
ggplot2
), vous pouvez calculer binwidth comme suit:la source
IQR
?num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
nclass.FD
n'existait pas il y a neuf ans.Si vous utilisez trop peu de bacs, l'histogramme ne représente pas vraiment les données. Si vous avez trop de bacs, vous obtenez un aspect de peigne cassé, ce qui ne donne pas non plus une idée de la répartition.
Une solution consiste à créer un graphique qui montre chaque valeur. Soit un diagramme en points, ou une distribution de fréquence cumulative, qui ne nécessite pas de bacs.
Si vous souhaitez créer une distribution de fréquence avec des cases équidistantes, vous devez décider du nombre de cases (ou de la largeur de chacune). La décision dépend clairement du nombre de valeurs. Si vous avez beaucoup de valeurs, votre graphique aura une meilleure apparence et sera plus informatif si vous avez beaucoup de bacs. Cette page wikipedia répertorie plusieurs méthodes pour choisir la largeur de la corbeille à partir du nombre d'observations. La méthode la plus simple consiste à définir le nombre de bacs égal à la racine carrée du nombre de valeurs que vous binz.
Cette page de Hideaki Shimazaki explique une méthode alternative. Le calcul est un peu plus compliqué, mais semble faire un excellent travail. La partie supérieure de la page est une application Java. Faites défiler la page pour voir la théorie et l'explication, puis continuez à faire défiler pour trouver des liens vers les articles expliquant la méthode.
la source
Peut-être le papier " Variations sur l'histogramme " de Denby et Mallows sera-t-il intéressant:
Ils mentionnent également que le code en R est disponible sur demande.
la source
Je ne suis pas sûr que cela soit considéré comme une bonne pratique, mais j’ai tendance à produire plus d’un histogramme avec des largeurs de corbeille différentes et à choisir l’histogramme que l’histgram doit utiliser en fonction du histogramme qui correspond à l’interprétation que je cherche à mieux communiquer. Bien que cela introduise une certaine objectivité dans le choix de l'histogramme, je le justifie par le fait que j'ai eu beaucoup plus de temps pour comprendre les données que la personne à laquelle je donne l'histogramme. J'ai donc besoin de leur donner un message très concis.
Je suis également 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 de corbeille constante bien qu'ils soient difficiles à produire.
la source
Avez-vous vu la méthode Shimazaki-Shinomoto ?
Bien que cela semble coûteux en calcul, il peut vous donner de bons résultats. Cela vaut la peine d'essayer si le temps de calcul n'est pas votre problème. Il existe quelques implémentations de cette méthode en java, MATLAB, etc., dans le lien suivant, qui fonctionne assez vite: interface web
la source
Si je dois déterminer le nombre de bacs par programme, je commence généralement par un histogramme qui contient beaucoup plus de bacs que nécessaire. Une fois que l'histogramme est rempli, je combine les bacs jusqu'à ce que je dispose d'assez d'entrées pour la méthode que j'utilise, par exemple si je veux modéliser les incertitudes de Poisson dans une expérience de comptage avec des incertitudes d'une distribution normale jusqu'à obtenir plus que 10 les entrées.
la source
Veuillez voir cette réponse en complément de la réponse de M. Rob Hyndman .
Afin de créer des tracés d'histogramme avec exactement les mêmes intervalles ou «binwidths» à l'aide de la règle Freedman – Diaconis avec R de base ou
ggplot2
package, nous pouvons utiliser l'une des valeurs dehist()
function à savoirbreaks
. Supposons que nous voulions créer un histogramme àqsec
partir demtcars
données en utilisant la règle Freedman – Diaconis. En base R, nous utilisonsEn attendant, dans le
ggplot2
paquet que nous utilisonsOu bien
Tous génèrent des tracés d'histogramme avec exactement les mêmes intervalles et le même nombre de bacs que prévu.
la source
J'ai 600 observations pour Au g / t. La taille du bac 1 me donne ceci:
La sélection automatique (omettre la plage de casiers) donne ceci:
Les données ressemblent à O'K sur les premier et deuxième graphiques, comme s'il n'y avait aucun problème d'intégrité des données. Seule la taille de cellule 0,1 (g / t) répond à la question: les mesures étaient à la fois inexactes et imprécises
Mon jugement: 1. Il n'y a pas de technique de mesure sur Terre pour montrer la vraie valeur d'un phénomène naturel. Toutes les mesures sont approximatives, certaines étant proches de la valeur réelle. Cela dépend du plan d'échantillonnage, du calibrage, des qualifications humaines, etc. 2. C'est pourquoi la distribution est asymétrique plutôt que symétrique. 3. Néanmoins, la forme de la distribution devrait ressembler à une section "en forme de cloche", au moins approximativement. Une cloche à la fois (sauf s'il existe plusieurs environnements géologiques). 4.La distribution de fréquence avec la manipulation de la taille de la corbeille peut aider à révéler un modèle de précision et d'exactitude si les mesures avaient été effectuées. Il faut donc expérimenter la taille de la corbeille plutôt qu’une règle taillée dans la pierre.
la source