面板数据熵权topsis模型+文献解读+运用本人制作的新stata命令,配有视频讲解

面板数据熵权topsis模型+文献解读+运用本人制作的新stata命令——“topsis11”命令

    熵值法,又被称之为熵权法,是一种客观赋权方法,能够克服主观赋权带来的主观性和随机性。该方法根据每个指标传递的信息量来确定指标权重,指标信息熵值越大,传递的信息越少,即指标权重越小,相反,指标信息熵值越小,指标权重越大(陈红艳等,2023)。

   TOPSIS法可以通过比较评价对象与理想化目标的接近程度对现有方案的相对优劣程度进行评价,是对真实评价情况的客观反映。结合熵值法的TOPSIS法则可以通过引入熵权更加准确、客观地测度综合指标现状(钞小静等,2021),避免因设立标准不同所导致的评价结果不一致(张姝和王雪标,2023)。

### 如何在 Stata 中实现熵权 TOPSIS 评价模型 #### 实现步骤说明 TOPSIS 是一种基于有限个评价对象与理想化目标的接近程度进行排序的方[^1]。为了提高评估的有效性和科学性,可以引入熵权来确定指标权重。 #### 数据准备阶段 假设有一个包含多个待评样本的数据集 `data.dta`,其中每一列代表不同的评价指标: ```stata use data.dta, clear describe ``` #### 计算标准化矩阵 对于正向指标(越大越好),采用极大型处理;对于负向指标(越小越好),则需转换成正向形式。这里假定所有变量均为正向指标: ```stata * 对每列数据求平方和并开方得到模长 egen row_sum = rowtotal(v*) gen sqrt_rowsum = sqrt(row_sum) foreach var of varlist v* { gen std_`var' = `var'/sqrt_rowsum } drop row_sum sqrt_rowsum ``` #### 熵值计算过程 通过下面这段代码完成各个属性下的熵值 E_j 的计算以及信息效用值 d_j 和最终权重 w_j 的获取: ```stata local n=_N // 获取观测数n local m=colsof(_dta) - _skip(0,"v") // 获取指标数量m forvalues j=1/`m'{ qui sum std_v`j' local p=sum(std_v`j'^2)/r(N) * 如果p等于零,则令其为一个很小的正值以防止log运算错误 if (`p'==0){ local e=-((1/r(N))*ln(1e-6)) } else{ local e=-((1/r(N))*(`p'*ln(`p'))) } scalar define E`j'=round(`e', .00001) } scalar list E* // Information utility value calculation forvalues j=1/`m'{ scalar D`j'=(1-scalar(E`j')) } scalar list D* // Weight determination based on entropy theory forvalues j=1/`m'{ scalar W`j'=((D`j')/(sum(D*) )) } scalar list W* ``` #### 构建加权规范化决策矩阵 利用之前获得的权重对标准化后的数值再次调整形成的评分体系: ```stata foreach var of varlist std_v* { replace `var'=`var'*W${subinstr("`var'", "std_", "",.)} } ``` #### 寻找最优解与最劣解 分别找出最大最小值作为 PIS (Positive Ideal Solution) 和 NIS (Negative Ideal Solution): ```stata matrix A = J(1, colsof(_dta), .) matrix B = J(1, colsof(_dta),.) qui foreach i in ${all_vars}{ summ `i' matrix A[1,colnumb(A,"`i'")] = r(max) matrix B[1,colnumb(B,"`i'")] = r(min) } ``` #### 测量相对贴近度 C_i 最后一步就是测量每个备选方案到这两个极端的距离 S_i^+ 及 Si^- ,进而得出最终得分 Ci : ```stata mkmat std_v*, mat(X) matrix SIplus=X-A matrix SIminus=B-X svmat double SIplus , names(si_plus_) svmat double SIminus , names(si_minus_) gen si_total_pos=sqrt(sum(si_plus_^2)) gen si_total_neg=sqrt(sum(si_minus_^2)) gen ci=si_total_neg/(si_total_pos+si_total_neg) sort ci, descending list id ci ``` 上述操作实现了完整的熵权-TOPSIS分析流程,在实际应用过程中可根据具体需求适当修改相应参数设置。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我也可以是流浪诗人584

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

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

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

打赏作者

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

抵扣说明:

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

余额充值