stata 代码实现熵值法计算 含常见问题解答

适用:面板数据均可

stata版本:无要求

例如,使用了一个10年的省级面板数据,含15个指标,现在来计算各地区的熵值法得分。其中,x1 x2 x3 x4 x6 x7 x8 x9 x11 x12 x13 x14 x15是正向指标;而x5 x10是负向指标。

1.定义面板,定义指标的正负。

tsset id year

global xlist1 "x1 x2 x3 x4 x6 x7 x8 x9 x11 x12 x13 x14 x15"

global xlist2 "x5 x10"

2.标准化

①正向指标

foreach x of global xlist1{
egen min`x'=min (`x')
egen max`x'=max (`x')
gen standard`x'=(`x'-min`x')/(max`x'-min`x')
}

②负向指标

foreach x of global xlist2{
egen min`x'=min (`x')
egen max`x'=max (`x')
gen standard`x'=(max`x'-`x')/(max`x'-min`x')
}

3.计算第i年变量j的权重

①正向指标

foreach x of global xlist1 {
	egen sum`x' =total(standard`x')
	gen w1`x'=standard`x' /sum`x'
}

②负向指标

foreach x of global xlist2 {
	egen sum`x' =total(standard`x')
	gen w1`x'=standard`x' /sum`x'
}

4.信息熵与冗余度

①正向指标

by id, sort: egen m1 =count (year)
foreach x of global xlist1{
	**(归一化处理)
	gen w`x'=w1`x'+0.0000000001  
	egen e1`x'=total (w`x' * log(w`x'))
	gen d`x'=1+1/log(m1)*e1`x'
}

②负向指标

by id, sort: egen m2 =count (year)
foreach x of global xlist2{
	gen w`x'=w1`x'+0.0000000001
	egen e1`x'=total (w`x' * log(w`x'))
	gen d`x'=1+1/log(m2)*e1`x'
}

5.计算权重(需要改的地方)

gen sumd1 =dx1+dx2+dx3+dx4+dx5+dx6+dx7+dx8+dx9+dx10+dx11+dx12+dx13+dx14+dx15

foreach x of global xlist1{
	gen w2`x'=d`x' /sumd1
}
foreach x of global xlist2{
	gen w2`x'=d`x' /sumd1
}

需要更改的地方就是第一排,改成自己的指标。

6.计算总指数(需要改的地方)

foreach x of global xlist1{
    gen score_`x'=standard`x' * w2`x'
}
foreach x of global xlist2{
    gen score_`x'=standard`x' * w2`x'
}

gen score=score_x1+score_x2+score_x3+score_x4+score_x5+score_x6+score_x7+score_x8+score_x9+score_x10+score_x11+score_x12+score_x13+score_x14+score_x15

需要更改的地方就是最后一排,改成自己的指标即可。

常见问题:

①运行完毕后,最后一列score即是熵值法最终得分。

②很多小伙伴关心的各个指标权重, w2`x'列就是权重。比如,w2x6就是x6这个指标的权重。

③该熵值严格意义来讲是截面熵值法,但也能用于面板。大家能找到的面板熵值法代码不建议用,面板熵值会让每个指标在不用地区不同年份都有不同的权重赋值,这样往往会导致结果趋势不理想。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是章汕呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值