web-dev-qa-db-fra.com

Boxplots in matplotlib: marqueurs et valeurs aberrantes

J'ai quelques questions sur boxplots dans matplotlib:

Question A. Que représentent les marqueurs que j'ai mis en évidence ci-dessous avec Q1, Q2 et Q3? Je crois que Q1 est maximum et Q3 sont des valeurs aberrantes, mais qu'est-ce que Q2?

 enter image description here

Question B Comment matplotlib identifie-t-il les valeurs aberrantes? (c.-à-d. comment sait-il qu’elles ne sont pas les vraies valeurs max et min?)

50

Une image vaut mieux que mille mots. Notez que les points aberrants (les marqueurs + dans votre tracé) sont simplement des points en dehors de la marge [(Q1-1.5 IQR), (Q3+1.5 IQR)] large ci-dessous. 

 enter image description here

Cependant, l'image n'est qu'un exemple pour un ensemble de données normalement distribué. Il est important de comprendre que matplotlib estime ne pas estime d’abord une distribution normale et calcule les quartiles à partir des paramètres de distribution estimés, comme indiqué ci-dessus. 

Au lieu de cela, la médiane et les quartiles sont calculés directement à partir des données. Ainsi, votre boîte à moustaches peut avoir un aspect différent en fonction de la distribution de vos données et de la taille de l’échantillon, par exemple asymétrique et avec plus ou moins de valeurs aberrantes.

80

La case représente les premier et troisième quartiles, la ligne rouge la médiane (2e quartile). La documentation donne les moustaches par défaut à 1,5 IQR:

boxplot(x, notch=False, sym='+', vert=True, whis=1.5,
        positions=None, widths=None, patch_artist=False,
        bootstrap=None, usermedians=None, conf_intervals=None)

et 

whis: [défaut 1.5]

Définit la longueur des moustaches en fonction de la plage du quartile intérieur. Ils s'étendent jusqu'au point de données le plus extrême dans la plage de données (whis * (75% à 25%)).

Si vous ne comprenez pas les différentes représentations de la boîte à moustaches, essayez de lire la description dans wikipedia .

22
seth

En plus de la réponse à seth (la documentation n’est pas très précise à ce sujet):

(valeur minimale de 25% - 1,5 IQR)

C'est le code qui calcule la position des moustaches:

        # get high extreme
        iq = q3 - q1
        hi_val = q3 + whis * iq
        wisk_hi = np.compress(d <= hi_val, d)
        if len(wisk_hi) == 0 or np.max(wisk_hi) < q3:
            wisk_hi = q3
        else:
            wisk_hi = max(wisk_hi)

        # get low extreme
        lo_val = q1 - whis * iq
        wisk_lo = np.compress(d >= lo_val, d)
        if len(wisk_lo) == 0 or np.min(wisk_lo) > q1:
            wisk_lo = q1
        else:
            wisk_lo = min(wisk_lo)
13
Dirk

Juste au cas où cela pourrait profiter à quelqu'un d'autre, j'avais besoin de mettre une légende sur l'un de mes graphes de boîtes à moustaches, alors j'ai créé ce petit fichier .png dans Inkscape et j'ai pensé le partager.

 enter image description here

4
June Skeeter

L'image ci-dessous montre les différentes parties d'une boîte à moustaches. 

 enter image description here

Quantile 1/Q1: 25ème percentile

Interquartile Range (IQR): 25ème percentile au 75ème percentile. 

Médiane (Quantile 2/Q2): 50ème percentile.

Quantile 3/Q3: 75ème percentile. 

Je devrais noter que la partie bleue sont les moustaches de la boîte à moustaches. 

L'image ci-dessous compare le diagramme en boîtes d'une distribution normale à la fonction de densité de probabilité. Cela devrait aider à expliquer le "minimum", le "maximum" et les valeurs aberrantes. 

 enter image description here

"Minimum": (Q1-1.5 IQR) 

"Maximum": (Q3 + 1.5 IQR)

Comme le dit zelusp, 99,3% des données sont comprises dans 2,698σ (écarts types) pour une distribution normale. Les cercles verts (points aberrants) dans l'image ci-dessous représentent les 0,7% restants des données. Ici est une dérivation de la façon dont ces chiffres ont été créés. 

Voici un graphique qui illustre les composants de la boîte à partir d'un stats.stackexchange answer . Notez que k = 1,5 si vous ne fournissez pas le mot clé whis dans les pandas.

 enter image description here

La fonction de boîte à moustaches dans Pandas est un wrapper pour matplotlib.pyplot.boxplot. La documentation de matplotlib explique les composants des boîtes en détail:

Question A:

Le cadre s'étend des valeurs du quartile inférieur au quartile supérieur des données, avec une ligne à la médiane.

je. e. un quart des valeurs des données en entrée est en dessous de la case et un quart au dessus de la case.

Question B:

whis: float, sequence ou string (valeur par défaut = 1,5)

En tant que float, détermine la portée des moustaches au-delà du premier et troisième quartiles. En d’autres termes, où IQR est le interquartile (Q3-Q1), la moustache supérieure s’étendra pour durer datum inférieur à Q3 + whis * IQR). De même, le whisker inférieur sera s'étendre à la première donnée supérieure à Q1 - whis * IQR. Au-delà de moustaches, les données sont considérées comme des valeurs aberrantes et sont tracées individuellement points.

Matplotlib (et les pandas) vous offre également de nombreuses options pour modifier cette définition par défaut des moustaches:

Définissez-le sur une valeur déraisonnablement élevée pour forcer les moustaches à afficher les valeurs min et max. Vous pouvez également définir cette option sur une valeur croissante séquence de centile (par exemple, [5, 95]) pour définir les moustaches à une valeur spécifique percentiles des données. Enfin, whis peut être la chaîne 'plage' à forcer les moustaches au minimum et au maximum des données.

1
Joooeey