收入公平性评估方法

一、Gini系数##
1.1什么是基尼系数##
基尼系数是国际上用来综合考察居民内部收入分配差异状况的一个重要分析指标。每个人的收入有多有少,差距大时,基尼系数就高;差距小时,基尼系数就低。
1.2基本概念##
基尼系数表示在全部居民收入中,用于进行不平均分配的那部分收入占总收入的百分比。社会中每个人的收入都一样、收入分配绝对平均时,基尼系数是 0; 全社会的收入都集中于一个人、收入分配绝对不平均时,基尼系数是 1。现实生活中,两种情况都不可能发生,基尼系数的实际数值只能介于 0 ~ 1 之间。
1.3主要作用##
一般认为,基尼系数小于 0.2 时,显示居民收入分配过于平均,0.2—0.3 之间时较为平均,0.3—0.4 之间时比较合理,0.4—0.5 时差距过大,大于 0.5 时差距悬殊。通常而言,与面积或人口较小的国家相比,地域辽阔、人口众多和自然环境差异较大国家的基尼系数会高一些。经济处于起步阶段或工业化前期的国家,基尼系数要大一些,而发达经济体特别是实施高福利政策国家的基尼系数要小一些。
1.4计算方法##
基尼系数是根据洛伦茨曲线,即收入分布曲线计算的。在下图中,横轴是累计人口百分比, 纵轴是累计收入百分比。对角线上的斜线是绝对平均的收入分布线,垂直纵线是绝对不平均的收入分布线,斜线和垂直纵线之间的曲线是通常见到的实际收入分布曲线。斜线和曲线之间的面积 A,相当于用于不平均分配的那部分收入。基尼系数等于 A/(A+B),经济学含义是用于不平均分配的那部分收入占全部收入的比例。

在这里插入图片描述
基尼系数最大为“1”,最小等于“0”。基尼系数越接近0表明
基尼系数需要使用分户或分组的居民收入数据来计算。 具体计算公式如下:
在这里插入图片描述

其中:
在这里插入图片描述
在这里插入图片描述
这里Wi 和Pi是指将调查户按收入由低到高进行排序,计算第 i 户代表的人口的收入占总收入比重(Wi)和第 i 户所代表的人口占总人口比重 (Pi)。
二、公平系数(库兹涅茨比率) 标题
库兹涅茨比率是指一个以数值反映总体收入不平等状况的指标。它把各个阶层的收入比重与人口比重的差额的绝对值加总起来。
三、代码实现

import cx_Oracle
import pandas as pd
from scipy.integrate import quad
import cx_Oracle as oracle
import pandas as pd
import numpy as np
# conn=cx_Oracle.connect('用户名/密码@数据库地址:数据库端口/SID')
# 数据库连接地址

def fairness_coefficient(incomes):
   # 计算收入的平均值
   mean_income = np.mean(incomes)
   
   # 计算方差
   variance = np.var(incomes - mean_income, ddof=1)  # ddof=1是为了得到无偏估计的方差
   
   # 计算公平系数,这里我们使用1减去方差的平方根,以得到一个0到1之间的值
   # 公平系数越高,表示分配越均匀
   fairness = 1 / (np.sqrt(variance)/len(incomes) )
   return fairness

## 计算洛伦茨曲线
def lorentz_curve(x, incomes):
   # 对收入进行排序
   incomes = np.sort(incomes)
   total_income = np.sum(incomes)
   population = len(incomes)
   
   # 计算每个点的累积收入和累积人口比例
   cumulative_income = np.cumsum(incomes) / total_income
   cumulative_population = np.arange(1, population + 1) / population
   
   # 线性插值以找到对应于x的洛伦茨曲线的y值
   y = np.interp(x, cumulative_population, cumulative_income)
   return y


def gini_coefficient_integral(incomes):
   # 积分函数,用于计算洛伦茨曲线与45度线之间的面积
   def integrand(x):
       return lorentz_curve(x, incomes) - x
 
   # 积分区间从0到1(因为洛伦茨曲线的x轴和y轴都是比例)
   area,_ = quad(integrand, 0, 1)
   
   # 基尼系数是洛伦茨曲线与45度线之间面积的两倍
   gini = round( abs(area)/ 0.5,4)
   return gini

以一组样例数据最为例子,来示范以上两个方法的具体使用

