我正在计算基尼系数(类似于:Python - 使用Numpy计算基尼系数),但我得到一个奇怪的结果.对于从中采样的均匀分布np.random.rand(),基尼系数为0.3,但我预计它将接近于0(完全相等).这里出了什么问题?
def G(v):
bins = np.linspace(0., 100., 11)
total = float(np.sum(v))
yvals = []
for b in bins:
bin_vals = v[v <= np.percentile(v, b)]
bin_fraction = (np.sum(bin_vals) / total) * 100.0
yvals.append(bin_fraction)
# perfect equality area
pe_area = np.trapz(bins, x=bins)
# lorenz area
lorenz_area = np.trapz(yvals, x=bins)
gini_val = (pe_area - lorenz_area) / float(pe_area)
return bins, yvals, gini_val
v = np.random.rand(500)
bins, result, gini_val = G(v)
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(bins, result, …Run Code Online (Sandbox Code Playgroud)