Stata:各类盈余管理指标的Stata实现方法

Stata:各类盈余管理指标的Stata实现方法

2 年前 · 来自专栏 连玉君Stata专栏-连享会

作者:王若溪 (中山大学)
Stata 连享会: 知乎 | 简书 | 码云 | CSDN

连享会-知乎推文列表


Note: 助教招聘信息请进入「课程主页」查看。

qr32.cn/BlTL43 (二维码自动识别)

gitee.com/arlionn/DSGE (二维码自动识别)


盈余管理是公司金融和会计领域的一个重要话题。本文对目前文献中常用的盈余管理指标进行了梳理,并基于国泰安数据库中的变量,提供了这些指标在 Stata 中的实现方法。

目前的研究将普遍将盈余管理分为应计盈余管理和真实盈余管理。应计盈余管理基于权责发生制,针对会计处理,通过会计政策选择、应计项目调整和会计估计变更等方式来进行;真实盈余管理是通过改变企业真实生产经营活动来实现的。盈余管理的测量一直是重点研究方向,目前的方法多通过计算残差的方式来估算盈余管理的程度。

在盈余管理研究初期,许多学者聚焦于应计盈余管理,并提出了相应的测量模型。 Healy (1985) 在研究分红计划时,最早提出了应计项目操纵的计算方式, Jones (1991) 提出了经典的Jones模型,发展了对操纵性应计项目估计的方法。之后国内外学者不断完善和发展对应计盈余管理测量。针对不同测算方式的准确度, 黄梅和夏新平 (2009) 使用中国数据,对七种应计盈余管理计量方法进行了检验,发现分年度分行业计算的修正Jones模型在模型设定和检验能力方面表现更佳,并建议以此方法为主进行后续研究。

真实盈余管理的研究开始得相对较晚,国内外普遍使用 Roychowdhury (2006) 提出的方法,从销售操纵、酌量性费用和过度生产三个方面进行分析,计算异常现金流、异常生产成本和异常酌量性费用。之后的学者多采用将三个指标加总的方式衡量真实盈余管理的整体程度。

本文将逐一介绍 黄梅和夏新平 (2009) 总结的应计盈余管理测算方法和 Roychowdhury (2006) 提出的真实盈余管理计算方法,参考文献的详细内容在文末列出。

应计盈余管理

1. 基本Jones模型

Jones (1991) 提出了经典的Jones模型,从营业收入变动和固定资产水平衡量企业应计利润的变动。具体模型如下:

\frac{TA_{i,t}}{A_{i,t-1}}=\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{\Delta REV_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{PPE_{i,t}}{A_{i,t-1}}\right]+\epsilon_{i,t}

其中, A_{i,t-1} 为滞后一期的总资产, \Delta REV_{i,t} 为营业收入增量, PPE_{i,t} 为固定资产。通过该方程计算得到的残差即为应计盈余管理。 Jones (1991) 原文中提到的应计项目总额 TA_t 计算方法如下:

TA_t=\Delta Current\ Asset_t-\Delta Cash_t-\Delta Current\ Liabilities_t-Depreciation\ Expense_t

黄梅和夏新平 (2009) 将 TA_t 定义为第t年营业利润减去第t年经营活动现金流量。

黄梅和夏新平 (2009) 文章中对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
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     // 营业收入的增量, x2
gen PPE   = a001212000/L.A       // 固定资产净额/总资产, x3
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc invA Dsale PPE if (sic_year==`i'), nocons
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }

2. 修正Jones模型

Dechow等 (1995) 提出的修正Jones模型在Jones模型的基础上加入了应收账款的变动,具体模型如下:

\frac{TA_{i,t}}{A_{i,t-1}}=\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{\Delta REV_{i,t}-\Delta REC_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{PPE_{i,t}}{A_{i,t-1}}\right]+\epsilon_{i,t}

其中, \Delta REC_{i,t} 为应收账款变动。

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
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 sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc invA DS_DAR PPE if (sic_year==`i'), nocons
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }
连享会 最新专题 直播

3. 无形资产Jones模型

陆建桥 (1999) 在修正Jones模型的基础上,进一步考虑了无形资产和其他长期资产的作用。具体模型如下:

\begin{array}{c} {\frac{T A_{i, t}}{A_{i, t-1}}=\alpha_{1}\left[\frac{1}{A_{i, t-1}}\right]+\alpha_{2}\left[\frac{\Delta R E V_{i, t}-\Delta R E C_{i, t}}{A_{i, t-1}}\right]} \ {+\alpha_{3}\left[\frac{P P E_{i, t}}{A_{i, t-1}}\right]+\alpha_{4}\left[\frac{I A_{i, t}}{A_{i, t-1}}\right]+\epsilon_{i, t}} \end{array}

