[PYTHON] [Statistik für Programmierer] Lorenzkurve und Gini-Koeffizient

Inhaltsverzeichnis

Statistik für Programmierer - Inhaltsverzeichnis

Überblick

Es wird davon ausgegangen, dass Sie die folgenden Artikel bereits gelesen haben. [Statistik für Programmierer] Häufigkeitsverteilung und Histogramm

Was ist die Lorenzkurve?

Es handelt sich um ein Diagramm zur Überprüfung des Einkommens und der Bevölkerungsverzerrung.

Als Beispiel werden wir die Bevölkerungsverzerrung von Dörfern in einem bestimmten Gebiet untersuchen. Die Gesamtzahl der Dörfer beträgt 100. Die Bevölkerung jedes Dorfes ist wie folgt. Es ist schwer zu sehen, aber die Gesamtbevölkerung aller Dörfer ist aufgeführt.

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
]

Um die Lorenzkurve zu finden

Die Lorenzkurve erfordert zwei Arten von kumulativen relativen Frequenzen auf der X-Achse und der Y-Achse.

  1. Kumulative relative Häufigkeit der Häufigkeit jeder Klasse
  2. Kumulative relative Häufigkeit der Summe der zu jeder Klasse gehörenden Werte

Ich werde jeden von ihnen erklären.

1. Kumulative relative Häufigkeit der Häufigkeit jeder Klasse

Die erste besteht darin, die kumulative relative Häufigkeit zu berechnen, wobei die Klasse die Bevölkerung und die Häufigkeit die Anzahl der Dörfer ist.

Berechnen Sie auf die gleiche Weise wie in diesem Artikel beschrieben. [Statistik für Programmierer] Häufigkeitsverteilung und Histogramm

Klasse Klassenwert Frequenz Relative Frequenz Kumulative relative Häufigkeit
Über 100 Leute-Weniger als 200 Menschen 150 40 0.40 0.40
Über 200 Menschen-Weniger als 300 Menschen 250 20 0.20 0.60
Über 300 Menschen-Weniger als 400 Menschen 350 1 0.01 0.61
Über 400 Menschen-Weniger als 500 Menschen 450 3 0.03 0.64
Über 500 Menschen-Weniger als 600 Menschen 550 2 0.02 0.66
Über 600 Menschen-Weniger als 700 Menschen 650 1 0.01 0.67
Über 700 Menschen-Weniger als 800 Menschen 750 15 0.15 0.82
Über 800 Menschen-Weniger als 900 Menschen 850 18 0.18 1.00

2. Kumulative relative Häufigkeit der Summe der zu jeder Klasse gehörenden Werte

Die zweite besteht darin, die kumulative relative Häufigkeit zu berechnen, wobei die Klasse die Bevölkerung und die Häufigkeit die Gesamtzahl der Dörfer für jede Klasse ist.

Um die Gesamtzahl der Dörfer für jede Klasse zu erhalten, berechnen Sie anhand des Werts der Liste der Variablen mit dem Namen Population oben. Beispielsweise beträgt die Gesamtzahl der Personen "400 oder mehr als 500" 1424, wie unten gezeigt.

1424 = 487 + 450 + 487

Da die Gesamtbevölkerung aller Dörfer 41029 beträgt (die Summe aller Bevölkerungswerte), beträgt die relative Häufigkeit Bei "400 oder mehr - weniger als 500" beträgt der Wert 0,03 (auf die dritte Ziffer abgerundet).

0.03 = \frac{1424}{41029}

Jede Klasse wird auf diese Weise berechnet und die kumulative relative Häufigkeit der Anzahl der Personen wird berechnet.

Häufigkeitsverteilungstabelle

Es ist eine Häufigkeitsverteilungstabelle, die die oben genannten ersten und zweiten zusammenfasst. (Relative Häufigkeit und kumulative relative Häufigkeit werden auf die dritte Dezimalstelle abgerundet.)

Klasse Klassenwert Frequenz Relative Frequenz Kumulative relative Häufigkeit der Häufigkeit Gesamtzahl der Personen (Häufigkeit) Relative Häufigkeit der Anzahl der Personen Kumulative relative Häufigkeit der Anzahl der Personen
Über 100 Leute-Weniger als 200 Menschen 150 40 0.40 0.40 5988 0.14 0.15
Über 200 Menschen-Weniger als 300 Menschen 250 20 0.20 0.60 5003 0.12 0.27
Über 300 Menschen-Weniger als 400 Menschen 350 1 0.01 0.61 369 0.01 0.28
Über 400 Menschen-Weniger als 500 Menschen 450 3 0.03 0.64 1424 0.03 0.31
Über 500 Menschen-Weniger als 600 Menschen 550 2 0.02 0.66 1145 0.02 0.34
Über 600 Menschen-Weniger als 700 Menschen 650 1 0.01 0.67 682 0.01 0.36
Über 700 Menschen-Weniger als 800 Menschen 750 15 0.15 0.82 11106 0.27 0.63
Über 800 Menschen-Weniger als 900 Menschen 850 18 0.18 1.00 15312 0.37 1.00

Die Lorenzkurve ist ein Diagramm mit der "kumulativen relativen Häufigkeit der Häufigkeit" auf der x-Achse und der "kumulativen relativen Häufigkeit der Anzahl der Personen" auf der y-Achse.

Zeichnen Sie eine Lorenzkurve

Stellen Sie die obigen Daten mit matplotlib grafisch dar.

Referenz: Zeichnen Sie ein Diagramm mit Jupyter (Ipython-Notizbuch) + Matplotlib + Vagrant

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

