*定义正向指标与负向指标
global positive_var x1 x3 x4 x5 x6 x8 x9 x10
//定义正向指标,把x1 x3 x5 x7都打包到positive_var
global negative_var x2 x7
//定义负向指标,把x2 x4 x6 x8都打包到negative_var
global xlist x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
//把上述的所有指标都打包到xlist
*标准化
foreach i in $positive_var {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min)) //正向指标标准化处理
replace x_`i'=0.000001if x_`i'==0 //避免出现0值
}
foreach i in $negative_var {
qui sum `i' gen x_`i'=(r(max)-`i')/(r(max)-r(min)) //负向指标标准化处理
replace x_`i'=0.000001 if x_`i'==0 //避免出现0值
}
*Step0:定义正向指标与负向指标
*定义正向指标与负向指标
global positive_var x1 x3 x5 x7
//定义正向指标,把x1 x3 x5 x7都打包到positive_var
global negative_var x2 x4 x6 x8
//定义负向指标,把x2 x4 x6 x8都打包到negative_var
global xlist x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
//把上述的所有指标都打包到xlist
*标准化
foreach i in $positive_var {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min)) //正向指标标准化处理
replace x_`i'=0.000001if x_`i'==0 //避免出现0值
}
foreach i in $negative_var {
qui sum `i' gen x_`i'=(r(max)-`i')/(r(max)-r(min)) //负向指标标准化处理
replace x_`i'=0.000001 if x_`i'==0 //避免出现0值
}
************************************熵权法*****************************************//
*Step2:计算第j项指标下第i个样本值占该指标所有样本值之和的比重Pij
foreach i in $xlist {
egen `i'_sum=sum(x_`i') //把每个指标进行加总
gen y_`i'=x_`i'/`i'_sum
}
gen k=_N //这个代码可以根据数据类型做更改
foreach i in $xlist {
gen y_lny_`i'=y_`i'*ln(y_`i') //指标比重乘以ln(指标比重)
}
*Step3:计算第j项指标的信息熵ej
foreach i in $xlist {
egen y_lny_`i'_sum=sum(y_lny_`i') //对指标比重乘以ln(指标比重)进行求和
}
foreach i in $xlist {
gen e_`i'= -1/ln(k)*y_lny_`i'_sum
}
*Step4:计算信息熵冗余度dj
foreach i in $xlist {
gen d_`i'= 1-e_`i' }
*Step5:计算评价指标权重wj
egen d_sum = rowtotal(d_*)
foreach i in $xlist {
gen w_`i'= d_`i'/d_sum
}
*Step6:计算综合得分s
foreach i in $xlist {
gen Score_`i'= w_`i'*x_`i' //权重乘以标准化值
}
egen Score=rowtotal(Score_*) //求和
******************************************************************
*Step0:定义正向指标与负向指标
*定义正向指标与负向指标
global positive_var x1 x3 x5 x7
//定义正向指标,把x1 x3 x5 x7都打包到positive_var
global negative_var x2 x4 x6 x8
//定义负向指标,把x2 x4 x6 x8都打包到negative_var
global xlist x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
//把上述的所有指标都打包到xlist
*标准化
foreach i in $positive_var {
qui sum `i'
gen x_`i'=(`i'-r(min))/(r(max)-r(min)) //正向指标标准化处理
replace x_`i'=0.000001if x_`i'==0 //避免出现0值
}
foreach i in $negative_var {
qui sum `i' gen x_`i'=(r(max)-`i')/(r(max)-r(min)) //负向指标标准化处理
replace x_`i'=0.000001 if x_`i'==0 //避免出现0值
}
************************************变异系数法*****************************************
*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_b_`i'=v_`i'/v_sum
}
*Step4:计算综合得分
foreach i in $xlist {
gen Score_b_`i'= x_`i'*w_b_`i'}
egen Score_b=rowtotal(Score_b_*)