Ungleichheit in D wächst seit den 90ern

Ich habe ein kleines Programm gemacht, um den GINI-Koeffizienten wieder in die Einkommensverteilung umzurechnen, was die Interpretation und Visualisierung von wirtschaftlicher Ungleichheit in einem Land vereinfacht. Hier findet man die Entwicklung des Index für Deutschland, bei der OECD findet man Zeitreihen für andere Länder. Unter der Annahme, dass die Einkommen einer Lorentz-Verteilung folgen (im Allgemeinen gut erfüllt), erhält man aus dem aktuellen GINI-Koeffizienten folgende Verteilung für Deutschland:

Auf die ärmsten 10 % der Bevölkerung entfällt 1,8 % des Gesamteinkommens, auf die reichsten 10 % entfällt der Anteil 14,8 %. Diese Werte jeweils nach Steuern, vor Steuern ist die Ungleichheit noch deutlicher ausgeprägt. Im internationalen Vergleich sind diese Werte relativ gut, aber es war schon ein gutes Stück besser in Deutschland. Die Ungleichheit ist seit den 90ern praktisch nur gestiegen. In den 90ern gingen noch 2,5 % des Gesamteinkommens an die ärmsten 10 %.

Und nur 13,6 % des Gesamteinkommens an die reichsten 10 %:

Noch klarer sieht man die Entwicklung am Verhältnis. Die reichsten 10 % haben in den 90ern 5,5-Mal soviel Einkommen bezogen wie die ärmsten 10 %. Das ist auf den Faktor 8,5 gestiegen.

Die zunehmende Ungleichheit hat sich auch in der relativen Armut niedergeschlagen, ein Zuwachs von 16,5 % (einer von sechs Deutschen) auf 19,4 % (einer von fünf):

Absolute Armut (Einkommen unter der International Poverty Line von $ 1,9 pro Tag) bleibt zum Glück extrem selten hier, bei knapp 1 von 1000 oder grob 80.000 Deutsche.

Mit dem Trend ist Deutschland nicht alleine. Der weltweite Between-Country GINI ist zwar kontinuierlich am sinken (weniger Ungleichheit zwischen Ländern), der mittlere Within-Country GINI-Koeffizient ist in dem selben Zeitraum jedoch angestiegen (mehr Ungleichheit innerhalb Ländern):

Ziemlich bitter sieht es, neben den selbstverständlichen Kandidaten wie afrikanischen Ländern, China, Indien, Russland, auch in den USA aus. Das Verhältnis der Einkommen der reichsten 10 % zu den ärmsten 10 % ist seit den 90ern von dem Faktor 17,5 auf 30,0 gestiegen. Eine Folge davon, dass konservativen und unternehmensfreundlichen Politikern freie Fahrt gewährt wurde. Der Reichtum des Landes konzentriert sich mehr und mehr in den Händen weniger, welche durch den Einkommenszuwachs wiederrum noch mehr Möglichkeiten bekommen, sich weitere Konzentration politisch und juristisch zu sichern. Eine gefährliche Feedback-Schleife, vor der man sich in Europa hüten muss.

Hier das Programm zum Ausprobieren. Es nimmt als Input den GINI-Koeffizienten bzw. eine Zeitreihe davon und produziert die relevanten Information und Plots. Zur Berechnung der absoluten Armut ist auch der Input des mittleren Einkommens (nicht Median) erforderlich, ansonsten wird diese übersprungen. Python 3.9. Für USA, D und Polen sind die GINI-Zeitreihen schon als Kommentar eingefügt. Um Zeitreihen nicht abtippen zu müssen, empfehle ich die Verwendung eines OCR-Programms wie dieses hier (online und kostenlos).

#%%
import matplotlib.pyplot as plt
import math
import numpy as np

g = 0.281

# For Development Plots, leave empty if not available
gdev = [0.327,0.315,0.315,0.307,0.303,0.304,0.301,0.298,0.299,0.297,0.291,0.285,0.275,0.281]
initial_year = 2005
year_step = 1

# Relative Poverty Line as Percentage of Average Income
rel_poverty_line = 0.05

# Annual Values in Dollars / Set avg_inc = 0 if not available
avg_inc = 5700
abs_poverty_line = 1.9*365

# Specify if available, otherwise avg_inc is used for all years
incdev = []

# Distribution Adjustment
adj_bottom = 1.15
adj_top = 0.85


# US
# gdev = [0.35, 0.35, 0.35, 0.37, 0.37, 0.37, 0.37, 0.37, 0.37, 0.37, 0.37, 0.38, 0.37, 0.37, 0.38, 0.38, 0.38, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.4, 0.39]
# initial_year = 1990
# avg_inc = 31100

