egen k=group(T_123 IND) //将同年度同行业的分为一类
gen nda=.
gen da=.
forvalue i=1(1)137 { //对同行业同年度的观测值回归
reg TA A_D TA1 TA2 if(k==`i')&(dup_dtag==0)
predict nda1 if k==`i'
predict da1 if k==`i', res
replace nda=nda1 if k==`i'
replace da=da1 if k==`i'
drop nda1 da1
}
为什么最后只有k=IND(行业)的进行了回归,而不是我想的分行业年度回归呢?谢了!完整语句:
xmluse Engresult.xml, doctype(excel) clear firstrow //导入excel
compress
sort T //按时间排列升序
egen T_123 = group(T) //为时间字符带入数值表示
egen CODE_123=group(CODE) //为公司代码带入数字表示
duplicates tag CODE T, gen(dup_dtag) //标记重复出现的发债企业值
duplicates drop CODE T,force //删除重复出现的只保留第一个
xtset CODE_123 T_123 //生成面板数据
g A_1=l.A //对资产取滞后一期
g REV_1=l.REV //对营业收入取滞后一期
g REC_1=l.REC //对应收账款取滞后一期
g INV_1=l.INV //对存货取滞后一期
g REV_2=l2.REV //对营业收入取滞后二期
g DREV_1=REV-REV_1 //产生delta值
g DREC_1=REC-REC_1 //产生delta值
g DINV_1=INV-INV_1 //产生delta值
g DREV_2=REV-REV_2 //产生delta值
g A_D=1/A_1 //资产取倒数
g TA=(PRO-CAS)/A_1
g TA1=(DREV_1-DREC_1)/A_1
g TA2=PPE/A_1 //第一个方程
g CFO=CAS/A_1
g CFO1=REV/A_1
g CFO2=DREV_1/A_1 //第二个方程
g PROD=(COS+DINV_1)/A_1
g PROD1=REV/A_1
g PROD2=DREV_1/A_1
g PROD3=DREV_2/A_1 //第三个方程
g DISEXP=(SCO+MCO)/A_1
g DISEXP1=DREV_2/A_1 //第四个方程
egen mis=rowmiss(_all)
drop if mis //这两步是将缺漏值删除
egen k=group(T_123 IND) //将同年度同行业的分为一类
gen nda=.
gen da=.
forvalue i=1(1)137 { //对同行业同年度的观测值回归
reg TA A_D TA1 TA2 if(k==`i')&(dup_dtag==0)
predict nda1 if k==`i'
predict da1 if k==`i', res
replace nda=nda1 if k==`i'
replace da=da1 if k==`i'
drop nda1 da1
}
set more off
egen g=group(year industry)
sum g
lacal Ng=r(max)
gen aq=.
gen wc_hat=.
forvalues i=1/'Ng` {
reg wc_delta cfo_l cfo cfo_f sale_delta PPE if g==`i'
predict aq1 if g==`i',res
predict WC_pre1 if g==`i'
replace aq=aq1 if g==`i'
replace wc_hat=WC_pre1 if g==`i'
drop aq1 WC_pre1
}