其中, IA_{i,t} 为无形资产和其他长期资产。

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
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
gen IA    = a001218000/L.A       // 无形资产净额, x4
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc invA DS_DAR PPE IA if (sic_year==`i'), nocons
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }

4. 前瞻性修正Jones模型

Dechow等 (2003) 在修正Jones模型的基础上,对应收账款进行了调整,并加入滞后一期的总应计项目和销售增长率。具体模型如下:

\begin{array}{c}{\frac{T A_{i, t}}{A_{i, t-1}}=\alpha_{1}\left[\frac{1}{A_{i, t-1}}\right]+\alpha_{2}\left[\frac{\Delta R E V_{i, t}-(1-k) \Delta R E C_{i, t}}{A_{i, t-1}}\right]} \ {+\alpha_{3}\left[\frac{P P E_{i, t}}{A_{i, t-1}}\right]+\alpha_{4}\left[\frac{T A_{i, t-1}}{A_{i, t-1}}\right]+\alpha_{5}\left[\frac{G R R E V_{i, t+1}}{A_{i, t-1}}\right]+\epsilon_{i, t}}\end{array}

其中,k 为应收账款变化对主营业务收入变化的分行业回归的估计系数, \Delta REC_{i,t}=\alpha+k\Delta REV_{i,t}+\epsilon_{i,t} ,而 GRREV_{i,t+1} 为未来一期的销售增长率。

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
clonevar A  = a001000000         // 总资产
clonevar EBXI  = b001300000      // 营业利润
clonevar cfo   = c001000000      // 经营活动现金流净额
clonevar grrev = f081602c        // 营业收入增长率
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 PPE   = a001212000/L.A       // 固定资产净额, x3
gen Lacc = L.acc                // 滞后一期的应计项目总额,x4
gen grrev = F.f081602c/L.A       // 营业收入增长率,x5
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 计算系数 k
statsby,by(year sic) clear:reg DAR Dsale 
clonevar k=_b_Dsale // 回归得到系数 k
save k.dta, clear
* 将k.dta中的系数 k 匹配回原始数据
merge 1:m year sic using k.dta 
drop _merge
gen DS_kDAR = Dsale-(1-k)*DAR // 营业收入增量-(1-k)应收账款增量, x2
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc invA DA_kDAR PPE Lacc grrev if (sic_year==`i'), nocons
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }

5. 现金流量Jones模型

Dechow 和 Dichev (2002) 提出将滞后一期、当期和未来一期的经营性净现金流加入模型中,提出了如下的模型:

\begin{aligned} \frac{T A_{i, t}}{A_{i, t-1}}=& \alpha_{0}+\alpha_{1}\left[\frac{\Delta R E V_{i, t}}{A_{i, t-1}}\right]+\alpha_{2}\left[\frac{P P E_{i, t}}{A_{i, t-1}}\right] \ &+\alpha_{3}\left[\frac{C F O_{i, t-1}}{A_{i, t-1}}\right]+\alpha_{4}\left[\frac{C F O_{i, t}}{A_{i, t-1}}\right]+\alpha_{5}\left[\frac{C F O_{i, t+1}}{A_{i, t-1}}\right]+\epsilon_{i, t} \end{aligned}

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
clonevar A  = a001000000         // 总资产
clonevar EBXI  = b001300000      // 营业利润
clonevar cfo   = c001000000      // 经营活动现金流净额
gen acc = (EBXI - cfo)/L.A       // 总应计项目,y
gen Dsale = D.b001101000/L.A     // 营业收入的增量, x1
gen PPE   = a001212000/L.A       // 固定资产净额, x2
gen Lcfo   = L.c001000000/L.A    // 滞后一期的经营性现金流净额, x3
gen cfo     = c001000000/L.A     // 当期的经营性现金流净额, x4
gen Fcfo   = F.c001000000/L.A    // 未来一期的经营性现金流净额, x5
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc Dsale PPE Lcfo cfo Fcfo if (sic_year==`i')
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }

6. 收益匹配Jones模型

Kothari等 (2002) 提出在传统的Jones模型中引入业绩变量 (ROA) 以控制业绩与企业应计之间的相关性,或为每一个样本企业找到一个业绩匹配的企业。这里介绍引入ROA的模型,Kothari等 (2002) 认为可以选择当期的ROA或滞后一期的ROA,黄梅和夏新平 (2009) 使用了当期的 ROA:

\frac{TA_{i,t}}{A_{i,t-1}}=\alpha_0+\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{\Delta REV_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{PPE_{i,t}}{A_{i,t-1}}\right]+\alpha_4\left[\frac{ROA_{i,t(or\ t-1)}}{A_{i,t-1}}\right]+\epsilon_{i,t}

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
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     // 营业收入的增量, x2
gen PPE   = a001212000/L.A       // 固定资产净额, x3
gen roa   = f050201b/L.A       // 当期的ROA, x4
gen Lroa = L.f050201b/L.A     // 滞后一期的ROA, x4 (可选) 
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc invA Dsale PPE roa if (sic_year==`i') // 也可以使用滞后一期的ROA
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }
连享会 最新专题 直播

7. 非线性Jones模型

Ball和Shivakumar (2006) 提出,应计和业绩之间存在非线性相关,为了解决这一问题,在传统的Jones模型中加入表示虚拟变量 DVAR_{i,t} ,当 CFO_{i,t} 小于零时,它等于1,反之则为零。具体模型如下:

