全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2021-9-11 22:04:18
楼主的代码详细,但是如果能够编成一个命令更好,目前变量名只能是v*,
二维码

扫码加我 拉你入群

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

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

2021-9-11 22:31:58
songking 发表于 2021-9-11 22:04
楼主的代码详细,但是如果能够编成一个命令更好,目前变量名只能是v*,
今天花了一个下午编了一个命令,可自动计算,有需要的可以微我
adoedit szmethod.ado
*用法
*syntax varlist[,neg(string) adjust(real 0.001) gen(string)]  
*varlist 设定用到的所有变量
*neg指定负向变量,不指定则默认为正向变量
*adjust设定偏移量
*gen设定生成的综合指数名,默认为index_szmethod

**# 使用数据进行计算
use shangzhipanel,clear
szmethod v1-v9,neg(v1 v3 v5) gen(hsjqjjj)
szmethod v1-v9,neg(v1 v3 v5) adjust(0.00000001)
d

二维码

扫码加我 拉你入群

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

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

2021-9-12 11:21:54
songking 发表于 2021-9-11 22:04
楼主的代码详细,但是如果能够编成一个命令更好,目前变量名只能是v*,
这个程序可以根据需要改变变量,由于楼主水平不是很高,只能实现自用命令了,没法提交命令推广使用。如果你想要 长期使用shangzhi命令,你可以将定义的shangzhi程序保存为ado文件,放入stata的搜索路径中,stata即可识别此命令。
二维码

扫码加我 拉你入群

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

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

2021-9-13 09:00:24
songking 发表于 2021-9-11 22:31
今天花了一个下午编了一个命令,可自动计算,有需要的可以微我
adoedit szmethod.ado
*用法
点赞!很棒啊!
二维码

扫码加我 拉你入群

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

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

2021-9-13 22:57:51
songking 发表于 2021-9-11 22:31
今天花了一个下午编了一个命令,可自动计算,有需要的可以微我
adoedit szmethod.ado
*用法
非常感谢大佬的指点,楼主今天下午把syntax这方面的内容补充学习了下,以后可以编写更成熟的代码了。
二维码

扫码加我 拉你入群

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

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

2021-9-15 10:45:56
请问楼主,调用熵值法一直显示错误,有没有解决办法?谢谢您!!
附件列表
捕获1.PNG

原图尺寸 33.65 KB

调用熵值法的程序不成功怎么办

调用熵值法的程序不成功怎么办

二维码

扫码加我 拉你入群

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

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

2021-9-15 22:08:09
李萍萍1216 发表于 2021-9-15 10:45
请问楼主,调用熵值法一直显示错误,有没有解决办法?谢谢您!!
试试先运行程序定义部分,再运行主程序。
二维码

扫码加我 拉你入群

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

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

2021-9-17 16:26:11
冰清玉树 发表于 2021-5-16 00:05
Stata实证:熵值法的代码实现熵值法作为一种常用的客观赋权方法,应用十分广泛。最开始熵值法仅能用于处理 ...
这个为什么手机下载再传到电脑上没办法用呢?
二维码

扫码加我 拉你入群

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

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

2021-9-18 14:25:34
molanzhou 发表于 2021-9-17 16:26
这个为什么手机下载再传到电脑上没办法用呢?
用记事本粘代码出来,放新do文件里即可。
二维码

扫码加我 拉你入群

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

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

2021-9-22 21:00:23
冰清玉树 发表于 2021-9-13 22:57
非常感谢大佬的指点,楼主今天下午把syntax这方面的内容补充学习了下,以后可以编写更成熟的代码了。
https://bbs.pinggu.org/forum.php ... ;extra=#pid78331477
已经在现金交易版交易,对应楼主的程序,但编了ado,也编了帮助文件,更易用。
二维码

扫码加我 拉你入群

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

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

2021-10-5 14:46:45
楼主您好,我在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   
二维码

扫码加我 拉你入群

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

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

2021-10-5 22:17:34
UUYABC 发表于 2021-10-5 14:46
楼主您好,我在b站上看到一个视频也是讲stata实现熵权法,
https://www.bilibili.com/video/BV12L4y1e7Xn ...
step3这里,计算信息熵方法不一样
gen d`x' = 1 + 1/log(m) * e1`x'
二维码

扫码加我 拉你入群

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

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

2021-10-6 20:19:31
冰清玉树 发表于 2021-10-5 22:17
step3这里,计算信息熵方法不一样
gen d`x' = 1 + 1/log(m) * e1`x'
感谢老师的解答,我把过程修改之后还是跑不出来您的结果,请问老师下面列的程序是不是一开始就存在什么逻辑问题呀

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 b`x' = -1/log(m) *e1`x'
gen d`x' = 1 - b`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   
二维码

扫码加我 拉你入群

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

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

2021-10-7 13:25:15
UUYABC 发表于 2021-10-6 20:19
感谢老师的解答,我把过程修改之后还是跑不出来您的结果,请问老师下面列的程序是不是一开始就存在什么逻 ...
你可以仔细看看程序的计算方法,应该与楼主还存在其他区别。
二维码

扫码加我 拉你入群

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

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

2021-10-10 09:14:01
fpd407218 发表于 2021-5-30 19:28
你好,感谢你的教程,非常详细!刚接触熵值法,不太熟悉,所以有一个问题。我看到最后生成的结果,同一指标 ...
你问的问题正是我想知道的 哈哈哈 请问你解决这个问题了吗
二维码