# GER
# gdev = [0.2464900,0.2508000,0.2522100,0.2598200,0.2547800,0.2488200,0.2497100,0.2496300,0.2484100,0.2546500,0.2587200,0.2683800,0.2682800,0.2727000,0.2883500,0.2863100,0.2851800,0.2842900,0.2797000,0.2814800,0.2853500,0.2854300,0.2919500,0.2897300]
# initial_year = 1991
# avg_inc = 34300

# PL
# gdev = [0.327,0.315,0.315,0.307,0.303,0.304,0.301,0.298,0.299,0.297,0.291,0.285,0.275,0.281]
# initial_year = 2005
# avg_inc = 5700


n = 2/(1-g)-1

print('Gini-Coefficient:', g)
print()
print('Lorentz-Coefficient:', round(n,2))
print()

plt.xlabel('Share of Population')
plt.ylabel('Share of Income')
x = np.linspace(0, 1)
y = x**n
plt.plot(x, y)
x = np.linspace(0, 1)
y = x
plt.plot(x, y)
plt.show()


sBottom10 = adj_bottom*100*0.1**n
sTop10 = adj_top*100*(1-0.9**n)

print()
print()
print('The Bottom 10 Percent of the Populations receives an Income Share:', round(sBottom10,2), '%')
print('The Top 10 Percent of the Populations receives an Income Share:', round(sTop10,2), '%')

r = sTop10/sBottom10

print()
print('Ratio Top 10 / Bottom 10:', round(r,2))
print()


sBottom20 = adj_bottom*100*0.2**n
sTop20 = adj_top*100*(1-0.8**n)

print()
print('The Bottom 20 Percent of the Populations receives an Income Share:', round(sBottom20,2), '%')
print('The Top 20 Percent of the Populations receives an Income Share:', round(sTop20,2), '%')

r = sTop20/sBottom20

print()
print('Ratio Top 20 / Bottom 20:', round(r,2))
print()

# Relative Poverty

xrel = 100*rel_poverty_line**(1/n)

print()
print('Share of Population in Relative Poverty:', round(xrel,2), '%')

# Absolute Poverty

if avg_inc > 0:

    xabs = (abs_poverty_line/avg_inc)**(1/n)

    print('Share of Population in Absolute Poverty:', round(xabs,2), '%')
    print()


if len(incdev) < 1:

    i = 0
    while i < len(gdev):
        incdev.append(avg_inc)
        i += 1

if len(gdev) > 0:

    print()
    print('Gini-Coefficient Development:', gdev)
    print()

    year = []
    ndev = []
    sBottom10dev = []
    sTop10dev = []
    rdev = []
    xreldev = []
    xabsdev = []

    i = 0
    while i < len(gdev):

        year.append(initial_year+i*year_step)

        n = 2/(1-gdev[i])-1
        ndev.append(n)

        sBottom10 = adj_bottom*100*0.1**n
        sBottom10dev.append(sBottom10)
        
        sTop10 = adj_top*100*(1-0.9**n)
        sTop10dev.append(sTop10)

        rdev.append(sTop10/sBottom10)

        xreldev.append(100*rel_poverty_line**(1/n))

        if avg_inc > 0:
            xabsdev.append((abs_poverty_line/incdev[i])**(1/n))

        i += 1

    low_factor = 0.95
    high_factor = 1.05

    plt.plot(year, ndev)
    plt.ylim(low_factor*min(ndev), high_factor*max(ndev))
    plt.ylabel('Lorentz Coefficient')
    plt.show()

    plt.plot(year, sBottom10dev)
    plt.ylim(low_factor*min(sBottom10dev), high_factor*max(sBottom10dev))
    plt.ylabel('Income Share of Bottom 10 %')
    plt.show()

    plt.plot(year, sTop10dev)
    plt.ylim(low_factor*min(sTop10dev), high_factor*max(sTop10dev))
    plt.ylabel('Income Share of Top 10 %')
    plt.show()

    plt.plot(year, rdev)
    plt.ylim(low_factor*min(rdev), high_factor*max(rdev))
    plt.ylabel('Ratio Top 10 % / Bottom 10 %')
    plt.show()

    plt.plot(year, xreldev)
    plt.ylim(low_factor*min(xreldev), high_factor*max(xreldev))
    plt.ylabel('Population Share in Relative Poverty')
    plt.show()

    if avg_inc > 0:

        plt.plot(year, xabsdev)
        plt.ylim(low_factor*min(xabsdev), high_factor*max(xabsdev))
        plt.ylabel('Population Share in Absolute Poverty')
        plt.show()

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s