if __name__ == '__main__':
    address = "用户名/密码@ip:端口/实例名" 
    sql = "SELECT * FROM BDA.YLZCPG_STEP05"
    result = visitOracle(address , sql)
    dist_code = np.sort(result['AAA027'].unique())
    year_code = np.sort(result['AAE002'].unique())
    aae140 = np.sort(result['AAE140_2'].unique())
    
    # 定义一个空DataFrame,返回公平系数、基尼系数指标
    column_names = ['AAA027', 'AAE140', 'AAE002' , 'FAIRNESS' , 'GINI']
    restlt_df1 = pd.DataFrame(columns = column_names)
    ## 计算指定dist_code + year_code + aae140范围内居民的基尼系数和公平系数
    for dist in dist_code :
        for year in year_code:
            for xz in aae140:
                tmp = result[(result['AAA027'] == dist) & (result['AAE002'] == year )& (result['AAE140_2'] == xz)]
                ## 对tmp中的payments排序,绘制洛伦茨曲线
                income = np.sort(tmp['INCOME'])
                gini = gini_coefficient_integral(income)
                print('===================================')
                print('==== dist_code = ' , dist)
                print('==== year_code = ' , year)
                print('==== aae140 = ' , xz)
                print('==== gini = ' , gini)
                ## 计算库兹涅茨比率
                # 筛选出各组人群
                group_低 = tmp[tmp['GROUP_FLAG'] == '低收入组']
                group_中低 = tmp[tmp['GROUP_FLAG'] == '中低收入组']
                group_中 = tmp[tmp['GROUP_FLAG'] == '中收入组']
                group_中高 = tmp[tmp['GROUP_FLAG'] == '中高收入组']
                group_高 = tmp[tmp['GROUP_FLAG'] == '高收入组']
                # 计算这两个群体的总收入
                income_低 = group_低['INCOME'].sum()
                income_中低 = group_中低['INCOME'].sum()
                income_中 = group_中['INCOME'].sum()
                income_中高 = group_中高['INCOME'].sum()
                income_高 = group_高['INCOME'].sum()
                # 计算这五个群体的总人数
                total_低 = len(group_低)
                total_中低 = len(group_中低)
                total_中 = len(group_中)
                total_中高 = len(group_中高)
                total_高 = len(group_高)
                ## 计算人口总数、收入总数
                total_cnt = len(tmp)
                total_income = tmp['INCOME'].sum()
                ## 收入比重
                Kuznets_ratio = round( abs(income_低 / total_income - total_低/ total_cnt) + abs(income_中低 / total_income - total_中低/ total_cnt)+ abs(income_中 / total_income - total_中/ total_cnt) + abs(income_中高 / total_income - total_中高/ total_cnt)
                + abs(income_高 / total_income - total_高/ total_cnt),4)
                # 计算库兹涅茨比率
                print('==== Kuznets_ratio = ' , Kuznets_ratio)
                tmp_res = pd.DataFrame({'AAA027' : [dist], 
                                        'AAE140': [xz], 
                                        'AAE002': [year], 
                                        'FAIRNESS': [Kuznets_ratio] , 
                                        'GINI': [gini]
                                       })
                restlt_df1 = restlt_df1.append(tmp_res)
    # 将restlt_df1的数据回写到数据库
    put_df_toOracle_cluster(restlt_df1 , '结果表名' , 'ip' , 端口,'用户名','密码' , '实例名')      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/722851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js语法---理解防抖原理和实现方法

