怎样计算公司的全要素生产率(TFP)

2017-06-10 程晨&刘贝贝 爬虫俱乐部 爬虫俱乐部

全要素生产率(TFP)是产量与全要素投入量之比,作为宏观经济学的重要概念,是政府制定长期政策的重要依据。也是小伙伴们观察各个行业的一大特点。

那么问题来了,我们怎么用Stata实现对各个行业全要素生产率的批量计算呢?

在这里,小编向各位介绍三种方法。

方法一:常规方法

该方法主要参考(鲁晓东,连玉君,2012)以及廖冠民老师JF期刊论文《The Brain Gain of Corporate Boards: Evidence from China》中对上市公司TFP的计算方法 

主要采用的模型如下,指标的数据来源CSMAR。

其中,表示行业j和t年的i公司的主营业务收入的对数,表示行业j和t年的i公司的员工人数的对数,主要使用的年报中披露的上市公司在册(在职)员工人数,表示行业j和t年的i公司的总资产的对数,表示行业j和t年的i公司购买商品、接受劳务实际支付的现金的对数,行业分类采取的2015年的申银万国行业分类方法。

根据上述的模型,需要计算残差,该值就是我们需要的公司的全要素生产率(TFP)的值,关键的程序如下:

打开所需使用的指标文件:

clear

set more off

global path = "F:\Empirical analysis\数据\TFP\"

use  "$path\计算TFP所需要的指标",clear

***由于后面需要根据行业和年份计算TFP,需要知道年份的最大值,所以定义局部宏yearnum来存储年份最大值

sum year

local yearnum=r(max)

***给行业进行连续编号且获取行业编号的最大值和最小值,方便下面的循环

egen indid = group(ind)

sum indid

local indnum1=r(min)

local indnum2=r(max)

***添加变量tfp,方便全要素生产率的值保存在变量tfp

gen tfp=.

***对行业和年份进行循环

forval year = 2000(1) `yearnum' {

disp `year'

     forval indid = `indnum1'(1)`indnum2'{

     disp `indid'

***确保每个年份和每个年份至少有20个样本,避免回归时样本太少

    count if year == `year' & indid==`indid'

    if r(N)<20{

      continue

    }

***按照同行业和同年份进行回归分析

regress  lnsales lnworkernum  lnasset lncashpay  if year == `year' & indid==`indid'  

***计算残差值

predict temp if year == `year' & indid ==`indid', residual

***把计算好的残差值保存在变量tfp

replace tfp=temp if year == `year' & indid ==`indid'  

drop temp

 }

}

drop if tfp==.

save "$path\tfp",replace


方法二:OP方法计算

  除了上述方法,我们同样可以借助于Stata强大又丰富的命令进行调用,让工作更加轻松。

参考(鲁晓东,连玉君,2012)的方法以及命令opreg介绍OP方法的实现过程,首先需要使用语句“ssc install opreg”安装opreg命令,主要的程序如下:

gen lnY_add=ln_sales

gen lnK=ln(PPE)

gen lnL=ln(num)

gen lnI=ln(capital)

xi:opreg lnY_add, exit(exit) state(age lnK) proxy(lnI) free(lnL ln_material) cvars(SOE )  vce(bootstrap, seed(1357) reps(5))

predict tfp_op

ln_material PPE

其中,状态变量为age 和lnK,代理变量为企业的投资lnI,自由变量为lnL和ln_material,控制变量为SOE,退出变量为exit。

sales是主营业务收入,PPE是固定资产,num为公司的员工人数,material是公司购买商品、接受劳务实际支付的现金,capital为资本性支出,exit为是否退出市场,这个指标上市公司数据几乎没有,老师和同学建议可以用公司股权、业务等是否发生实质转移作为指标,在操作中主要以公司简称和所处行业为基准,如果两者同时发生变化了就认为原有的公司退出了市场;age是公司的成立时间,SOE是企业性质的虚拟变量。


方法三:LP方法计算

主要参考(鲁晓东,连玉君,2012)以及help levpet, 程序如下:

levpet lnY_add, free(lnL) proxy(ln_material) capital(lnK) i(stkcd) t(year)

predict tfp_lp,omega

需要注意的是,变量和前面的变量定义都一样,唯一不同的是要对预测出来的tfp_lp取自然对数才是真正的LP方法计算出来的TFP。

小命令有大用途,这就是今天的分享,希望对诸位读者在导出实证结果中有些许的帮助,是不是被喷薄而出的回归报告集惊呆了呢。

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:高娜娜

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号