*=============================================================
*- Lian Yu-jun
* 单 位:中山大学岭南学院金融系
* 电 邮: arlionn@163.com
* 博 客: http://blog.cnfol.com/arlion
* 主 页:http://goo.gl/tRXba
* 微 博:http://weibo.com/arlionn
*
*- Reproduce the results in Roychowdhury(2006, JAE)
* Roychowdhury, S., 2006,
* Earnings management through real activities manipulation,
* Journal of Accounting and Economics, 42 (3): 335-370.
*
*- 2011.04.06
*=============================================================
cd D:\stata11\ado\personal\paper\EM\EM_Roychow2006_JAE
clear all
set memory 200m
use "D:\stata11\ado\personal\data\GTA2009.dta", clear
*-----------
*- 4.1 Data
*-----------
*-筛选样本
drop if TA==.
drop if sicmen_str=="I" // 剔除金融业公司
drop if stpt>0 // 剔除 ST, PT 或退市的公司
keep if lstflg=="A" // 保留仅发行 A 股的公司
*drop if tagr>1 // 这类公司可能发生了兼并收购行为
drop if tl>1 // 负债率大于1,可能资不抵债
*-定义财务指标
qui tsset id year
*------------------
*-盈余管理相关指标
*------------------
gen invA = 1/L.TA
gen sale = b001101000/L.TA // 营业收入
gen Lsale = L.b001101000/L.TA
gen Dsale = D.b001101000/L.TA
gen LDsale= L.D.b001101000/L.TA
gen cogs = b001209000/L.TA // 销售费用/总资产
gen Dinv = D.a001123000/L.TA // D.存货净额
gen prod = cogs + Dinv
gen disexp= (b001209000+b001210000)/L.TA // 销售费用+管理费用
gen PPE = a001212000/L.TA // 固定资产净额/总资产
gen DAR = D.a001111000/L.TA // 应收账款净额
gen DS_DAR= Dsale - DAR
gen DAP = D.a002108000/L.TA // 应付账款
clonevar EBXI = b001300000 // 营业利润
gen IBEI = EBXI/L.TA // 营业利润/L.TA
clonevar cfo_a = c001000000 // 经营活动现金流净额
gen cfo = cfo_a/L.TA // 经营活动现金流净额/总资产
gen acc = (EBXI - cfo_a)/L.TA // D.(营业利润-经营活动现金流净额)/L.TA
gen netincome = b002000000/L.TA // 净利润/L.TA
gen Lsize = L.size
gen Ltobin= L.tobin
*-Table 01 中使用的变量
gen MVE = mv_total/1000000 // total market value, Y million
gen TotalAsset = TA/1000000 // Total assets, Y million
gen Sales = b001101000/1000000 // Sales, Y million
gen IBEI_0 = b001300000/1000000 // 营业利润, Y million
gen CFO = c001000000/1000000 // CFO, Y million
gen Accruals = (EBXI-cfo_a)/10^6
clonevar Invent_TR = kv06 // inventory turnover ratio
clonevar Receiv_TR = kv07 // Receivables turnover ratio
*-删除缺漏值
local v "acc sale cfo Dinv prod disexp PPE DAR"
egen miss = rowmiss(`v')
drop if miss!=0
*-主要变量 winsor 处理
local vv "acc sale Lsale Dsale LDsale cfo Dinv prod disexp PPE DAR IBEI *_TR"
foreach v of varlist `vv'{
local a: var lab `v'
if "`v'" == "Receiv_TR"{
winsor `v', p(0.05) high gen(`v'_x)
}
else{
winsor `v', p(0.01) gen(`v'_x)
}
drop `v'
rename `v'_x `v'
label var `v' "`a'"
}
*-行业划分(制造业细分到次类,其他行业采用门类)
*-定义行业分类方法
*-参见 黄梅,夏新平(2009) 南开管理评论
clonevar sic2 = sicda_str
order id year sic2
replace sic2 = substr(sic2,1,1) if substr(sic2,1,1)!="C"
replace sic2 = substr(sic2,1,2) if substr(sic2,1,1)=="C"
replace sic2 = "C9" if sic2=="C2" // 将 C2 并入 C9
*-每年度每个行业至少保留 15 家公司
bysort sic2 year: egen num_sic_year = count(id)
keep if num_sic_year >=15 // Roychowdhury(2006, p.349)
*-行业重新编码 1,2,3 ……
cap drop sic123
egen sic123 = group(sic2 year), label lname(sic_year)
qui sum sic123
global N = r(max)
*-分行业, 分年度回归分析
dropvars DACC e
gen DACC = .
forvalues i = 1/$N{
qui reg acc invA DS_DAR PPE if (sic123==`i')
qui predict e if e(sample), res
qui replace DACC = e if e(sample)
drop e
}