楼主您好,我在b站上看到一个视频也是讲stata实现熵权法,
https://www.bilibili.com/video/B ... id_from=333.999.0.0,看完以后我使用这个视频提供的代码跑了一下您的文件中提供的panel文件提供的数据,发现结果与您提供的代码跑出来的结果不一样,所以想请您看看按照视频给出的这份代码有什么问题吗
tsset id year
***设置变量集合
global alist "v2 v4 v6 v7 v8 v9 "
global blist "v1 v3 v5"
global xlist "v1 v2 v3 v4 v5 v6 v7 v8 v9"
***STEP1:标准化
****指标为正向指标的时候
foreach x of global alist {
egen min`x' = min(`x')
egen max`x' = max(`x')
gen standard`x' = (`x'-min`x')/(max`x'-min`x')
}
****指标为负向指标的时候
foreach x of global blist {
egen min`x' = min(`x')
egen max`x' = max(`x')
gen standard`x' = (max`x'-`x')/(max`x'-min`x')
}
***step2:计算第i年指标j的权重w1x(注意:w应该是一个三维指标ijt)
foreach x of global xlist{
egen sum`x' = total(standard`x')
gen w1`x' = standard`x'/sum`x'
}
***step3:计算指标的信息熵与冗余度
by id, sort:egen m = count (year)
foreach x of global xlist{
gen w`x' = w1`x' + 0.0000000001
egen e1`x' = total(w`x' * log(w`x'))
gen d`x' = 1 + 1/log(m) * e1`x'
}
***step4:计算指标权重w2x
gen sumd = dv1+dv2+dv3+dv4+dv5+dv6+dv7+dv8+dv9
foreach x of global xlist{
gen w2`x' = d`x' / sumd
}
***step5:计算综合指标
foreach x of global xlist {
gen S`x' = standard`x' * w2`x'
}
gen SSS = Sv1+Sv2+Sv3+Sv4+Sv5+Sv6+Sv7+Sv8+Sv9
sum SSS


雷达卡


京公网安备 11010802022788号







