以下是代码:
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