• http://www.xmtlq.com
  • 2094 27

    [区域经济学] 还在用Excel算区位基尼系数?用geo.gini吧! [推广有奖]

    • 0关注
    • 6粉丝

    本科生

    40%

    还不是VIP/贵宾

    -

    威望
    0
    论坛币
    136 个
    学术水平
    9 点
    热心指数
    12 点
    信用等级
    8 点
    经验
    909 点
    帖子
    9
    精华
    1
    在线时间
    45 小时
    注册时间
    2017-4-19
    最后登录
    2018-1-21

    楼主
    R语言区域经济 在职认证  发表于 2018-1-4 17:09:30 |只看作者 |倒序

    区域经济研究中,经常需要测度产业空间集中的程度,常用的指标有区位基尼系数(Locational GiniCoefficient)、泰尔指数(Theil Index)和EG指数等。这一期先讲区位基尼系数的计算方法及其实现函数,后几期再陆续介绍泰尔指数和EG指数。

    用Excel算区位基尼系数,尽管也可实现,但非常笨拙,而且可重复性差。然而,其计算方法是非常简单的,用R语言写一个函数来实现之,犹如杀鸡用牛刀。看完本文后,用本人写的geo.gini()函数来计算,也就是一行代码的事。如果有数十个行业,用sapply跑一遍循环,什么结果都有了,彻底将你从繁琐的计算中解脱出来!



    一、原理


    基尼系数本来是用来测度居民家庭收入分布差距的,其本质思想与变异系数、赫芬达尔指数等并无二致,无非是考察一组数值的差异性,并使得基于不同数值向量计算出的结果可比较。利用其原理来测度产业空间集中度,就是所谓的区位基尼系数。

    为什么区位基尼系数可以用来衡量产业空间集中度呢?这里得建立一个基本认识:测度产业空间集中,也就是测度产业空间分布的不均衡性。假设产业i中的全部企业落在n个区域,那么这些区域就形成对产业i经济活动的一个空间分割。如果产业分布在空间上是均衡的,那么每一区域的产业份额都是1/n;如果分布不均衡,就意味着有些区域的产业份额小于1/n,有些区域大于1/n,大于1/n说明产业i在这些区域有集中。由于所有区域的产业份额加总为1,一些区域份额越小,另一些区域份额就越大,也就是产业i在这些区域越为集中。这种差距进一步拉大,比如说达到极端状态,就意味着产业i全部集中在某一区域,该区域占比为1,其他区域均为0。直观来看,区位基尼系数应该位于两种状态值:完全均衡和完全集中之间,从一端单调增长到另一端。



    二、绝对值和相对值


    区位基尼系数有绝对和相对两种。如上所述,如果将产业i的经济活动在各区域间进行分割,就形成了产业i的空间分布数值向量x;如果将总体经济活动(产业大类或全体产业)在各区域间进行分割,就形成了总体经济活动的空间分布数值向量y。经济活动规模一般用劳动力人数、产值、增加值等指标来衡量。绝对区位基尼系数是不考虑y,将每个区域作为个体单位,仅利用x向量来计算。这实际上是假设每个区域的总体经济活动份额是相等的,均为1/n。相对区位基尼系数则考虑了区域异质性,即与y的分布相比较,x的分布差异状况。以一个两区域的空间分割来说,如果两个区域的产业份额分别为20%和80%,从绝对意义上来说,肯定有产业空间集中;但如果这两个区域的总体经济活动份额也是20%和80%,从相对意义上来说,xy的分布一致,因此产业在这两个区域间的空间分布是均衡的,即不存在产业空间集中。



    三、计算公式


    绝对区位基尼系数实际上是相对基尼系数的简化版本。在相对区位基尼系数计算公式中,如果将作为参照分布的向量y简化为y = [1/n, 1/n,…, 1/n],即得到绝对区位基尼系数。

    Krugman(1991)年阐述了相对区位基尼系数的计算方法,先根据各区域的区位商值将各区域的总体经济活动份额和产业份额排好序,然后计算它们的累积和,据此得到洛伦兹曲线,就可以按基尼系数原理算出结果了。

    相对区域基尼系数的计算公式有两个版本。一个见Combes、Mayer & Thisse(2008),直接根据求S1和S2的面积推导求出;另一个见Kim、Barkley & Henry(2000),先将各区域区位商用它们的平均值标准化之,然后再两两相减取平均值求出。



    四、函数实现


    根据以上公式,编写计算区位基尼系数的函数geo.gini(),其参数设定说明如下:

    geo.gini(x, y = NULL, type ="cmt")

    其中:(1)x为各区域产业经济活动规模数值向量;(2)y为各区域总体经济活动规模数值向量;(3)type为计算公式类型,取值为“cmt”或“kbh”,默认为“cmt”;

    需要注意的是:(1)x、y向量不能含缺失值,且和大于0;(2)y默认为NULL,即不作设定,此时简化为绝对指标;(3)kbh法乘以2,将其结果调整为在0~1间取值,以与cmt法一致。

    让我们先用两组简单的数值试一下:


    代码 1



    # 函数测试

      

    > x <- c(1, 5, 4)

      

    > y <- c(30, 50, 20)

      

    > geo.gini(x, type = "cmt")

      

    [1] 0.2666667

      

    > geo.gini(x, type = "kbh")

      

    [1] 0.4

      

    > geo.gini(x, y, type =  "cmt")

      

    [1] 0.3

      

    > geo.gini(x, y, type = "kbh")

      

    [1] 0.5


    接下来用实际数据来试一下。数据“中国省份制造业数据_2012_2013.csv”包含了中国大陆31个省份2012-2013年29个制造业的就业数据,其前两列分别为省份和年份,第三列为各省份的就业总数,可作为参照分布,后面列均为各个制造业就业数。读入数据后,用geo.gini()函数算出每年各产业的区位基尼系数,并导出结果文件为“gini_results.csv”,代码如下:


    代码 2



    # 将存放数据和代码的文件设为工作文件夹,这里假定为"D:\\locational_gini"

      

    # 注意分隔路径要用“\\”而不是“\”

      

    > setwd("D:\\locational_gini")

      

    # 读入数据,并将数据按年份分拆

      

    > mydata <- read.csv("中国省份制造业数据_2012_2013.csv",  stringsAsFactors = F)

      

    > yearly.data <- split(mydata,  mydata$年份)

      

    # 一次性计算所有年份、所有产业的相对区位基尼系数

      

    > gini.results <- sapply(yearly.data,  function(xx) {

      

    sapply(xx[,-(1:3)], geo.gini, y = xx[[3]])

      

    })

      

      # 看一下结果

      

      > gini.results

      

                                                                                2012        2013

      

    农副食品加工业                     0.4220937 0.3848262

      

    食品制造业                         0.3060742 0.2801282

      

    ……                                 ……        ……

      

    工艺品及其他制造业                  0.3399786 0.3717040

      

    废弃资源和废旧材料回收加工业          0.3669596 0.3695507

      

    # 写出结果文件至工作文件夹,大功告成!

      

    > write.csv(gini.results,  "gini_results.csv")



    参考文献:

    [1]       Combes, P.-P., Mayer, T., & Thisse, J.-F. 2008. Economicgeography: The integration of regions and nations: Princeton UniversityPress.

    [2]       Kim, Y., Barkley, D. L., & Henry, M. S. 2000.Industry characteristics linked to establishment concentrations in nonmetropolitanareas. Journal of Regional Science, 40(2): 234-259.


    [3]     Krugman, P. 1991. Geographyand Trade: MIT Press.



    数据和代码下载请关注本人微信公众号:SDAR-workshop,“思达区域经济研究方法”




    支持楼主:购买VIP购买贵宾 购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
     
    载入中......

    回帖推荐

    R语言区域经济 发表于11楼  查看完整内容

    感谢分享。ineq中的Gini函数也可以算,不过在算相对基尼系数时需要调整。我这个无需调整,算是一个小改进吧。 另外还推荐一个更针对区域经济研究的REAT,不过他那个gini.conc参数设定实在太过复杂。有兴趣的去看看吧,还有很多有用的函数如算区域专业化程度的gini.spec等。 至于是自编还是用现成的函数,这个仁者见仁、智者见智吧。我这个函数的优点是参数设定简明,且有明确文献支持。他人函数你不知道他是基于什么公式来写的 ...
    已有 3 人评分经验 学术水平 热心指数 信用等级 收起 理由
    np84 + 100 精彩帖子
    happy_287422301 + 100 + 3 精彩帖子
    Stakiny + 3 + 3 + 3 精彩帖子

    总评分: 经验 + 200  学术水平 + 3  热心指数 + 6  信用等级 + 3   查看全部评分

    stata SPSS
    沙发
    钱学森64 发表于 2018-1-5 13:12:36 |只看作者
    谢谢分享好资源
    藤椅
    robinfang 发表于 2018-1-5 15:44:10 |只看作者
    这个赞,LZ应该是用多种方法去实现过,有了对比。
    板凳
    gxnnhgm66 发表于 2018-1-5 23:34:04 |只看作者
    谢谢分享好资源
    报纸
    oliyiyi 发表于 2018-1-6 13:02:20 来自手机 |只看作者
    R语言区域经济 发表于 2018-1-4 17:09
    区域经济研究中,经常需要测度产业空间集中的程度,常用的指标有区位基尼系数(Locational GiniCoefficien ...
    谢谢分享
    地板
    tsangwm 发表于 2018-1-7 07:19:05 |只看作者
    谢谢分享
    7
    huwuzi4 发表于 2018-1-7 09:08:58 |只看作者
    8
    happy_287422301 在职认证  发表于 2018-1-7 19:38:48 |只看作者
    感谢分享!
    9
    lowbrow 发表于 2018-1-8 09:19:24 |只看作者
    还在自编程序算区位基尼系数?用ineq库i吧!
    10
    xujingjun 发表于 2018-1-8 11:06:04 |只看作者
    您需要登录后才可以回帖 登录 | 我要注册

    GMT+8, 2018-1-22 00:20
    西秀区论坛 双城市论坛 都结乡论坛 攀枝花市论坛 于都论坛
    西城区街道论坛 滑县论坛 杨家坪论坛 西资岩石佛论坛 台北论坛