//下面的不变,包括正负项指标
global all_var $positive_var
foreach i in $positive_var {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min))
}
//计算各指标的比重
foreach i in $all_var {
egen `i'_sum=sum(x_`i')
gen y_`i'=x_`i'/`i'_sum
}
//根据比重计算各分量的信息熵
gen n=_N
foreach i in $all_var {
gen y_lny_`i'=y_`i'*ln(y_`i')
replace y_lny_`i'=0 if x_`i'==0
}
//求和
foreach i in $all_var {
egen y_lny_`i'_sum=sum(y_lny_`i')
}
//计算各指标的贡献总量。熵值ej
foreach i in $all_var {
gen E_`i'= -1/ln(n)*y_lny_`i'_sum
}
//计算各指标的权重,差异系数d
foreach i in $all_var {
gen d_`i'= 1-E_`i'
}
egen d_sum = rowtotal(d_*)
foreach i in $all_var {
gen W_`i'= d_`i'/d_sum
}
egen W=rowtotal(W_*)
//计算综合得分
foreach i in $all_var {
gen Score_`i'= x_`i'*W_`i'
}
egen Score=rowtotal(Score_*)