workshopofsdar的个人博客分享 http://blog.sciencenet.cn/u/workshopofsdar

博文

还在用Excel算区位基尼系数?用geo.gini吧!

已有 7354 次阅读 2018-1-4 17: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],即得到绝对区位基尼系数。

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

相对区域基尼系数的计算公式有两个版本。一个见CombesMayer & Thisse2008),直接根据求S1S2的面积推导求出;另一个见KimBarkley & Henry2000),先将各区域区位商用它们的平均值标准化之,然后再两两相减取平均值求出。

四、函数实现

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

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

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

需要注意的是:(1xy向量不能含缺失值,且和大于0;(2y默认为NULL,即不作设定,此时简化为绝对指标;(3kbh法乘以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-201329个制造业的就业数据,其前两列分别为省份和年份,第三列为各省份的就业总数,可作为参照分布,后面列均为各个制造业就业数。读入数据后,用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,“思达区域经济研究方法”


扫码或长按,关注该微信号


版权申明

本文所有图文资料,已在微信公众号声明原创。除特别说明外,其版权归浙江工业大学王庆喜领衔的“思达工作室”所有。转发、引用请注明原始出处。




https://blog.sciencenet.cn/blog-3376208-1093109.html


下一篇:一招搞定泰尔指数及其分解
收藏 IP: 112.10.106.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 08:54

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部