关于申慧慧老师的环境不确定性的量化,看到论坛里好像没有具体的数据和stata代码,所以在这里lz将环境不确定性的代码以及所用到的数据放在这个帖子,有数据以及结果。lz用的stata14,stata版本低的可能打不开数据,所以我也附上了Excel的数据格式。代码借鉴了这个帖子的代码——https://bbs.pinggu.org/forum.php?mod=viewthread&tid=4455186&page=1#pid44218675,在此基础上进行了一些修改。和大家交流一下,当然还是要一点金币的,就当小挣个钱。
以下是代码:
use sale.dta,clear
rename b001101000 sale
merge m:1 id using ind.dta,nogen
gen ind = substr( nnindcd,1,1 )
encode ind,gen(ind_numb)
drop if ind_numb==10
drop if ind_numb==.
drop if sale==.
xtpattern,gen(pp)
tab pp
gen p6 = strpos(pp, "11111")
sort p6
drop if p6==0
drop pp p6
*
gen msale=.
gen dev=.
forvalues i = 1999(1)2011{
qui gen YEAR= year-`i'
dis "YEAR`i'"
qui xtset id year
preserve
qui drop if year<=`i' |year> `i'+5
qui bysort id : egen s= sum(YEAR)
qui drop if s != 15
qui egen id_2= group(id)
qui sum id_2
qui local u = r(max)
forvalues j = 1(1)`u'{
qui reg sale YEAR if YEAR <6 &YEAR>0 & id_2 ==`j'&s==15
qui predict p if YEAR<6 & YEAR>0 & id_2 ==`j' &s==15,r
qui sum p if id_2==`j',de
qui replace dev=r(sd) if id_2==`j' & YEAR==5&s==15
qui sum sale if id_2==`j' & YEAR<6 & YEAR>0 &s==15,de
qui replace msale=r(mean) if id_2==`j' & YEAR==5&s==15
qui drop p
}
qui drop YEAR
qui drop if dev==.
save eu`i'.dta,replace
restore
qui drop YEAR
}
dis "loop is over"
use eu1999.dta,clear
forvalues a= 2000(1)2011{
append using eu`a'.dta
}
gen eu =dev/msale
save eu.dta,replace
*行业中位数
use eu.dta,clear
gen eu_ind =.
xgroup year ind_numb,gen(ind_year)
sum ind_year,de
local n=r(max)
forvalues i = 1(1)`n'{
qui sum eu if ind_year==`i',de
qui replace eu_ind= r(p50) if ind_year==`i'
}
save eu.dta,replace
*经行业调整
gen eu_adjusted= eu/eu_ind
label var eu 未经行业调整的环境不确定性
label var eu_ind 行业环境不确定性
label var eu_adjusted 经行业调整的环境不确定性
save eu.dta,replace
use eu.dta,clear
keep id year ind_numb eu_adjusted