本次分享主要是三个文件:1、色诺芬数据库中工业原始CSV格式的文件(98-13);2、stata专用dta文件(98-13);3、1998-2007合并的dta文件。
合并思路依据:论坛中有各路大神有一秀出自己的合并思路,其中不乏有用python处理工企的大神,但基本上都是参照Brandt(2012)序贯匹配的大体思路,我的匹配也是,但是进行了大幅度的简化。
合并思路核心:序贯匹配中,匹配依据依次是ID(企业代码)、Name(企业名称)和Other(其他信息),本次匹配主要是对Other信息进行了简化,仅使用了legal person(法人)和zip(邮编)两条信息。也就是一共将使用D(企业代码)、Name(企业名称)、legal person(法人)和zip(邮编)四种信息识别在不同年份的同一家企业。之所以可以如此是因为Brandt(2012)的方法也存在大量误配,与之相比,本次匹配的效果还算令人满意。
合并具体原则:1、ID(企业代码)相同的为同一家企业(也存在同一年中少量企业ID相同,但一般是子公司使用了母公司的ID),ID是最高的匹配标准;2、ID匹配失败的将使用Name(企业名称)进行匹配,此时需保证企业名称的唯一性;3、ID和Name均不相同的,使用legal person(法人)+zip(邮编)的第三套判别标准,此处认为只要企业老板和厂地没有发生变化,ID和Name改变后仍属于一家企业,但是如果legal person(法人)+zip(邮编)不相同只可能是被收购(ID、Name和legal person不同,zip相同)或者他处建厂(ID、Name和zip不相同,legal person相同),这两种企业本次均不视为同一家企业。
具体合并过程:1、1998年数据与1999年数据首先根据ID合并,ID不同的使用Name合并,二者均不相同的使用legal person+zip合并,三个标准都为匹配的企业保存,之后将数据还原为长面板数据,此处重点关注Name和legal person+zip组合合并成功的企业需要使用ID1999代替ID1998.,保存为1998-1999.dta文件。
2、1999年与2000年匹配,匹配方式如上步1相同,但还原需注意Name和legal person+zip组合合并成功的企业,需用ID2000代替1998-1999.dta中ID1998和ID1999,以此通过迭代替换ID的方式保证每家企业在不同年份ID相同。(不同于Brandt(2012)之处)
3、迭代替换的方法可以一直持续到2007年,2008 2009 2010 年三年中出现ID或者Name部分缺失,需要自建编号基于补全,之后依然可以按照迭代替换的方法进行合并,同时这三年中legal person缺失,匹配的方法退化为ID和Name两种基准,直至2011年数据开始完善,从2012年开始使用ID、Name和legal person+zip的三重标准,直至2013年结束。
4、同时应该注意,迭代替换的方式将产生大量的中间文件,所以至少要为中间文件准备30G左右的空间,主要是保底空间,另一方面为了便于应用,匹配中使用了全局暂元,只需将各年中需要的变量找出,将变量名加入暂元中,运行程序即可分离出所需结果,不再使用所有变量匹配(耗时耗空间且各年变量不一)。
后记:本贴show出使用本方法匹配的1998-2007年的结果,有需要使用的可直接下载,编码耗时两天,如果想要具体代码的宝宝可以喂点狗粮,代码是98-13完整的,所得结果共425万条样本。
代码用法:首先将上文数据下载(dta格式),放入stata13的根目录中(examples),然后将需要的变量加入暂元X当中(代码中以employment和revenue为例),之后在每年的数据中找到变量的位置,将v开头的变量重命名(employment和revenue),注意每年的位置都要找到,98-07是10年,因此需要替换10个位置,98-13是16年,因此需要替换16个位置,最后运行整个程序即可。
注:希望同各路大神交流,感谢。