楼主: wodeai863130
1700 14

[问答] 求助:请问大家做熵值法的时候使用EXCEL算,还是用STATA? [推广有奖]

11
yearson 学生认证  发表于 2024-11-6 19:34:31
直接用stata代码计算吧,会非常快的

12
wodeai863130 学生认证  发表于 2024-11-7 11:48:31
yearson 发表于 2024-11-6 19:34
直接用stata代码计算吧,会非常快的
谢谢回复,stata代码调好,确实很快

13
金灵子爱学习 发表于 2024-11-24 20:45:57
stata代码

14
15833141292 学生认证  发表于 2025-3-31 16:52:31
从个人使用经验来看,stata使用起来更简单,并且在do文档中能快速便捷找到所存在问题。
具体来说操作步骤如下:
xtset id year
****标准化-正向指标********
global all_var        x2        x3        x4        x5        x6        x7        x9        x10        x14        x15        x16        x19
foreach i in $all_var{
egen min_`i'=min(`i')
egen max_`i'=max(`i')
gen s`i'=(`i'-min_`i')/(max_`i'-min_`i')  //正向指标
replace s`i'=0.0001 if s`i'==0
}

*****标准化-负向指标****
global neg_var x1 x8 x11        x12        x13 x17        x18       
foreach i in $neg_var{
egen min_`i'=min(`i')
egen max_`i'=max(`i')
gen s`i'=(max_`i'-`i')/(max_`i'-min_`i')  //正向指标
replace s`i'=0.0001 if s`i'==0
}

order id year x* min* max* s*

****p值********
forvalue i=1(1)19{
egen sums_`i'=sum(sx`i')
gen p`i'=sx`i'/sums_`i'
}
order id year x* min* max* s* sums* p*


****e/d********
forvalue i=1(1)19{
egen l`i'=sum(p`i'*ln(p`i'))
gen e`i'=-l`i'/ln(3)  //obs的个数,数据拉到底就知道了
gen d`i'=1-e`i'
}

order id year x* min* max* s* sums* p* l* e* d*

//求权重w-----------------------------------------------------------------------
forvalue i=1(1)19{
egen f`i'=rowtotal(d*)
gen w`i'=d`i'/f`i'
} //w就是权重
已有 1 人评分论坛币 收起 理由
wodeai863130 + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

15
ashley198921 发表于 2025-10-10 13:45:52
我喜欢用excel,简单好用

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 18:53