【経済学】ローレンツ曲線とジニ係数(Python)
前々回のローレンツ曲線とジニ係数をPythonで実装します。 前回の関数をもとにPythonでも関数を実装してみました。
import numpy as np import matplotlib.pyplot as plt #関数 def Gini_index(data, main, xlab, ylab): print(data) n = len(data) #dataの要素数 data = sorted(data) #並び替え data = np.array(data) data = data.cumsum() #累積度数をとる # 累積相対度数(先頭に 0 を加える) data_2 = data / max(data) data_3 = data_2.tolist() data_3.insert(0, 0) print(data_3) print(len(data_3)) x = np.linspace(0, 1, n+1) print(x) print(len(x)) x.tolist() #グラフ描写 plt.plot(x, data_3, label = "ローレンツ曲線", color = "red") plt.plot(x, x, label = "完全平等線", color = "blue") plt.xlabel(xlab) plt.ylabel(ylab) plt.title(main) plt.legend(loc = 2) plt.show() return 2*sum(x - data_3)/n #データ x = [0, 3, 3, 5, 5, 5, 5, 7, 7, 10] #関数 Gini_index(x, main="ローレンツ曲線", xlab="累積相対度数", ylab="累積相対所得") #Out[75]: 0.27600000000000008
もっときれいに書けそうですけどね。。。