这里有一段相对完整的代码供参考:
Stata暑假现场班即将开班(授课:连玉君,北京)
核心内容:断点回归分析(RDD);合成控制法(Synthesis Control Methods);面板门槛模型;面板VAR模型;自科标书的撰写;一篇经典论文的Stata重现(Journal of Finance) 等.
初级班(四天): http://www.peixun.net/view/307.html
高级班(四天):http://www.peixun.net/view/308.html
PDF课程大纲:http://pan.baidu.com/share/link?shareid=1057481064&uk=604047888
烦请给位转发给有需要的同学和老师,多谢!
- *------------------
- *-盈余管理相关指标
- *------------------
- 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
- }
复制代码