J'implémente divers algorithmes pour estimer le meilleur nombre de casiers à utiliser pour les histogrammes. La plupart de ceux que j'implémente sont décrits sur la page Wikipedia "Histogramme" dans la section " Nombre de bacs et largeur " *.
Je suis coincé sur un problème avec la formule de Doane:
1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))
où n
est la taille des données.
Le problème est quand le kurtosis est négatif et n >> 1
parce que l'argument du log
devient négatif.
* (cette page a changé depuis qu'elle a été publiée, lien modifié pour pointer vers la page telle qu'elle était au moment de la publication)
Réponses:
Cette réponse a subi des changements importants lorsque j'examine la page wikipedia. J'ai laissé les réponses en grande partie telles qu'elles étaient mais y ai ajouté, donc à l'heure actuelle, cela forme une progression de la compréhension; les dernières parties sont celles où se trouvent les meilleures informations.
Réponse courte: la page wikipedia - et la formule de l'OP, qui semble avoir été la même - sont tout simplement erronées, pour au moins trois raisons différentes. Je vais laisser ma discussion d'origine (qui supposait que l'OP et wikipedia avaient raison) car cela explique certains problèmes. Une meilleure discussion suivra plus tard. Le petit conseil: oubliez simplement Doane. Si vous devez l' utiliser, utilisez ce que wikipedia dit maintenant (je l'ai corrigé).
Je crois que la formule doit faire référence à un excès de kurtosis; ma raison en est qu'il modifie une formule pour les données normales pour tenir compte des données non normales de sorte que vous vous attendez à ce qu'il reproduise celui non modifié à la normale. Il le fait si vous utilisez un excès de kurtosis.
Je suggérerais également que dans tous les cas, cela donnera beaucoup trop peu de casiers à des échantillons de grande taille, même quand cela fonctionne comme prévu.
Vous pouvez trouver ce document (par le CVer régulier Rob Hyndman ):
http://www.robjhyndman.com/papers/sturges.pdf
d'intérêt. Si l'argument de Sturges est faux, la formule de Doane a le même problème ... comme le note clairement Rob dans le document.
Dans cet article (et dans cette réponse ), il fait un signe de tête à la règle Freedman-Diaconis. Dans le document, il souligne également l'approche mentionnée par Matt Wand (il se réfère au document de travail qui ne semble pas être en ligne, mais le document suivant est disponible si vous y avez accès):
http://www.jstor.org/discover/10.2307/2684697
[Modifier: en fait, un lien vers le document de travail se trouve sur la page citeseer ]
Cette approche consiste à estimer approximativement des fonctionnelles particulières afin d'obtenir des largeurs de bacs approximativement optimales (en termes d'erreur quadratique moyenne intégrée, MISE) pour estimer la densité sous-jacente. Bien que ceux-ci fonctionnent bien et donnent beaucoup plus de bacs que Sturges ou Doane en général, parfois je préfère toujours utiliser plus de bacs, bien que ce soit généralement une très bonne première tentative.
Franchement, je ne sais pas pourquoi l'approche de Wand (ou à tout le moins la règle Fredman Diaconis) n'est pas un défaut à peu près partout.
R propose au moins le calcul Freedman-Diaconis du nombre de bacs:
Voir
?nclass.FD
Personnellement, pour moi, c'est trop peu de bacs dans les deux premiers cas au moins; Je doublerais ces deux malgré le fait que cela pourrait être un peu plus bruyant qu'optimal. Comme n devient grand, je pense que cela fonctionne très bien dans la plupart des cas.
Modifier 2:
J'ai décidé d'enquêter sur le problème d'asymétrie vs kurtosis auquel @PeterFlom a à juste titre exprimé sa perplexité.
Je viens de jeter un coup d'œil au document de Doane auquel il est lié (je l'avais lu auparavant ... mais c'était il y a presque 30 ans) - il ne fait aucune référence à la kurtosis, seulement à l'asymétrie.
Il me semble que l' argument de Doane devrait s'étendre avec bonheur à Kurtosis, mais l' erreur standard correcte devrait être utilisée.
Cependant, puisque Doane s'appuie sur Sturges et l'argument de Sturges semble être erroné, peut-être que toute l'entreprise est condamnée. Dans tous les cas, j'ai édité la page de discussion Histogramme sur wikipedia en notant l'erreur.
---
la source
La mesure de kurtosis définie en termes de deuxième et quatrième moments n'est jamais négative ( voir ), puis la
log(1+...)>0
.Cette quantité est mis en oeuvre dans la commande
kurtosis()
de la bibliothèque de Rmoments
. De plus, en utilisant la commande,hist()
vous pouvez spécifier le nombre de pauses comme suitLa formule utilisée dans la commande
kurtosis()
est simplemean((data - mean(data))^4)/mean((data - mean(data))^2)^2
.Maintenant, si vous voulez rechercher quelle est la `` meilleure '' formule, vous aurez besoin d'un critère. Considérez que cela a été largement discuté dans la littérature statistique.
la source
log(n,2)
au lieu delog(n)
. MAIS, l'entrée wikipedia ainsi que d'autres sources indiquent que cela devrait être le caslog
.