写在前面:
在2022年暑假期间,我们在公众号上连续推送了一系列关于数据库匹配的报告,引发了众多读者的热烈反响与好评。两年后的现在,我们的运营部门回顾了公众号过去的数据,发现在推送这些文章期间,公众号的活跃度达到了空前的高峰,这充分证明了这些文章的参考价值。
而最近,我们推送的一篇关于全量工商企业注册数据库质量检测的文章又获得了不少读者的认可(传送门:质量检测 | 对一份中国工商企业注册数据库的质量考察),加上这一年来我们也吸引了许多新朋友,我们决定趁热将过往发布的系列匹配报告重新推送给大家,让更多人收益。
感兴趣的读者,可以在我们的网页上直接获取PDF版匹配报告。
特别提醒:各位使用我们匹配结果的朋友们,我们对系列报告进行了编辑和编号(详情见PDF版匹配报告),已经是工作论文系列,可以直接引用。
图源:企研·学习专区(xue.qiyandata.com)
前 言
企业数据库之间的横向匹配,贯穿了企研数据团队的整个创业历程。自2018年始,各个数据库之间的匹配报告几易其稿,2020年疫情爆发之初的那个半年陆续完成。但囿于我本人的堕怠和一些顾虑,一直都没有最后定稿推送,这次发狠心一定要一口气把积攒的这几篇报告推送完成。这就是近期推送企业数据库匹配系列的来由,希望社科大数据公众号读者们批评指正。
——杨奇明(企研数据CEO)2022年8月16日于杭州·海聚中心
目录(滑动查看)一、引言
二、海关数据库清理
(一)各个版本数据库的对比
(二)数据存在的问题及处理
1. 指标数量不一致
2. 信息缺失或错误
3. 数据重复问题
三、海关库与工商库的匹配
(一)匹配方法
1.融合变量
2. 匹配思路
(二)匹配结果
参考文献
附录
海关数据库与工商库的匹配报告
Part1前言
企业是现代社会经济活动中最重要的微观经济运行单元之一,因此企业微观数据也是微观经济学各领域研究所需的核心资料。近年来,学者们试图将各个维度的企业微观数据进行横向连接匹配,以达到充分开发利用这些微观数据研究价值的目的。企研数据团队已陆续发布了有关工企库-工商库,专利库-工企库之间两两匹配的推文。本文讨论的是如何将中国产品级别的海关数据库(以下简称“海关库”)与中国全量企业工商登记注册数据库(以下简称“工商库”)进行匹配的问题。海关库与工商库的匹配具有重要意义。首先,近年来,除了工企库、专利库,海关库也被越来越多的学者采纳使用,并发表了不少高质量的研究成果(余淼杰,2013),而工商库拥有数以百计的变量,清理精加工后可以应用于学术研究;其次,作为理论上拥有全量企业基本信息的工商库,可以起到作为桥梁连接其他企业数据库的独特作用,因此海关库与工商库匹配之后,其与其他企业数据库的匹配就能方便得多;第三,海关数据库侧重于产品层面,工商库则更多刻画的是企业画像。两个数据库的融合不仅是字段的简单拼凑,更体现在企业贸易行为与企业组织行为的研究主题融合。总之,海关库与数据库的融合无疑为广大学者提供了更多的研究视角。然而,工商库动辄千万甚至上亿的数据,对于大部分学者来说不仅清洗难度极大,而且清洗效率极低。为此,企研数据团队利用自身的技术力量和工作经验,完成了相关的数据清洗和匹配工作。我们将经验分享出来,目的就是给学者使用相关数据提供便利,同时也是就教于各位方家。接下来,我们首先对海关库进行必要的清洗,然后将其与工商库匹配。Part2海关数据库清理
海关数据库记载了通关企业的每一条进出口交易信息,包括但不限于以下指标:税号编码、税号、金额、数量、价格、企业编码、经营单位、单位地址、电话、传真、邮编、电子邮件、联系人、消费地进口/生产地出口、企业性质、起运国或目的国、海关口岸、贸易方式、运输方式、中转国、数量单位编码、数量单位等。本文所指的海关数据库,是指来自中国海关总署的产品层面的月度交易数据。(一)各个版本数据库的对比
我们在实际匹配过程中,共用到两套来源不同的海关数据库 (以下我们将以 “版本1”和“版本2”进行指代称呼),其中版本1年份跨度为2000-2013年,版本2年份跨度为2007-2016年。我们将余淼杰(2014)所提供的统计数据与版本1和版本2一同进行比较,比较结果如表1所示。分版本来看,版本1的海关数据库观测值数目由2000年的1059.82万增加到2013年的1659.59万,年均增长3.51%,相应的,参与了国际贸易的企业数则由80231增至338608,年均增幅达11.71%;版本2的海关数据库每年观测值数目由2007年的1056.64万增加到2016年的1728.84万,年均增长5.62%,参与了国际贸易的企业从231492家增加至 719922家,年均增长13.44%。余淼杰(2014)所用数据覆盖2000-2006年,其数据量从2000年的1058.67万增至2006年的1668.54万,参与了国际贸易的企业则由8023家增加到2006年的286819家。由于三份数据时间跨度不一致,我们将其分成2000-2006年、2007-2013年两个时间段进行比较(2014-2016年由于没有数据重叠,此处无法进行比较),详细对比情况如图1所示。
首先来看数据量,第一个时间段比较的是版本1与余淼杰(2014)所用数据,可以看出,两份数据在7年间互有高低,其中2000年、2001年和2006年版本1的数据量要多于余淼杰(2014),其余年份则少于余淼杰(2014)。其中两个版本在2000年数据量差距最小,仅相差1.16万条;2006年差距最大,数据量之差达到897.64万。第二个时间段比较的是版本1与版本2,可以看出2011年之前,版本1与版本2的数据量差距较小,差距在3.99万-6.92万条之间,随后两年两个版本之间的数据量之差较大,2012年-2013年版本1较版本2分别多出88.17万、89.49万条数据。综合来看,在可以比较的年份,绝对数量差距最大的是2003-2006年,皆来自版本1与余淼杰(2014)版的对比。相比较而言,2007-2013年,两份数据的差异较小。图1 各版海关数据库原始样本数据量比较其次,我们对比参与了国际贸易的企业数(具体如图2所示),结果跟数据量的对比有较为明显的差异。对比也遵循前文所述两个时间段进行比较,先看2000-2006年,版本1与余淼杰(2014)版的企业数量总体较为接近,其中2000年、2001年、2003年、2004年差距仅为1家,最大差距为2005年的2404家。相比前一阶段两个版本的比较,2007-2013年间,企业差距数明显变大,且除2012年,版本1的企业数量均要少于版本2。对比图1图2,后者这一时期两个版本企业数的差异幅度明显大于数据量的差异幅度。图2 各版海关数据库企业主体数量比较(二)数据存在的问题及处理
根据前文可知,不同版本的海关库数据量存在着一定的差异。事实上,每个版本内部的数据也并非完全一致,存在指标缺失、数据重复等各种问题。因此,本部分将从海关库内部数据质量出发,重点介绍指标缺失、信息缺失或错误、数据重复三种问题,以及处理上述问题的逻辑方法。1. 指标数量不一致
根据图3,版本1各年份指标数量在22-32之间不等,更有甚者,同一年不同月份也出现了指标个数不一致的情况,如2015年12月份有23个指标,而其余月份有32个指标。与版本1相比,版本2的指标数量虽然各年份指标数能够保持一致,但指标个数较少,仅为11个指标。图3 版本1海关库各年份指标个数分布情况考虑到后续融合时字段统一的问题,我们将两个版本所有年份的指标都按照最多的字段进行补充。即以2005年的32个字段为标准,其余所有年份均进行查漏补缺。另外,由于原始数据同一年份的数据来源于不同的文件,因此为保证数据来源的可追溯性,我们添加了“文件来源”这一字段,最终每年数据指标个数为33个。具体指标分布情况请见文末附表。2. 信息缺失或错误
海关库原始数据存在的另一个问题就是字段信息可能有缺失或错误。以图4数据库截取的部分数据举例,第5列“JCK_SHCN(税号中文)”字段存在信息缺失,而第10列“JCK_ENTNAME(经营单位)”填列的“非贸易品”明显为错填信息。针对部分同时存在中英文的字段,即两个字段互相对应或存在解释关系,只要二者有一个非空,就可以利用相应非缺失的字段对缺失的字段进行补齐。如图4中的第4列“JCK_SHID(税号编码)”与第5列的“JCK_SHCN(税号中文)”,因为前者是后者的中文编码,因此根据编码对照表,我们就可以对后者缺失的数据进行补齐。针对没有对应信息的指标,如第10列的“JCK_ENTNAME(经营单位)”,则可能需要依靠工商库等外界信息进行更正。图4 数据库中信息缺失或错误举例3. 数据重复问题
对两个版本的原始数据进行查重,发现版本1中存在一定数量的重复(即所有字段均一样),版本2每条数据均唯一,两个版本数据去重前后样本数对比如表3所示。针对版本1,对比去重前后数据发现,2001年的重复量最高,达到了2055170条,重复率高达14.68%,大量重复数据可能也是2001年版本1数量比余淼杰(2014)多的原因之一。其次是2013年有43691条重复数据,重复率0.26%,其余年份重复量较少或者无重复。表3 不同版本海关数据库去重前后样本数分布比较
由于海关数据是日度交易数据,考虑到版本1的海关库数据日期信息只有年月,并未精确到日,因此虽然存在重复,但我们暂时也无法确定其是否真正为重复数据而将其删除。为了验证重复数据的可靠性,我们从中华人民共和国商务部和中华人民共和国海关总署收集到进口和出口贸易总值数据,针对不同年份贸易金额数据按进口和出口进行加总,然后进行对比,具体结果见表4。表4 不同渠道海关数据库进出口贸易总值与官方对照
官方数据:这里所指官方数据由两部分构成,2000-2005年数据来源于中华人民共和国商务部《中国对外贸易形势报告》统计资料,2006-2016年数据来源于中华人民共和国海关总署统计数据。
对比各年份数据量重复情况以及与官方数据对照的进出口贸易总值后,不难发现,海关库进口和出口总值和官方数据相差较大的年份,与原始数据量重复较多的年份基本吻合。因此,在与工商库数据融合之前,我们将对原始数据去重,然后进行接下来的匹配工作。Part3海关库与工商库的匹配
(一)匹配方法
融合产品层面的贸易数据与工商部门的登记信息会面临一定的技术问题,不当的方法选择会导致匹配率与准确率大打折扣。从匹配方法上看,共有字段是两个数据库融合匹配的基石,且共有字段的选择要遵循可唯一识别的原则,即能够通过一个字段或多个字段的组合,使得数据的重复尽可能低。1. 融合变量
为了把海关数据库与工商库进行科学精准的横向匹配,挑选合适的关键融合变量和采取有效的融合方法是非常重要的。通过比对海关数据库和工商库中相互联系的共同字段,我们筛选出在两个数据库中均能识别企业身份信息的字段作为我们的关键融合变量,具体如表5所示。表5 融合变量清单
- 海关注册编码:即海关注册号,是报关单位《进出口货物收发货人报关注册登记证书》上的 10 位数字登记编码,为企业唯一的和终身的经营单位编码。
- 统一社会信用代码:工商企业数据库中,企业登记的是工商注册号。2015 年商事制度改革后,企业统一登记“统一社会信用代码”。
- 组织机构代码:参考《全国组织机构代码编制规则(GB11714-1997)》和《法人和其他组织统一社会信用代码编码规则(GB32100-2015)》。
表5列出了我们整个匹配过程中所用的融合变量(其在两个数据库中存在于不同的字段当中)对其详细的解释说明。我们选取了“组织机构代码”和“企业名称”作为融合变量,用于识别两库中样本企业身份能否一一对应,也即是能否匹配到同一家企业。2. 匹配思路
整个匹配框架主要分成“组织机构代码”匹配和“企业名称”匹配这两个部分。①“组织机构代码”的匹配涵盖了整个匹配过程的前四步。
STEP1:对海关库进行海关注册编码去重。逐年抽取进出口贸易数据,以海关注册编码为关键词将样本进行去重,确保海关注册编码能唯一识别企业。
STEP2:对海关信用注册信息表进行海关注册编码去重。为了增加与工商库的融合字段,我们引入了海关信用注册信息表[1] ,其既包含了海关注册编码字段,也包含了统一社会信用代码。与海关库类似,为了确保海关库与海关信用注册信息表的匹配结果都是在唯一识别的前提下进行,我们同样对海关信用注册信息表按照海关注册编码进行去重处理。
STEP3:以海关注册编码为媒介,为海关库匹配上统一社会信用代码。通过海关注册编码,我们将海关库与海关信用注册信息表联结起来,为海关库匹配上统一社会信用代码,进而为后续与工商库的匹配提供了必要基础。
STEP4:匹配海关库与工商库,为海关库获取企业唯一识别码。利用海关库已匹配好的统一社会信用代码与工商库联结,可以获取工商库的工商企业唯一识别码。在实际匹配过程中,会出现唯一匹配、非唯一匹配、无法匹配三种情况,唯一匹配是指海关库与工商库的统一社会信用代码一一对应,非唯一匹配是指海关库的统一社会信用代码可能指向多家工商库企业(如,在海关信用注册信息表中,多个海关注册编码对应着同一个社会信用代码,就会造成后文社会信用代码的非唯一匹配),无法匹配是指海关库的统一社会信用代码无法匹配上工商库的统一社会信用代码。为了保证匹配的精确程度,该步骤我们仅取唯一识别部分,并将唯一识别部分以海关注册编码字段为连接条件,匹配回原始海关数据。
以上是以“海关信用注册信息表”作为桥梁,利用“海关注册编码+统一社会信用代码”进行匹配的主要步骤。保留经过“海关注册编码+统一社会信用代码”进行匹配后没有成功匹配上的剩余样本,再进行下一步“企业名称”匹配。②“企业名称”匹配:
STEP5:剩余样本企业名称标准化后去重。由于企业名称匹配是精确匹配,因此任一字符不一致都会导致匹配失败。如一家企业名称包含括号的企业,在海关库中显示为英文括号“()”,而在工商库中为中文括号“()”,精确匹配方法下,若不进行企业名称文本标准化处理,就会因为括号而导致无法匹配。基于以上说明,我们针对剩余样本的企业名称进行了标准化处理,包括去除中英文括号,替换中文数字为阿拉伯数字等等(详细处理方案参见《中国工业企业数据库与专利数据库匹配报告》)。如字母全角转换成半角、括号格式统一成“()”、空格符的删除等等。在标准化的基础上,我们根据标准化后的企业名称对剩余样本进行去重处理。
STEP6:工商库企业名称标准化后去重。参照STEP5的做法,我们对工商库中企业的名称同样进行标准化处理,然后去重得到名称唯一的企业。
STEP7:以海关库与工商库的共有变量“企业名称”企业名称为连接条件,为剩余样本企业获取唯一识别码。同样,在唯一匹配、非唯一匹配、无法匹配三种结果中,仅保留唯一匹配部分,并将唯一匹配部分匹配回剩余样本。
以上为海关库与工商库匹配的全部过程,详细流程如图5所示。(二)匹配结果
根据以上匹配办法,匹配成功的数据量和匹配率见表6。版本1的匹配率总体上呈现出螺旋上升的趋势,2000-2004年匹配率保持着稳定上升,随后在2005年、2007年、2011年出现三个相对低点后于2013年达到匹配率的峰值99.65%。版本2的匹配率则呈现出两个明显分化的阶段,第一阶段为2007-2013年,这一阶段,匹配率呈现出缓慢增加的趋势,由2007年的97.00%增加至2013年的99.65%;第二阶段为2014-2016年,这一阶段呈现出“V”字形反转,2014年98.32%的匹配率相对2013年的99.65%略有下滑,随后下滑至 2015年的历史低点90.36%,紧接着快速反弹至2016年的99.86%,为版本2的历史最高匹配率。Part4参考文献
[1] 戴觅、余淼杰、Madhura Maitra.中国出口企业生产率之谜:加工贸易的作用.经济学(季刊)2014(1):675-698.
[2] 余淼杰.加工贸易与中国企业生产率:企业异质性理论和实证研究[M].北京:北京大学出版社,2013:318-321.
Part5附录
附表 两个版本海关数据库指标分布比较
2000-2013版本的海关数据库是Stata 13 版本的dta格式文件,而海关数据需要存储至Oracle数据库中以备后续使用,且Stata文件不能直接导入到数据库,需要使用Python3进行前期的预处理,所以需要将其转换为具有普适性的csv类型的数据。在使用Stata将其转为csv后,使用Python3读取时会抛出“Unicode Error”错误出来,即部分字符不能解码,也就是我们所熟知的乱码,从而导致文件不能进行正常读取。Stata 13及之前的版本编码格式一般采用GB2312或GBK或GB18030编码,而Stata 14之后的更高级版本以及其他数据处理工具Python3、R语言等默认采用的是UTF-8编码。虽然他们也支持其他编码方式,但不同的字符编码有不同的映射关系。所以即便是相同的文字,在不同的编码下,含义也会不同,此外UTF-8以外的编码方式存在没有收录的文字。这时用高级版本的Stata或Python打开早期版本保存的文件,非英文字符出现乱码也就不奇怪了。版本1的海关数据使用默认的GB18030编码方式,在将其转为csv类型的文件后,其编码方式仍为GB18030,这就是Python3读取文件会报错的原因。编码导致的乱码无疑给数据的后续清理、融合、分析造成很大麻烦。Python3使用兼容性更强的UTF-8的编码方式,因此只需要将使用GB18030编码的Stata数据转换为UTF-8编码的数据即可解决中文乱码的问题。Stata从14版本之后默认使用的是UTF-8编码,同时Stata开发者也考虑到高版本兼容低版本数据的问题,因此保留了高版本可以打开低版本数据的能力,只是需要指定编码方式。利用这一特性可以将低版本的数据使用高版本的Stata打开,再重新指定编码为UTF-8,然后就方便其他应用读取数据了。Stata也确实提供了这样的代码可以让我们对低版本的stata文件进行转码,以Stata 16转Stata 13版本的数据为例,转换单个文件的代码如下:需要注意的是,使用该方法转码UTF-8格式的dta数据会覆盖当前文件夹的原数据,可以先对原来的dta文件进行备份,最后再将转码后的数据替换原始数据。另外,我们转码前需要设置编码格式为GB18030。因为GB18030是在 GBK基础上的扩容,而GBK又是在GB2312基础上扩容。也就是说,GB18030 编码包含GBK,而GBK又包括GB2312,所以转码前可以统一设置编码为GB18030。当需要批量转换时,只需写个循环即可。
注释
[1]海关信用注册信息表: 海关信用注册信息表来源于中国海关企业进出口信用信息公示平台。
关于数据匹配与数据清洗,您有任何想要交流的,欢迎加入
企研·社科大数据平台数据分享群
·END·星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