扫码加我 拉你入群

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

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

2021-10-15 14:27:01
请问我计算出的权重是负数,这个怎么处理呢
二维码

扫码加我 拉你入群

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

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

2021-10-15 14:51:23
如一不倒翁 发表于 2021-10-15 14:27
请问我计算出的权重是负数,这个怎么处理呢
为啥会出现这种情况?这个权重是怎么计算出来的?检查一下信息熵有没有计算错误。
二维码

扫码加我 拉你入群

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

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

2021-10-15 15:48:30
冰清玉树 发表于 2021-10-15 14:51
为啥会出现这种情况?这个权重是怎么计算出来的?检查一下信息熵有没有计算错误。
确实是计算过程出了错误,谢谢,已经解决了,不应该有负数呢
二维码

扫码加我 拉你入群

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

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

2021-10-22 14:48:44
冰清玉树 发表于 2021-8-30 18:12
假设有,A B C 三个二级指标,a1 a2 a3 b1 b2 b3 c1 c2 c3 9个三级指标,则A B C 各自的权重则分别由其三 ...
您好!我现在用您说的“另一种方法”在计算,在将三级指标使用熵权法处理为二级指标时,是需要各自处理吗(比如说ABC是二级指标,有9个三级指标,其中a1a2a3是A维度下的,我是需要单使用a1a2a3这三个指标用熵权法计算得出A的得分,还是直接9个指标一起用熵权法,然后计算ABC的得分)。非常感谢您的回复
二维码

扫码加我 拉你入群

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

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

2021-10-26 16:23:49
hengsi2015 发表于 2021-10-22 14:48
您好!我现在用您说的“另一种方法”在计算,在将三级指标使用熵权法处理为二级指标时,是需要各自处理吗 ...
分别计算时,肯定分别使用熵值法计算子指标的权重,且各指标的子指标的权重和为1.
二维码

扫码加我 拉你入群

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

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

2021-11-27 19:03:30
冰清玉树 发表于 2021-5-16 00:05
Stata实证:熵值法的代码实现熵值法作为一种常用的客观赋权方法,应用十分广泛。最开始熵值法仅能用于处理 ...
怎么购买啊
二维码

扫码加我 拉你入群

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

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

2021-12-8 20:38:43
冰清玉树 发表于 2021-5-16 00:05
Stata实证:熵值法的代码实现熵值法作为一种常用的客观赋权方法,应用十分广泛。最开始熵值法仅能用于处理 ...
你好,想请问一下,解说文档里熵值法的步骤二中的负向指标标准化和我看到的别的文献里的公式不太一样,这两个差别大吗?
1638967124792485.png 1638967125039183.png
二维码

扫码加我 拉你入群

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

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

2022-1-18 18:24:47
是不是最后生成的那个h就是熵值法加权之后的结果啊?谢谢!
二维码

扫码加我 拉你入群

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

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

2022-4-12 17:27:10
你好,我是stata15,我这边也是乱码呢,而且用记事本打开也不行呜呜
二维码

扫码加我 拉你入群

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

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

2022-4-22 10:57:57
全是正向或者负向指标呢,该怎么修改
二维码

扫码加我 拉你入群

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

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

2022-4-27 20:26:55
冰清玉树 发表于 2021-5-16 00:05
Stata实证:熵值法的代码实现熵值法作为一种常用的客观赋权方法,应用十分广泛。最开始熵值法仅能用于处理 ...
楼主我真的太感谢你了!!!!!!!!<br>
你一定是上天派来救我的!!!!!!!<br>
我之前在某个公众号保存的熵值法代码<br>
看上去好像没有啥问题(我也不是很懂)<br>
但是我做出来结果就是完全背道而驰的!!!<br>
本来应该是随年份增长的指数结果基本上是下降的我真的哭死了想跳楼。。。(找数据已经够折磨人了)<br>
我真的匪夷所思不知道问题出在哪啊!<br>
抱着试一试的心态用了您的代码!!!<br>
天呐!!!!!结果非常理想!基本都是增长的!<br>
虽然我也不知道您的代码神奇在何处<br>
(我真的很想知道,这两个代码区别在哪为什么那个会做出完全相反的结果真的很离谱啊)<br>
如果您愿意帮忙看看的话我把那个代码发上来!
还有个问题想问您,我刚开始没有把420(您的)改成300(我的量),但是也能运行,就是结果不一样(趋势没改变,数值不一样),这是为什么捏?想知道!<br>
谢谢楼主!!!
二维码

扫码加我 拉你入群

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

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

2022-5-5 13:47:09
楼主你好,文件中的面板数据打不开,能否发一份excel的到我邮箱呢?麻烦了!353104864@qq.com
二维码

扫码加我 拉你入群

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

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

2022-5-18 14:30:57
楼主 你就是我的神!
二维码

扫码加我 拉你入群

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

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

2022-5-25 13:28:41
您好 乱码的do文件打不开,windows记事本也打不开,能否有其他解决路径呢?
二维码

扫码加我 拉你入群

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

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

2022-5-28 16:37:31
呓嵩合子 发表于 2022-4-27 20:26
楼主我真的太感谢你了!!!!!!!!
你一定是上天派来救我的!!!!!!!
我之前在某个公众号保存的 ...
客气客气
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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