变异系数法求权重
*Step0:定义正负数据
global positive_var
global negative_var
*Step1:标准化
*foreach i in $positive_var {
*qui sum `i'
*gen x_`i'=(`i'-r(min))/(r(max)-r(min))
*}
*foreach i in $negative_var {
*qui sum `i'
*gen x_`i'=(r(max)-`i')/(r(max)-r(min))
*}
foreach i in $xlist {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min))
}
*Step2:计算变异系数
foreach i in $xlist {
egen sd_`i'= sd(x_`i') //计算标准差
}
foreach i in $xlist {
egen mean_`i'= mean(x_`i') //计算平均值
}
foreach i in $xlist {
gen v_`i'= sd_`i'/ mean_`i' //计算变异系数
}
egen v_sum = rowtotal(v_*) //变异系数加总
*Step3:计算各指标权重
foreach i in $xlist {
gen w_`i'=v_`i'/v_sum
}
*Step4:计算综合得分
foreach i in $xlist {
gen Score_`i'= x_`i'*w_`i'
}
egen Score=rowtotal(Score_*)