fig, ax = plt.subplots()

#Horizontale Koordinaten,Kumulative relative Häufigkeit der Häufigkeit
left = np.array([
  0,
  0.40,
  0.60,
  0.61,
  0.64,
  0.66,
  0.67,
  0.82,
  1.00,
])
#Vertikale Koordinaten,Kumulative relative Häufigkeit der Anzahl der Personen
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')
#Graphentitel
plt.title('Lorenz Curve')
#Titel der X-Achse
plt.xlabel('villages')
#Titel der Y-Achse
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')

#X-Achsenbeschriftung
label = [0, 0.2, 0.4, 0.6, 0.8, 1.0] 

#Position der X-Achse, um das Etikett zu treffen
ax.set_xticks(label)
#Setzen Sie die Beschriftung auf die X-Achse
ax.set_xticklabels(label)

#Position der Y-Achse, um das Etikett zu treffen
ax.set_yticks(label)
#Setzen Sie die Beschriftung auf die Y-Achse
ax.set_yticklabels(label)

#Zeichnung
plt.show()

download.png

Diese blaue Kurve ist die Lorenzkurve.

Was Sie sehen können, wenn Sie sich die Lorenzkurve ansehen

Ich werde erklären, wie man die oben erstellte Lorenz-Kurve betrachtet.

download2.png

Schauen wir uns die Koordinaten des mit der roten Linie gezeichneten Teils an. Was wir an diesem Punkt sehen können, ist, dass ungefähr 65% der Dörfer nur ungefähr 36% der Gesamtbevölkerung ausmachen. Dies bedeutet, dass die verbleibenden 64% der Bevölkerung auf ein anderes Dorf ausgerichtet sind. Je größer die Ausbuchtung der Kurve ist, desto stärker ist sie vorgespannt.

Gini-Koeffizient

Der numerische Wert dieser Vorspannung wird als Gini-Koeffizient bezeichnet. In Bezug auf die Berechnung des Gini-Koeffizienten wird zunächst die gestrichelte Linie im obigen Diagramm als "perfekte Gleichheitslinie" bezeichnet. Der Gini-Koeffizient ist das Doppelte der Fläche zwischen dieser "perfekten Gleichheitslinie" und der Lorenz-Kurve.

Der Gini-Koeffizient ist ein Wert von 0 bis 1, und je näher er an 1 liegt, desto größer ist die Vorspannung, und je näher er an 0 liegt, desto geringer ist die Vorspannung.

Wenn der Gini-Koeffizient 0 ist, überlappt die Lorenz-Kurve übrigens die perfekte Gleichheitslinie.

Berechnen Sie den Gini-Koeffizienten

Berechnen Sie tatsächlich den Gini-Koeffizienten. Zur Vereinfachung der Berechnung werden hier anstelle des obigen Beispiels die folgenden Werte verwendet.

X-Achse
0, 0.4, 0.8, 1

Y-Achse
0, 0.2, 0.6, 1.0

Aus diesem Wert wird die folgende Lorentz-Kurve erstellt.

download (1).png

Teilen Sie dieses Diagramm wie unten gezeigt und subtrahieren Sie die Fläche der Teile 1, 2 und 3 in der Abbildung vom Dreieck mit der perfekten Gleichheitslinie als diagonale Seite und verdoppeln Sie sie, um den Gini-Koeffizienten zu erhalten.

download (1).png

Suchen Sie zunächst den Bereich des Dreiecks mit der perfekten Gleichheitslinie als diagonale Seite.

0.5 = 1\times1\div2

Finden Sie den Bereich von Teil 1. Da es sich um ein rechtwinkliges Dreieck mit einer Basis von 0,4 und einer Höhe von 0,2 handelt, kann es wie folgt berechnet werden.

0.04 = 0.4\times0.2\div2

Finden Sie den Bereich von Teil 2. Wenn es nach rechts gedreht wird, wird es zu einem Trapez mit einer oberen Basis von 0,2, einer unteren Basis von 0,6 und einer Höhe von 0,4, die unten berechnet werden kann.

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

Finden Sie den Bereich von Teil 3. Wenn dies ebenfalls nach rechts gedreht wird, wird es zu einem Trapez mit einer oberen Basis von 0,6, einer unteren Basis von 1 und einer Höhe von 0,2, sodass es wie folgt berechnet werden kann.

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

Wenn Sie diese drei Werte von der Fläche des Dreiecks mit der perfekten Gleichheitslinie als diagonale Seite subtrahieren und verdoppeln, wird der Gini-Koeffizient erhalten, sodass 0,28 der Gini-Koeffizient ist, wie in der folgenden Formel gezeigt.

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

das ist alles

Referenz

Recommended Posts

[Statistik für Programmierer] Lorenzkurve und Gini-Koeffizient
[Statistik für Programmierer] Dispersion, Standardabweichung und Fluktuationskoeffizient
[Einführung in Scipy] Berechnung der Lorenzkurve und des Gini-Koeffizienten ♬
[Statistik für Programmierer] Bedingter Wahrscheinlichkeits- und Multiplikatorsatz
[Statistik für Programmierer] Bayes-Theorem
[Statistik für Programmierer] Box Whisker
[Statistik für Programmierer] Wahrscheinlichkeitsvariablen, Wahrscheinlichkeitsverteilungen und Wahrscheinlichkeitsdichtefunktionen
[Statistiken für Programmierer] Durchschnitt, Median und am häufigsten
[Statistik für Programmierer] Was ist ein Ereignis?
[Statistik für Programmierer] Inhaltsverzeichnis-Data Science
Fuzzing und Statistiken