全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管文库(原现金交易版)
451 0
2024-09-22
部分实例import excel "数据.xlsx", firstrow clear

save data.dta, replace

*=========================== 需要设置 ===========================

//正向指标

global positive_var x1 x2 x3

//负向指标

global negative_var x4 x5

*================================================================

*========================= 后面无需改动 =========================

//所有指标

global all_var $positive_var $negative_var

//年份

qui sum year

global min_year=r(min)

global max_year=r(max)

forvalues year=$min_year / $max_year{

        use data.dta, clear

        keep if year==`year'

        //标准化数据 正向指标

        foreach i in $positive_var {

                qui sum `i'

                gen x_`i'=(`i'-r(min))/(r(max)-r(min))

                replace x_`i'=0.00001 if x_`i'==0

        }

       

        //标准化数据 负向指标

        foreach i in $negative_var {

                qui sum `i'

                gen x_`i'=(r(max)-`i')/(r(max)-r(min))

                replace x_`i'=0.00001 if x_`i'==0

        }

        //计算各指标的比重

        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')

        }

        //求和

        foreach i in $all_var {

                egen y_lny_`i'_sum=sum(y_lny_`i')

        }

        //计算各指标的贡献总量

        foreach i in $all_var {

                gen E_`i'= -1/ln(n)*y_lny_`i'_sum

        }

        //计算各指标权重

        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

        }

       

        //计算综合得分

        foreach i in $all_var {

                gen Score_`i'= x_`i'*W_`i'

        }

       

       

        egen Score=rowtotal(Score_*)

        keep id year $all_var Score

        save data_`year', replace

}

clear

forvalues i= $min_year / $max_year {

   append using data_`i'

   rm data_`i'.dta

}

sort id year

save 结果.dta, replace

//其中数据中的Score列就是计算出来的综合指标






3.png










二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群