通过近似的方法,如何在sql中计算基尼系数。

如何在python中实现基尼系数计算的两种方法,可以查看我的另一篇文章。两篇文章取数相同,可以结合去看。

如果想加深对基尼系数计算的逻辑:可查看文章基尼系数计算方法 - longwind09 - 博客园。

本文中采用的近似方法,如何建立近似计算公式、如何简化推导公式可查看文章,本文基于这篇文章进行注释

http://www.360doc.com/content/14/0911/13/87990_408644530.shtml

-------------------------------------------------------------------------------------------------

近似的精确度取决于分组数量。如果样本数量为100个,如果分组数量为100,近似的方法取得的结果跟实际值相等。

但随着分组数量的减少,精确度也减少。

本文是在hive中实现,需要使用到hive中的over函数。

包括如何使用over函数进行分组、计算每组的总和以及取得累计加和等等。

使用文章中的近似公式推导简化,最后得到下面的公式。

select * from gini;-- gini为table名称。-- gini中的100个数据如下,字段名为wealth。/*
346,  559,  198,  420,  39,  709,  225
,  731,  708,  369,  519,  46,  48,  446
,  117,  127,  905,  652,  528,  832,  217
,  536,  942,  608,  37,  802,  422,  884
,  746,  959,  759,  397,  245,  83,  542
,  907,  128,  933,  740,  506,  458,  830
,  874,  570,  914,  592,  585,  574,  636
,  462,  86,  321,  174,  238,  670,  690
,  456,  918,  70,  801,  695,  908,  57,  497
,  605,  334,  265,  255,  235,  199,  739,  81
,  131,  68,  229,  602,  390,  571,  733,  440
,  528,  409,  222,  55,  876,  606,  906,  549
,  487,  552,  796,  454,  301,  914,  635,  304,  503,  688,  631,  705
*/-- 计算基尼系数时候先进行cumsum或者是先进行分组都可以。
-- 这里由于over函数计算cumsum的特殊性,先进行分组。-- 这里显示的是分成9组
-- 9出现在两个地方:第二行,最后的计算公式中,还有就是出现在ntile之后,分成9组的时候。
-- 第二行中:计算最后的结果时候,跟推导出来的公式有所补桶。外面的sum之前多做了一个处理,减掉了1。
-- 而且上面的文章中也提到:分成了n组的情况下,1至n-1的w是需要加和的,而第n的w是不加入计算的。
-- 这是因为最后一个样本数据的cumsum是占全部的样本的总和的100%,这个数据需要去掉。
-- cum_sum_1和cum_sum_2的结果是相同的,目前简单的数据上如此,复杂之后可能不是,需要确认。
-- 在样本数量不能被分组数量整除的时候,ntile的处理,可以搜索一下hive是怎么做的。select
(1 - (1/9) * (2*(sum(cum_sum_1)/sum(bar_sum) - 1) + 1))
from
(
select bar
, sum(wealth) as bar_sum
-- 即使bar_sum最后不需要用,也不能省略,下面的cum_sum的生成需要它,不然会报错。
-- , sum(sum(wealth)) over (order by bar rows between unbounded preceding and current row) as cum_sum_2
, sum(sum(wealth)) over(order by bar) as cum_sum_1
from
(
select wealth
, ntile(9) over (order by wealth) as bar
-- 分成9组
from gini
) a
group by bar
order by bar
limit 1000
) b
;-- 一些结果100组
0.310964174
-- 这个跟使用相同数据,在python上精确的求曲线下方面积的结果是相等的。
-- 可见我的另一片使用pyhton计算基尼系数的文章。20组
0.310254845872256939组
0.300356286353766