\frac{TA_{i,t}}{A_{i,t-1}}=\alpha_0+\alpha_1\left[\frac{\Delta REV_{i,t}}{A_{i,t-1}}\right]+\alpha_2\left[\frac{PPE_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{DVAR_{i,t}}{A_{i,t-1}}\right]+\alpha_4\left[\frac{DVAR_{i,t}*CFO_{i,t}}{A_{i,t-1}}\right]+\epsilon_{i,t}

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
clonevar A  = a001000000         // 总资产
clonevar EBXI  = b001300000      // 营业利润
clonevar cfo   = c001000000      // 经营活动现金流净额
gen acc = (EBXI - cfo)/L.A       // 总应计项目,y
gen Dsale = D.b001101000/L.A     // 营业收入的增量, x1
gen PPE   = a001212000/L.A       // 固定资产净额, x2
* 生成虚拟变量和交乘项
gen dvar  = .                    // 虚拟变量, x3 
replace dvar = 1 if cfo <  0  
replace dvar = 0 if cfo >= 0
gen dvar_cfo = dvar*cfo/L.A    // 交乘项, x4
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 利用循环求残差,残差即为应计盈余管理DACC
gen DACC = .
     forvalues i = 1/$N{
       qui reg acc Dsale PPE dvar dvar_cfo if (sic_year==`i') // 也可以使用滞后一期的ROA
       qui predict e if e(sample), res
       qui replace DACC = e if e(sample) 
       drop e
     }

真实盈余管理

目前对真实盈余管理的计算普遍使用 Roychowdhury (2006) ,通过分别计算经营活动的异常现金流 ABCFO_{i,t} 、异常生产成本 ABPROD_{i,t} 和异常酌量性费用 ABDISEXP_{i,t} 得到真实盈余管理。具体计算方法如下:

\frac{CFO_{i,t}}{A_{i,t-1}}=\alpha_0+\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{S_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{\Delta S_{i,t}}{A_{i,t-1}}\right]+\epsilon_{i,t}

\frac{PROD_{i,t}}{A_{i,t-1}}=\alpha_0+\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{S_{i,t}}{A_{i,t-1}}\right]+\alpha_3\left[\frac{\Delta S_{i,t}}{A_{i,t-1}}\right]+\alpha_4\left[\frac{\Delta S_{i,t-1}}{A_{i,t-1}}\right]+\epsilon_{i,t}

\frac{DISEXP_{i,t}}{A_{i,t-1}}=\alpha_0+\alpha_1 \left[\frac{1}{A_{i,t-1}}\right]+\alpha_2\left[\frac{S_{i,t-1}}{A_{i,t-1}}\right]+\epsilon_{i,t}

Roychowdhury (2006) 将 PROD_{i,t} 生产成本定义为销售成本COGS和存货增量之和, DISEXP_{i,t} 酌量性费用为研发费用 R&D、广告费用和SG&A之和, S_{i,t} 为营业收入 Sales。国内学者普遍使用销售费用和管理费用之和作为酌量性费用,如 李增福等 (2011) 李春涛等 (2016)

对应的 Stata 程序如下:

* 根据国泰安数据库计算需要的指标
clonevar A  = a001000000                   // 总资产
gen cfo   = c001000000/L.A                 // 经营活动现金流净额, y1
gen cogs  = b001209000/L.A                 // 销售费用/总资产
gen Dinv  = D.a001123000/L.A               // 存货净额增量
gen prod  = cogs + Dinv                    // 生产成本, y2
gen disexp= (b001209000+b001210000)/L.A    // 酌量性费用,销售费用+管理费用, y3
gen invA  = 1/L.A                          // 滞后一期的总资产的倒数  
gen sale  = b001101000/L.A                 // 营业收入
gen Lsale = L.b001101000/L.A               // 滞后一期的营业收入
gen Dsale = D.b001101000/L.A               // 营业收入增量
gen LDsale= L.D.b001101000/L.A             // 滞后一期的营业收入增量
* 生成行业+年份变量,方便回归
egen sic_year = group(sic year), label lname(sic_year)  // sic 为行业分类,year为年度时间标识
* 分别计算异常经营性净现金流、异常生产成本和异常酌量性费用
*-CFO
     local  y "cfo"
     global y `y'
     local  x "invA sale Dsale"
     global x `x' 
     cap drop AB`y'
     gen AB`y'  = .
     forvalues i = 1/$N{
       qui reg `y' `x' if (sic_year==`i')
       qui predict e if e(sample), res
       qui replace AB`y' = e if e(sample) 
       drop e
   *-PROD   
     qui tsset id year
     local y "prod"
     local x "invA sale Dsale LDsale"
     cap drop AB`y'
     gen AB`y'  = .
     forvalues i = 1/$N{
       cap qui reg `y' `x' if (sic_year==`i')
       cap predict e if e(sample), res
       cap replace AB`y' = e if e(sample) 
       cap drop e
   *-DISEXP  
     local y "disexp"
     local x "invA Lsale"
     cap drop AB`y'
     gen AB`y'  = .