Nombre optimal de cases dans l'histogramme par la règle de Freedman – Diaconis: différence entre le taux théorique et le nombre réel


8

Wikipédia signale que selon la règle de Freedman et Diaconis, le nombre optimal de casiers dans un histogramme, devrait croître commek

kn1/3

où est la taille de l'échantillon.n

Cependant, si vous regardez la nclass.FDfonction dans R, qui implémente cette règle, au moins avec les données gaussiennes et lorsque , le nombre de casiers semble croître plus rapidement que , plus proche de (en fait, le meilleur ajustement suggère ). Quelle est la justification de cette différence?log(n)(8,16)n1/3n11/3mn0.4


Modifier: plus d'informations:

entrez la description de l'image ici

La ligne est celle de l'OLS, avec une intersection de 0,429 et une pente de 0,4. Dans chaque cas, les données ( x) ont été générées à partir d'un gaussien standard et introduites dans le nclass.FD. Le tracé représente la taille (longueur) du vecteur par rapport au nombre optimal de classes renvoyé par la nclass.FDfonction.

Citant de wikipedia:

Une bonne raison pour laquelle le nombre de casiers devrait être proportionnel à est la suivante: supposons que les données sont obtenues comme n réalisations indépendantes d'une distribution de probabilité bornée avec une densité lisse. Ensuite, l'histogramme reste également «robuste» car n tend vers l'infini. Si est la «largeur» de la distribution (par exemple, l'écart-type ou la plage inter-quartile), alors le nombre d'unités dans un casier (la fréquence) est d'ordre et l'erreur-type relative est d'ordre . Par rapport au bac suivant, la variation relative de la fréquence est d'ordre condition que la dérivée de la densité soit non nulle. Ces deux sont du même ordre sin1/3snh/ss/(nh)h/shest d'ordre , de sorte que est d'ordre .s/n1/3kn1/3

La règle Freedman – Diaconis est:

h=2IQR(x)n1/3

Si je me souviens bien, le nombre de cases est proportionnel à , pas comme indiqué ci-dessus. n1/3
Nick Cox

1
Il est tard dans la journée pour moi de vérifier la littérature, mais votre formule ne sonne pas avec moi.
Nick Cox

Ce ne sont sûrement rien de plus que des règles de base raisonnables, et donc un écart n'a aucune importance théorique. Y at-il plus que cela?
Michael Lew

1
Vous ne traitez pas ; vous semblez tracer (arrondi). À moins que vous ne standardisiez vos ensembles de données à une valeur constante de , ce graphique confond les changements de la gamme avec les changements de (probablement l'IQR sera assez stable). Alors, que faites-vous exactement pour générer cette intrigue? hk=Range n1/3/(2 IQR)Range/IQRk
whuber

2
@whuber: oui, cela semble être la cause de la différence: j'ai oublié de m'ajuster à l'augmentation de la plage.
user603

Réponses:


8

La raison vient du fait que la fonction d'histogramme devrait inclure toutes les données, elle doit donc couvrir la plage des données.

La règle Freedman-Diaconis donne une formule pour la largeur des bacs.

La fonction donne une formule pour le nombre de bacs.

La relation entre le nombre de bacs et la largeur des bacs sera affectée par la plage des données.

Avec les données gaussiennes, la plage attendue augmente avec .n

Voici la fonction:

> nclass.FD
function (x) 
{
    h <- stats::IQR(x)
    if (h == 0) 
        h <- stats::mad(x, constant = 2)
    if (h > 0) 
        ceiling(diff(range(x))/(2 * h * length(x)^(-1/3)))
    else 1L
}
<bytecode: 0x086e6938>
<environment: namespace:grDevices>

diff(range(x)) est la plage des données.

Donc, comme nous le voyons, il divise la plage de données par la formule FD pour la largeur de bac (et arrondit) pour obtenir le nombre de bacs.

Il semble que j'aurais pu être plus clair, alors voici une explication plus détaillée:
La règle Freedman-Diaconis réelle n'est pas une règle pour le nombre de bacs, mais pour la largeur de bac. D'après leur analyse, la largeur du bac devrait être proportionnelle à . Étant donné que la largeur totale de l'histogramme doit être étroitement liée à la plage d'échantillonnage (elle peut être un peu plus large, en raison de l'arrondi à de bons nombres) et que la plage attendue change avec , le nombre de casiers n'est pas tout à fait inversement proportionnel à bin-width, mais doit augmenter plus rapidement que cela. Donc, le nombre de casiers ne devrait pas augmenter comme - près de lui, mais un peu plus vite, en raison de la façon dont la plage entre en elle.n1/3nn1/3

En regardant les données des tableaux de Tippett de 1925 [1], la plage attendue dans les échantillons normaux standard semble augmenter assez lentement avec , bien que plus lentement que :nlog(n)

entrez la description de l'image ici

(en effet, amibe souligne dans les commentaires ci-dessous qu'elle devrait être proportionnelle - ou presque - à , ce qui croît plus lentement que votre analyse dans la question ne semble le suggérer. Cela me fait me demander s'il n'y a pas un autre problème à venir, mais je n'ai pas cherché à savoir si cet effet de plage explique pleinement vos données.)log(n)

Un rapide coup d'œil aux nombres de Tippett (qui vont jusqu'à n = 1000) suggère que la plage attendue dans un gaussien est très proche de linéaire dans sur , mais il semble pour ne pas être réellement proportionnelle aux valeurs de cette plage.log(n)10n1000

entrez la description de l'image ici

[1]: LHC Tippett (1925). "Sur les individus extrêmes et la gamme d'échantillons prélevés sur une population normale". Biometrika 17 (3/4): 364–387


1
Non, pas vraiment. Plus de détails ajoutés.
Glen_b -Reinstate Monica

1
La règle Freedman-Diaconis réelle n'est pas une règle pour le nombre de bacs, mais pour la largeur de bac. D'après leur analyse, la largeur du bac devrait être proportionnelle àn1/3. Étant donné que la largeur totale de l'histogramme doit être étroitement liée à la plage d'échantillonnage (elle peut être un peu plus large, en raison de l'arrondi à de bons nombres), et la plage attendue change avecn, le nombre de casiers n'est pas inversement proportionnel à la largeur de casier. Le nombre de bacs ne devrait donc pas augmentern1/3- du moins pas tout à fait, en raison de la manière dont la gamme entre en jeu.
Glen_b -Reinstate Monica

3
Le raisonnement que vous citez de wikipedia dans votre question ne prend pas en compte l'effet de la plage d'échantillonnage.
Glen_b -Reinstate Monica

1
Je pense que cela le résout.
user603

2
Si j'applique correctement ce post math.SE , la plage devrait augmenterlog(n).
amoeba
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.