drop if IndustryCode == ""
drop if year <=2007
gen Ind_reg = substr(IndustryCode, 1, 1)
replace Ind_reg = IndustryCode if Ind_reg == "C"
* 一、应计盈余管理
* 1. 基本Jones模型
{
* Jones (1991) 提出了经典的Jones模型,从营业收入变动和固定资产水平衡量企业应计利润的变动。具体模型如下:
* 根据国泰安数据库计算需要的指标
clonevar A = A001000000 // 总资产
clonevar EBXI = B001300000 // 营业利润
clonevar cfo = C001000000 // 经营活动现金流净额
xtset id year
gen acc = (EBXI - cfo)/L.A // 总应计项目,y
gen invA = 1/L.A // 滞后一期的总资产的倒数, x1
gen Dsale = D.B001101000/L.A // 营业收入的增量, x2
gen PPE = A001212000/L.A // 固定资产净额/总资产, x3
* 生成行业+年份变量,方便回归
cap drop count
egen count = count(id), by(Ind_reg year)
egen sic_year1 = group(Ind_reg year)
replace sic_year1 =. if count < 45
sum year
replace sic_year1 =. if (year <= r(min))
egen sic_year = group(sic_year1)
sum sic_year //查看最大值,然后放到循环里
// sum id year TA1_A Dsale PPE_A if sic_year1==1
// scalar max2 = r(max)
local T = r(max)
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC1 = .
forvalues i = 1/`T'{
cap qui reg acc invA Dsale PPE if (sic_year==`i'), nocons
cap qui predict e if e(sample), res
cap qui replace DACC1 = e if e(sample)
cap drop e
}
gen AbsDACC1 = abs(DACC1)
drop acc invA Dsale PPE sic_year sic_year1 A EBXI cfo count
label var DACC1 "基本Jones模型,Jones (1991) "
label var AbsDACC1 "基本Jones模型,Jones (1991),绝对值 "
}
* 2. 修正Jones模型
{
* Dechow 等 (1995) 提出的修正Jones模型在Jones模型的基础上加入了 应收账款的变动 ,具体模型如下:
* 根据国泰安数据库计算需要的指标
xtset id year
clonevar A = A001000000 // 总资产
clonevar EBXI = B001300000 // 营业利润
clonevar cfo = C001000000 // 经营活动现金流净额
gen acc = (EBXI - cfo)/L.A // 总应计项目,y
gen invA = 1/L.A // 滞后一期的总资产的倒数, x1
gen Dsale = D.B001101000/L.A // 营业收入的增量
gen DAR = D.A001111000/L.A // 应收账款的增量
gen DS_DAR= Dsale - DAR // 营业收入的增量-应收账款的增量, x2
gen PPE = A001212000/L.A // 固定资产净额, x3
* 生成行业+年份变量,方便回归
egen count = count(id), by(Ind_reg year)
egen sic_year1 = group(Ind_reg year)
replace sic_year1 =. if count < 45
sum year
replace sic_year1 =. if (year == r(min))
egen sic_year = group(sic_year1)
sum sic_year //查看最大值,然后放到循环里
// sum id year TA1_A Dsale PPE_A if sic_year1==1
// scalar max2 = r(max)
local T = r(max)
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC2 = .
forvalues i = 1/`T'{
cap qui reg acc invA DS_DAR PPE if (sic_year==`i'), nocons
cap qui predict e if e(sample), res
cap qui replace DACC2 = e if e(sample)
cap drop e
}
gen AbsDACC2 = abs(DACC2)
drop acc invA Dsale DAR DS_DAR PPE sic_year A EBXI cfo sic_year1 count
label var DACC2 "修正Jones模型,Dechow 等 (1995) "
label var AbsDACC2 "修正Jones模型,Dechow 等 (1995),绝对值 "
}


雷达卡



京公网安备 11010802022788号