什么是防抖(节流) 在实际的网页交互中,如果一个事件高频率的触发,这会占用很多内存资源,但是实际上又并不需要监听触发如此多次这个事件(比如说,在抢有限数量的优惠券时,用户往往会提…

golang windows打包为linux可执行文件

使用go的交叉编译功能 set GOOSlinux set GOARCHamd64然后再执行go build 可能会报异常, 所以贴出我的go env配置仅供参考 go env环境配置 D:\GoWork\src\go-tzv>go env set GO111MODULEauto set GOARCHamd64 set GOBIN …

架构师篇-1、总体架构设计

业务架构哲学本质 定位:赋予业务架构设计能力,具备业务架构设计思维模型,掌握业务架构哲学本质,形成以不变应万变的业务架构设计能力。 架构师所需要的能力: 带领业务成功通过框架思维赋能业务架构师知识体系构建掌…

华北水利水电大学-C程序设计作业

目录 基础题 1-1 分析 代码实现 1-2 分析 代码实现 1-3 分析 代码实现 1-4 ​编辑 分析 代码实现 1-5 分析 代码实现 1-6 分析 代码实现 基础题 1-1 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。其中学生信息包括学号、姓名…

学会python——制作一款天气查询工具(python实例七)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、天气查询工具 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

pip安装总是失败,如何配置pip安装源,让环境重获新生?

前情提要 公司新项目组报道后,因为用的是公司内网,安装完python 和pycharm 后,发现pip 下载安装包总是报错 具体解决 1.确认python 环境已经安装 2.在cmd中执行如下命令配置参数 pip config set global.index-url https://这里填写自己公…

Linux 软件包管理器 yum

文章目录 yum是什么?Linux(centos)的生态yum的相关操作yum本地配置安装包lrzsz yum是什么? yum可以形象的比喻成一个下载安装管理的一个客户端,比如小米应用商店、华为应用商城 Linux中的安装包是有依赖关系的(比如下载游戏的时候有各种文件…

神经网络模型---ResNet

一、ResNet 1.导入包 import tensorflow as tf from tensorflow.keras import layers, models, datasets, optimizersoptimizers是用于更新模型参数以最小化损失函数的算法 2.加载数据集、归一化、转为独热编码的内容一致 3.增加颜色通道 train_images train_images[...,…

滑动窗口练习1-长度最小的子数组

1.题目链接:209.长度最小的子数组 2.题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条…

【机器学习】第9章 降维算法——PCA降维

一、概念 1.PCA (1)主成分分析(Principal ComponentAnalysis,PCA)一种经典的线性降维分析算法。 (2)原理,这里以二维转一维为例,原来的平面变成了一条直线 这是三维变二…

git 基本命令

列出分支基本命令: git branch 如果我们要手动创建一个分支 。执行 git branch (branchname) 即可: git branch testing 切换到testing分支: git checkout testing 我们也可以使用 git checkout -b (branchname) 命令来创建新分支并立…

1504 - Java多线程面试题

少年,思无邪,最最动人。 1.Java中有哪几种创建线程的方式 1.1 继承Thread类 代码示例 class HelloWorld01 extends Thread{Overridepublic void run() {System.out.println("这是继承 Thread 类方式实现多线程!");} }public class CreateTh…

Redis 高可用 sentinel

简介 Sentinel提供了一种高可用方案来抵抗节点故障,当故障发生时Redis集群可以自动进行主从切换,程序可以不用重启。 Redis Sentinel集群可以看成是一个Zookeeper集群,他是Redis集群高可用的心脏,一般由3-5个节点组成&#xff0…

从“产品的RFM分析”看如何探索“职业方向”

我们在做产品分析时,经常会用到一种方法“产品的RFM分析”,它是一种客户细分和价值评估的常用方法,广泛应用于电子商务、零售和其他众多行业,它可以帮助企业和产品团队更好地理解用户行为,优化营销策略,提升…

python发邮件给多人的注意事项?如何群发?

python发邮件给多人的效率如何?python发邮件的方法? 在利用Python编程语言实现邮件群发功能时,需要注意许多细节,以确保邮件能有效送达且用户体验良好。AokSend将详细探讨python发邮件给多人时需要注意的各个方面,以帮…

2024年历史、文学与人文艺术国际会议(ICHLH 2024)

2024年历史、文学与人文艺术国际会议(ICHLH 2024) 2024 International Conference on History, Literature, and Humanities 【重要信息】 大会地点:兰州 大会官网:http://www.ichlh.com 投稿邮箱:ichlhsub-conf.com 【…

【第10章】Vue之Element Plus常用组件

文章目录 前言一、表格1. 带斑马纹表格2. 展示 二、分页1.国际化(中文)2.分页代码3. 展示 三、表单1. 表单代码2. 展示 四、卡片1. 卡片代码2. 展示 总结 前言 通过上一章的快速入门,我们已经学习了按钮使用,接下来学习Element Plus的常用组件&#xff…

02-QWebEngineView的使用

Qt WebEngine_hitzsf的博客-CSDN博客 一、QWebEngineView QWebEngineView 类是一个实现Web浏览器的便捷类,提供了back() 、forward()、reload()、stop() 等方法,可轻松实现页面的前进、后退、重载等导航功能,要实现一个简单的只有网页加载网…

手机网站制作软件是哪些

手机网站制作软件是一种用于设计、开发和创建适用于移动设备的网站的软件工具。随着移动互联网时代的到来,越来越多的用户开始使用手机浏览网页和进行在线交流,因此,手机网站制作软件也逐渐成为了市场上的热门工具。 1. Adobe Dreamweaver&am…

前端某个页面乱码

项目场景: 提示:这里简述项目相关背景: springbootlayui,前后端一体 问题描述 提示:这里描述项目中遇到的问题: 某个页面访问中文乱码: 就是这种。 不是数据库的中文,而是html页…