综合评价这类活儿,麻烦的不在算,在于权重怎么来、方向怎么定。这个 Stata 命令把两件事合在一起:默认按熵权法算出每个指标的信息熵、冗余度与权重,再加一个 topsis 选项就换成熵权 TOPSIS 算综合得分。安装只要一行:ssc install topsis。
命令档案
| 项目 | 内容 |
| 命令名 | topsis |
| 功能 | 基于熵权法或熵权 TOPSIS 法计算综合得分 |
| 作者 | Wang Qiang(西安交通大学) |
| 编号 | Statistical Software Components S459396 |
| 发布年份 | 2024 |
| 载体 | RePEc/波士顿学院经济系软件库 |
| 文件 | topsis.ado(源码)与 topsis.sthlp(帮助文件) |
| 许可 | GPL v3 |
| 安装 | 在 Stata 内输入 ssc install topsis |
语法只有一行
- topsis [, positive(varlist) negative(varlist) topsis]
三个可选项各管一件事:positive() 放正向指标(越大越好),negative() 放负向指标(越小越好),topsis 表示改用 TOPSIS 法算综合得分。帮助文件里写明了:正负指标可以同时指定;如果一个指标都不给,命令会直接报错。
两个模式输出什么
不加 topsis 时,命令输出每个指标的信息熵、冗余度与权重,并默认显示前 10 个样本的综合得分;结果窗口里还能点开链接看存下来的返回值、完整得分列表和描述统计。
加上 topsis 时,输出的是熵权 TOPSIS 的综合得分与描述统计。两种算法的差别在于最后一步怎么排序:熵权法直接按加权后的指标值汇总,TOPSIS 则比较每个样本到正理想解与负理想解的距离。
标准化里的两个处理值得知道
命令自动做标准化,但有两个细节会影响结果,帮助文件里明说了:如果某个变量的最大值与最小值相同,标准化结果直接设为 0.5,避免除零;标准化后出现的 0 会被替换成 0.0001,防止后面取对数时出错。
换句话说,指标没有区分度时它不会报错,而是给一个中性值。做评价前先看各指标的极差,全一样的指标留在模型里只会稀释权重。
三条容易踩的坑
第一,所有输入变量必须是数值型。名称、地区、行业这类字符变量要先编码或剔除,否则报错或算出异常值。
第二,正负指标别写重复。同一个变量既写进 positive() 又写进 negative(),程序不会替你判断,结果就不可信。
第三,临时变量要清。命令执行时会生成一批临时变量,第二次运行时得先删掉,或者用 preserve 与 restore 把数据状态包起来。这一条是帮助文件专门用一段提醒的,实际用面板数据反复调指标时最容易忘。
什么时候该用它、什么时候不该
熵权法的权重来自数据本身的离散程度,客观、可复现,适合指标多、样本量够、又没有可靠先验权重的场景。它的问题也在这里:某个指标恰好波动大,就会自动拿到高权重,哪怕它在业务上并不重要。
如果评价目的是排序而不是解释权重,加 topsis 更稳;如果要向评审解释"为什么这个指标权重高",最好同时报出信息熵与冗余度,让人看到权重是被数据推出来的。
装好之后,先拿一份小样本、三到五个指标跑一遍,把输出的权重与自己预期对一下,再上正式数据。
────────────────
回复本帖,可见 RePEc 记录页与帮助文件的直达链接、语法与选项原文、标准化规则与临时变量处理的原文说明,以及 GPL v3 的署名要求。
把经管之家装进你常用的 AI 智能体中 一键快捷安装经管之家 MCP/技能,让 AI 帮你查教程、找数据、读论坛帖子。 检索、阅读公开帖子不收费,安装可申请领取:3 通用积分+100 论坛币+3 元论坛资金 说明: AI 算力按所用平台规则计算;附件按原帖条件获取;福利领取条件以活动页面为准。 |


雷达卡


京公网安备 11010802022788号







