霸道真气
发布于

独家干货!Stata玩转多指标决策分析,TOPSIS熵权法一键搞定

独家干货!Stata玩转多指标决策分析,TOPSIS熵权法一键搞定

用客观数据说话,让综合评价更科学

你是否曾在研究中面临多指标评价的难题?比如比较各地区经济发展水平、评估环境质量、分析企业综合绩效?今天,就给大家介绍一个强大的多指标综合评价方法——TOPSIS熵权法,手把手教你用Stata轻松实现!

什么是TOPSIS熵权法?

TOPSIS熵权法是熵权法TOPSIS法的完美结合。熵权法负责客观确定各指标的权重,TOPSIS法负责根据距离理想解的远近进行排序

简单来说,它的核心思想是:找出“最优方案”和“最劣方案”,然后计算每个方案与这两个方案的距离,与最优方案越接近、与最劣方案越远的方案,就是更好的方案。

熵权法的优势在于:它基于数据本身的信息量确定权重,极大减少了人为主观性,特别适用于数据量较大且主观经验难以确定权重的情况。

Stata实现TOPSIS熵权法七步法

下面我们以Stata自带的auto数据集为例,演示完整的操作流程。

第一步:定义正向和负向指标

在开始之前,我们需要明确哪些指标是正向指标(越大越好),哪些是负向指标(越小越好)。

* 导入数据
sysuse auto, clear

* 定义正向和负向指标
global positive_vars "price mpg headroom"
global negative_vars "weight length"

第二步:数据标准化

为消除不同指标量纲的影响,我们需要对原始数据进行标准化处理。

* 正向指标标准化
foreach var in $positive_vars {
    qui sum `var'
    gen std_`var' = (`var' - r(min)) / (r(max) - r(min))
}

* 负向指标标准化
foreach var in $negative_vars {
    qui sum `var'
    gen std_`var' = (r(max) - `var') / (r(max) - r(min))
}

标准化后的数据全部落在[0,1]区间内,正向指标值越大越好,负向指标值越小越好

第三步:计算熵值

熵值是衡量指标信息量大小的关键指标。

foreach var in $positive_vars $negative_vars {
    qui sum std_`var'
    gen p_`var' = std_`var' / r(sum)
    gen e_term_`var' = p_`var' * ln(p_`var') if p_`var' > 0
    replace e_term_`var' = 0 if missing(e_term_`var')
}

* 计算每个指标的总熵值
foreach var in $positive_vars $negative_vars {
    egen total_e_`var' = total(e_term_`var')
    gen e_`var' = -1/ln(_N) * total_e_`var'
    drop total_e_`var' e_term_`var' p_`var'
}

第四步:计算权重

根据熵值计算各指标的权重。

* 计算冗余度(差异系数)
foreach var in $positive_vars $negative_vars {
    gen d_`var' = 1 - e_`var'
}

* 计算权重
egen total_d = rowtotal(d_*)
foreach var in $positive_vars $negative_vars {
    gen w_`var' = d_`var' / total_d
}

熵值越大,说明该指标的数据差异性小,提供的信息量较少,其权重也应越小;反之,熵值越小,数据差异性大,提供的信息量多,其权重应越大。

第五步:构建加权标准化矩阵

将标准化后的数据与权重相乘,得到加权标准化矩阵。

foreach var in $positive_vars $negative_vars {
    gen weighted_`var' = w_`var' * std_`var'
}

第六步:确定正负理想解

正理想解是各指标加权值中的最大值,负理想解是各指标加权值中的最小值

foreach var in $positive_vars $negative_vars {
    qui sum weighted_`var'
    gen ideal_best_`var' = r(max)
    gen ideal_worst_`var' = r(min)
}

第七步:计算相对接近度并排序

最后,计算每个方案与正负理想解的距离,并得出相对接近度。

* 计算距离
gen S_best = 0
gen S_worst = 0

foreach var in $positive_vars $negative_vars {
    replace S_best = S_best + (weighted_`var' - ideal_best_`var')^2
    replace S_worst = S_worst + (weighted_`var' - ideal_worst_`var')^2
}

replace S_best = sqrt(S_best)
replace S_worst = sqrt(S_worst)

* 计算相对接近度
gen C = S_worst / (S_best + S_worst)

* 排序并查看结果
sort C
list make C, clean noobs

相对接近度C值介于0-1之间,越接近1表示方案越优,越接近0表示方案越差。

TOPSIS熵权法的实际应用场景

这种方法在实际研究中有着广泛的应用:

  1. 区域经济发展水平评价:使用GDP、固定资产投资、就业率等多个指标进行综合评价。
  2. 环境质量综合评价:考虑空气质量、水质、噪声污染等指标。
  3. 企业绩效评估:综合盈利能力、偿债能力、运营能力等多方面指标。

方法优缺点分析

优点客观性强,基于数据本身的信息量确定权重;适用性广,可应用于各种多指标评价问题。

缺点完全依赖数据质量,数据准确性直接影响结果;计算相对复杂,特别是在样本数量较大、指标较多的情况下。

进阶技巧:使用现成命令

如果你觉得上述步骤太繁琐,也可以使用Stata中现成的topsis命令:

topsis x1 x2 x3, positive(x1 x2) negative(x3) topsis

其中,positive选项后跟正向指标,negative选项后跟负向指标,topsis选项表示使用熵权-TOPSIS法。

结语

TOPSIS熵权法为多指标综合评价提供了科学、客观的方法。通过Stata实现,我们可以轻松处理大量数据,得出可靠的综合评价结果。

掌握了这种方法,你在写论文或做研究时就能轻松应对复杂的多指标评价问题,让你的研究更加科学严谨!

尝试在你自己的数据集上运行这些代码,你会发现复杂的多指标评价竟然可以如此简单!

熵权TOPSIS公式、数据和代码.rar

大小402.95 KB

格式

下载量0

售价:5 PP币

浏览 (27)
点赞 (1)
收藏
删除
评论