GIS之时空数据分析

Python 基尼系数(Gini coefficient)(一)

2020-06-20  本文已影响0人  王叽叽的小心情

定义:基尼系数是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标。
目的:查看一个国家贫富差距的程度。
提出者:最早由意大利统计与社会学家Corrado Gini在1912年提出。
范围:最大值为1,最小值为0,基尼系数越接近0表明收入分配越是趋向平等。国际惯例把0.2以下视为收入绝对平均,0.2-0.3视为收入比较平均;0.3-0.4视为收入相对合理;0.4-0.5视为收入差距较大,当基尼系数达到0.5以上时,则表示收入悬殊。

计算理解:基尼系数的计算是根据洛伦兹曲线来的,设实际收入分配曲线和收入分配绝对平等曲线之间的面积为 A,实际收入分配曲线右下方的面积为 B。并以 A 除以(A+B)的商表示不平等程度。这个数值被称为基尼系数或称洛伦茨系数。

洛伦兹曲线

以上图为例,横坐标代表低收入到高收入的累计人数,纵坐标代表累积收入份额,当洛伦兹曲线向下的弯曲程度较大时,说明低收入人群的占有份额越低,此时区域A的面积较大,相应的 A/(A+B)的数值即基尼系数就较大,即贫富差距越大。

基尼系数在直观上有一个解释,即它可以解释为从人口中随机选取的两个个体(x1, x2)之间的预期收入差距,假设其中较大的数值为M,较小的数值为m,则可以推导基尼系数为


基尼系数简单理解

经典的计算方法是


经典计算方法

其中,x是排序后的数值,n是观测数目,x_bar是平均值。

如果x是按照升序排序,即每一个x的排名为i,计算方法可以简化


简化计算方法(升序排列)

最后采用Python代码进行计算,,需要注意的是必须是正值才能参与计算(>0)

def gini(x, w=None):
    # The rest of the code requires numpy arrays.
    x = np.asarray(x)
    if w is not None:
        w = np.asarray(w)
        sorted_indices = np.argsort(x)
        sorted_x = x[sorted_indices]
        sorted_w = w[sorted_indices]
        # Force float dtype to avoid overflows
        cumw = np.cumsum(sorted_w, dtype=float)
        cumxw = np.cumsum(sorted_x * sorted_w, dtype=float)
        return (np.sum(cumxw[1:] * cumw[:-1] - cumxw[:-1] * cumw[1:]) / 
                (cumxw[-1] * cumw[-1]))
    else:
        sorted_x = np.sort(x)
        n = len(x)
        cumx = np.cumsum(sorted_x, dtype=float)
        # The above formula, with all weights equal to 1 simplifies to:
        return (n + 1 - 2 * np.sum(cumx) / cumx[-1]) / n

除了在居民收入水平领域,在其他的社会经济方面也经常采用基尼系数衡量差异,应用较为广泛。

参考来源:
定义:百度百科
计算:Gini Coefficient of Inequality
代码:https://stackoverflow.com/questions/48999542/more-efficient-weighted-gini-coefficient-in-python

上一篇 下一篇

猜你喜欢

热点阅读