[PYTHON] [Statistiques pour les programmeurs] Courbe de Lorenz et coefficient de Gini

table des matières

Statistiques pour les programmeurs - Table des matières

Aperçu

On suppose que vous avez déjà lu les articles suivants. [Statistiques pour les programmeurs] Distribution de fréquence et histogramme

Quelle est la courbe de Lorenz?

Il s'agit d'un graphique créé pour vérifier les biais de revenu et de population.

À titre d'exemple, nous étudierons le biais démographique des villages dans une certaine zone. Le nombre total de villages est de 100. La population de chaque village est la suivante. C'est difficile à voir, mais la population totale de tous les villages est répertoriée.

population = [
124, 151, 102, 189, 160, 145, 120, 132, 135, 159, 114, 175, 171, 124, 154,
177, 152, 120, 144, 121, 113, 163, 186, 196, 183, 105, 130, 149, 130, 123, 
175, 143, 186, 182, 184, 174, 134, 158, 196, 109,
216, 285, 209, 288, 276, 281, 283, 200, 262, 
267, 235, 206, 245, 232, 299, 249, 295, 232, 206, 237,
369,
487, 450, 487,
597, 548,
682,
712, 706, 755, 700, 709, 747, 773, 796, 739, 716, 756, 767, 752, 728, 750,
829, 875, 845, 881, 865, 804, 845, 890, 872, 833, 874, 845, 859, 837, 847, 811, 893, 807
]

Pour trouver la courbe de Lorenz

La courbe de Lorenz nécessite deux types de fréquences relatives cumulées sur l'axe X et l'axe Y.

  1. Fréquence relative cumulative de fréquence de chaque classe
  2. Fréquence relative cumulée du total des valeurs appartenant à chaque classe

Je vais expliquer chacun d'eux.

1. Fréquence relative cumulative de fréquence de chaque classe

La première consiste à calculer la fréquence relative cumulée, où la classe est la population et la fréquence est le nombre de villages.

Calculez de la même manière que celle décrite dans cet article. [Statistiques pour les programmeurs] Distribution de fréquence et histogramme

classe Valeur de classe la fréquence Fréquence relative Fréquence relative cumulative
Plus de 100 personnes-Moins de 200 personnes 150 40 0.40 0.40
Plus de 200 personnes-Moins de 300 personnes 250 20 0.20 0.60
Plus de 300 personnes-Moins de 400 personnes 350 1 0.01 0.61
Plus de 400 personnes-Moins de 500 personnes 450 3 0.03 0.64
Plus de 500 personnes-Moins de 600 personnes 550 2 0.02 0.66
Plus de 600 personnes-Moins de 700 personnes 650 1 0.01 0.67
Plus de 700 personnes-Moins de 800 personnes 750 15 0.15 0.82
Plus de 800 personnes-Moins de 900 personnes 850 18 0.18 1.00

2. Fréquence relative cumulée du total des valeurs appartenant à chaque classe

La seconde consiste à calculer la fréquence relative cumulée, où la classe est la population et la fréquence est le nombre total de villages pour chaque classe.

Pour obtenir le nombre total de villages pour chaque classe, calculez en fonction de la valeur de la liste de variables nommée population ci-dessus. Par exemple, le nombre total de personnes «400 ou plus - moins de 500» est de 1 424, comme indiqué ci-dessous.

1424 = 487 + 450 + 487

De plus, comme la population totale de tous les villages est de 41029 (la somme de toutes les valeurs de population), la fréquence relative est Dans le cas de "400 ou plus - moins de 500", il sera de 0,03 (arrondi au troisième chiffre inférieur).

0.03 = \frac{1424}{41029}

Chaque classe est calculée de cette manière, et la fréquence relative cumulée du nombre de personnes est calculée.

Tableau de distribution de fréquence

Il s'agit d'un tableau de distribution de fréquences qui résume le premier et le second mentionnés ci-dessus. (La fréquence relative et la fréquence relative cumulée sont arrondies à la troisième décimale inférieure)

classe Valeur de classe la fréquence Fréquence relative Fréquence relative cumulative de fréquence Nombre total de personnes (fréquence) Fréquence relative du nombre de personnes Fréquence relative cumulée du nombre de personnes
Plus de 100 personnes-Moins de 200 personnes 150 40 0.40 0.40 5988 0.14 0.15
Plus de 200 personnes-Moins de 300 personnes 250 20 0.20 0.60 5003 0.12 0.27
Plus de 300 personnes-Moins de 400 personnes 350 1 0.01 0.61 369 0.01 0.28
Plus de 400 personnes-Moins de 500 personnes 450 3 0.03 0.64 1424 0.03 0.31
Plus de 500 personnes-Moins de 600 personnes 550 2 0.02 0.66 1145 0.02 0.34
Plus de 600 personnes-Moins de 700 personnes 650 1 0.01 0.67 682 0.01 0.36
Plus de 700 personnes-Moins de 800 personnes 750 15 0.15 0.82 11106 0.27 0.63
Plus de 800 personnes-Moins de 900 personnes 850 18 0.18 1.00 15312 0.37 1.00

La courbe de Lorenz est un graphique avec la «fréquence relative cumulée de la fréquence» sur l'axe des x et la «fréquence relative cumulée du nombre de personnes» sur l'axe des y.

Dessinez une courbe de Lorenz

Représentez graphiquement les données ci-dessus à l'aide de matplotlib.

Référence: Draw graph with jupyter (ipython notebook) + matplotlib + vagrant

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