基尼系数近似计算:sql (hive)实现 简单高效相关推荐

  1. 基尼系数计算的两种方法:python实现 简单高效

    使用两种方法,通过python计算基尼系数. 在sql中如何计算基尼系数,可以查看我的另一篇文章.两篇文章取数相同,可以结合去看. 文章中方法1的代码来自于:(加入了一些注释,方便理解).为精确计算. ...

  2. 在EF中使用SQL执行简单高效的增删查操作

    随着平台数据的积累,对于数据访问的速度要求愈来愈高.优化后台访问性能,将是之后的一个重点任务. 但是,后台在项目开发初期采用的是Abp(Lite DDD)框架,集成EnityFramework.因为之 ...

  3. 【Flink】Apache Flink 1.13.0 正式发布,流处理应用更加简单高效

    1.概述 转载:Apache Flink 1.13.0 正式发布,流处理应用更加简单高效 侵权可删,这里是做个笔记,防止找不到. Flink 1.13 发布了!Flink 1.13 包括了超过 200 ...

  4. 【浙大网新图灵通讯】无废话简单高效C#编码规范20100611

    无废话简单高效C#编码规范20100611   自己看自己的代码啥问题也没有,但是一个团队.N多个人.N多年的代码,就比较难维护.难阅读了,什么样的不好的习惯.错误漏洞能出来的就全出来了. 第1章   ...

  5. SQL 的一点简单的面试题求助

    @SQL 面试题目,麻烦大家帮我看看 SQL 的一点简单的面试 –表结构介绍 用户活跃模型表:tmp_liujg_dau_based, 以imp_date.qimei为主键, 一个用户1天只出现1次, ...

  6. hive :简单查询不走mapreduce

    在hadoop生态圈中属于数据仓库的角色.他能够管理hadoop中的数据,同时可以查询hadoop中的数据. 本质上讲,hive是一个SQL解析引擎.Hive可以把SQL查询转换为MapReduce中 ...

  7. HiLink LiteOS IoT芯片 让IoT开发简单高效

    HiLink & LiteOS & IoT芯片 让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手 ...

  8. 虚拟化---简单高效的IT管理模型

    很多人认为云计算就是虚拟化,虚拟化就是云计算.笔者虽然并不认同这个观点,但绝对赞同虚拟化技术在云计算众多关键技术中有一席之地,而且是非常重要的关键技术. 维基百科对虚拟化的定义是:虚拟化是表示计算机资 ...

  9. Oracle10g SQL tune adviser简单介绍【转自ITPUB zhouwf0726】

    Oracle10g SQL tune adviser Oracle10g SQL tune adviser简单介绍 本文简单介绍下SQL Tuning Adviser的配置使用方法和一些相关知识点,如 ...

  10. NeurIPS 2020 | 一种基于动作采样的简单高效的正则化强化学习方法

    编者按:现有的强化学习方法通常通过熵正则化的方式控制最优策略的随机性,以保证训练过程中的良好探索以及目标策略的鲁棒性.然而,熵正则化的强化学习方法通常会面临表达能力有限的策略结构和复杂低效的训练过程之 ...

最新文章

  1. Transform(CTM,Translate,Rotate,Scale)
  2. 10搜索文件内容搜不出_百度搜索广告太多?内容太杂?可能你们缺少这10个神器网站...
  3. Philip S. Yu 讲的广度学习到底是什么?
  4. 万字好文 | B端产品设计指南
  5. STM32一种基于NTC的控温电路及软件实现
  6. ThinkPHP 3.2版本 , 无法读取$_SESSION['verify_code']
  7. golang | 变量-字符串练习
  8. 20190812:两个数组的交集ⅠⅡ
  9. ensprip引入静态路由_IP路由基础理论知识详解(三)
  10. mysql查看锁表锁进程
  11. 合肥工业大学数据库上机实验1
  12. Android Killer反编译apk报错
  13. 金蝶K3系统如何更改已使用物料的计量单位信息
  14. 获取GooglePlay下载来源广告数据统计接入
  15. 亿阳信通图像处理工程师
  16. 汉庭董事长季琦:成功创业者的必经之路
  17. shell法宝之sed,修改文件内容的好帮手
  18. WSO2安装使用的全过程详解
  19. python实现输入一个字符串,输出每个字符的ASCLL码形成的列表
  20. 拼多多商家和快递公司谈合作的技巧

热门文章

  1. C++-10种控制语句详解(第一种-if)
  2. 【转】web移动端一些常用知识
  3. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)
  4. HTTP常见状态码(404、400、500)等错误
  5. 制作web网页头部导航栏
  6. 纯白魔女怎么在电脑上玩 纯白魔女电脑版玩法教程
  7. Delphi fmx中在Form1里边嵌套一个Form2(fmx获取控件句柄)
  8. Delphi FMX下移动界面布局问题
  9. 盛大云和阿里云之云主机初体验
  10. 雷达和RGB相机对齐的核心代码crop