全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
3625 1
2013-05-21
连老师:您好!
       请问我想按年度计算每家公司过去五年销售收入的残差该怎么写命令?谢谢您!
                                                                                                                 董雪雁
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-5-25 17:33:51
残差要通过回归分析才能算出来,不知你的模型设定是怎么样的?还请把问题描述的更细致一些。

如下代码用于计算每家公司的盈余管理程度,或许可以参考:


*=============================================================
*- 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)
         
   *-基本统计分析
     tab sic2 year


*------------------------------
*-4.2 Earning Managment 的估计
*------------------------------

*----------------  
*-AEM  Accruals
*----------------

   *-行业重新编码 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
         }
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群