#Coordonnées horizontales,Fréquence relative cumulative de fréquence
left = np.array([
  0,
  0.40,
  0.60,
  0.61,
  0.64,
  0.66,
  0.67,
  0.82,
  1.00,
])
#Coordonnées verticales,Fréquence relative cumulée du nombre de personnes
height = np.array([
  0,
  0.15,
  0.27,
  0.28,
  0.31,
  0.34,
  0.36,
  0.63,
  1.00
])
ax.plot(left, height, marker='o')
#Titre du graphique
plt.title('Lorenz Curve')
#Titre de l'axe X
plt.xlabel('villages')
#Titre de l'axe Y
plt.ylabel('population')

left = np.array([0, 0.2, 0.4, 0.6, 0.8, 1.0])
height = np.array([0, 0.2, 0.4, 0.6, 0.8, 1.0])
ax.plot(left, height, linestyle='dashed', color='black')

#Étiquette de l'axe X
label = [0, 0.2, 0.4, 0.6, 0.8, 1.0] 

#Emplacement de l'axe X pour atteindre l'étiquette
ax.set_xticks(label)
#Définissez l'étiquette sur l'axe X
ax.set_xticklabels(label)

#Emplacement de l'axe Y pour atteindre l'étiquette
ax.set_yticks(label)
#Définissez l'étiquette sur l'axe Y
ax.set_yticklabels(label)

#dessin
plt.show()

download.png

Cette courbe bleue est la courbe de Lorenz.

Ce que vous pouvez voir en regardant la courbe de Lorenz

Je vais vous expliquer comment regarder la courbe de Lorenz créée ci-dessus.

download2.png

Regardons les coordonnées de la pièce dessinée avec la ligne rouge. Ce que nous pouvons voir à partir de là, c'est qu'environ 65% des villages ne représentent qu'environ 36% de la population totale. Cela signifie que les 64% restants de la population sont biaisés en faveur d'un autre village. De plus, plus le renflement de la courbe est grand, plus il est biaisé.

coefficient de Gini

La valeur numérique de ce biais est appelée coefficient de Gini. En ce qui concerne le calcul du coefficient de Gini, premièrement, la ligne brisée dans le graphique ci-dessus est appelée "ligne d'égalité parfaite". Le coefficient de Gini est obtenu en doublant l'aire entre cette «ligne d'égalité parfaite» et la courbe de Lorenz.

Le coefficient de Gini est une valeur de 0 à 1, et plus il est proche de 1, plus le biais est grand, et plus il est proche de 0, moins le biais est important.

À propos, lorsque le coefficient de Gini est égal à 0, la courbe de Lorenz chevauche la droite d'égalité parfaite.

Calculer le coefficient de Gini

Calculez en fait le coefficient de Gini. Ici, pour faciliter le calcul, les valeurs suivantes sont utilisées à la place de l'exemple ci-dessus.

Axe X
0, 0.4, 0.8, 1

Axe Y
0, 0.2, 0.6, 1.0

À partir de cette valeur, la courbe de Lorentz suivante est créée.

download (1).png

Divisez ce graphique comme indiqué ci-dessous et soustrayez l'aire des parties 1, 2 et 3 de la figure du triangle avec la ligne d'égalité parfaite comme côté diagonal et doublez-la pour obtenir le coefficient de Gini.

download (1).png

Tout d'abord, trouvez l'aire du triangle avec la ligne d'égalité parfaite comme côté diagonal.

0.5 = 1\times1\div2

Trouvez la zone de la partie 1. Puisqu'il s'agit d'un triangle rectangle avec une base de 0,4 et une hauteur de 0,2, il peut être calculé comme suit.

0.04 = 0.4\times0.2\div2

Trouvez la zone de la partie 2. Lorsqu'il est tourné vers la droite, il devient un trapèze avec une base supérieure de 0,2, une base inférieure de 0,6 et une hauteur de 0,4, qui peut être calculée ci-dessous.

0.16 = (0.2+0.6)\times0.4\div2

Trouvez la zone de la partie 3. Lorsqu'il est également tourné vers la droite, il devient un trapèze avec une base supérieure de 0,6, une base inférieure de 1 et une hauteur de 0,2, de sorte qu'il peut être calculé comme suit.

0.16 = (0.6+1)\times0.2\div2

Si vous soustrayez ces trois valeurs de l'aire du triangle dont le côté diagonal est la droite d'égalité parfaite et que vous la doublez, le coefficient de Gini sera obtenu. Par conséquent, 0,28 est le coefficient de Gini comme indiqué dans la formule suivante.

0.28 = (0.5 - 0.04 - 0.16 - 0.16)\times2

c'est tout

référence

Recommended Posts

[Statistiques pour les programmeurs] Courbe de Lorenz et coefficient de Gini
[Statistiques pour les programmeurs] Dispersion, écart type et coefficient de fluctuation
[Introduction à Scipy] Calcul de la courbe de Lorenz et du coefficient de Gini ♬
[Statistiques pour les programmeurs] Probabilité conditionnelle et théorème du multiplicateur
[Statistiques pour les programmeurs] Théorème de Bayes
[Statistiques pour les programmeurs] Box whiskers
[Statistiques pour les programmeurs] Variables de probabilité, distributions de probabilité et fonctions de densité de probabilité
[Statistiques pour les programmeurs] Moyenne, médiane et la plus fréquente
[Statistiques pour les programmeurs] Qu'est-ce qu'un événement?
[Statistiques pour les programmeurs] Table des matières-Science des données
Fuzzing et statistiques