楼主: dxy68
3279 1

[Stata初级班] forvalues 命令 [推广有奖]

  • 3关注
  • 3粉丝

博士生

1%

还不是VIP/贵宾

-

威望
0
论坛币
5357 个
通用积分
2.3308
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
837 点
帖子
37
精华
0
在线时间
376 小时
注册时间
2008-12-1
最后登录
2023-5-6

楼主
dxy68 在职认证  发表于 2013-5-21 23:45:28 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
连老师:您好!
       请问我想按年度计算每家公司过去五年销售收入的残差该怎么写命令?谢谢您!
                                                                                                                 董雪雁
二维码

扫码加我 拉你入群

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

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

关键词:forvalues forvalue values value forv

沙发
arlionn 在职认证  发表于 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
         }

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 15:19