楼主: freestyle2003
8617 17

[实证分析] 【常用代码】熵权TOPSIS法Stata代码,附示例面板数据,详细注释 [推广有奖]

11
suxuner(真实交易用户) 发表于 2024-3-3 17:25:52
你好,我购买了压缩包,但是只有两个Excel表,没有什么说明,请问怎么用啊?

12
suxuner(真实交易用户) 发表于 2024-3-3 17:59:30
suxuner 发表于 2024-3-3 17:25
你好,我购买了压缩包,但是只有两个Excel表,没有什么说明,请问怎么用啊?
下好stata17了,小白请教具体要怎么导入分析啊。

13
freestyle2003(未真实交易用户) 企业认证  发表于 2024-3-4 16:53:05
suxuner 发表于 2024-3-3 17:59
下好stata17了,小白请教具体要怎么导入分析啊。
您好,里面有do文件,打开后运行哈

14
天会放晴(真实交易用户) 发表于 2024-4-16 08:51:49
您好,本产品已购买,请问分项指标如何计算?可以详细说下一吗?可以加我q+1104729057,有偿

15
Bonus_(真实交易用户) 发表于 2024-4-18 08:07:11
请问为何在第五步的时候报错 variable d_* not found

16
Bonus_(真实交易用户) 发表于 2024-4-18 08:19:33
请问在运行第五步的时候为何会出现报错呢
. egen d_sum = rowtotal(d_*),missing
variable d_* not found

17
freestyle2003(未真实交易用户) 企业认证  发表于 2024-7-11 15:18:41
您好,这个提示错误就是没有生成 d_开头变量的,看下有没漏运行代码

18
赵安豆(未真实交易用户) 发表于 2024-9-22 16:39:18
熵权TOPSIS法在Stata中的实现需要一系列的步骤和自定义命令。下面将提供一个示例面板数据集,并详细解释如何使用熵权TOPSIS法进行综合评价。

### 示例数据

假设我们有一个面板数据集,包含多个区域(例如,城市或省份)的年度数据,有三个评价指标:经济发展水平(GDP per capita)、环境保护程度(pollution level, 低值表示环境好)、教育投入比例(education spending)。我们将使用熵权TOPSIS法对这些区域进行综合排名。

### 步骤

1. **读取和整理数据**

2. **构建决策矩阵**
   - 确定哪些指标是效益型,哪些是成本型。
3. **标准化处理**
   - 效益型指标使用极大化标准化,成本型指标使用极小化标准化。

4. **计算熵权**
   - 使用熵来确定每个指标的权重。

5. **确定理想解和反理想解**

6. **计算各方案与正负理想解的距离**(TOPSIS核心)

7. **计算相对接近度系数并排序**

### Stata代码实现

```stata
clear all
set more off

// 1. 示例数据生成
input str3 city year double gdp double pollution double edu_spending
"City A"   2015   15000    40      6.5
"City B"   2015   17000    38      6.0
"City C"   2015   19000    35      7.0

// ... 更多数据
end

// 标准化处理前,确保数据没有缺失值和非数值
assert !missing(gdp, pollution, edu_spending)

// 2. 构建决策矩阵(假设数据已清洗)

// 3. 数据标准化 - 极大化/极小化标准
gen gdp_std = (gdp - min(gdp)) / (max(gdp) - min(gdp))
gen pollution_std = (min(pollution) - pollution) / (min(pollution) - max(pollution))
gen edu_spending_std = (edu_spending - min(edu_spending)) / (max(edu_spending) - min(edu_spending))

// 4. 计算熵权
egen gdp_entropy_sum = sum((1/count(city)) * ln(1 + count(city)) / ln(count(city)))
egen pollution_entropy_sum = sum((1/count(city)) * ln(1 + count(city)) / ln(count(city)))
egen edu_entropy_sum = sum((1/count(city)) * ln(1 + count(city)) / ln(count(city)))

gen gdp_p = (gdp_std / gdp_entropy_sum)
gen pollution_p = (pollution_std / pollution_entropy_sum)
gen edu_spending_p = (edu_spending_std / edu_entropy_sum)

// 5. 熵权
gen gdp_weight = (1 - (sum(gdp_p) / count(city)))^2
gen pollution_weight = (1 - (sum(pollution_p) / count(city)))^2
gen edu_spending_weight = (1 - (sum(edu_spending_p) / count(city)))^2

// 6. 理想解和反理想解(使用平均值或加权平均作为简化)
egen gdp_ideal = mean(gdp_std * gdp_weight)
egen pollution_ideal = mean(pollution_std * pollution_weight)
egen edu_spending_ideal = mean(edu_spending_std * edu_spending_weight)

// 7. TOPSIS
gen positive_distance = sqrt((gdp_std - gdp_ideal)^2 + (pollution_std - pollution_ideal)^2 + (edu_spending_std - edu_spending_ideal)^2)
gen negative_distance = sqrt((gdp_std^2) + (pollution_std^2) + (edu_spending_std^2))

// 8. 排名
gen relative_closeness = negative_distance / (positive_distance + negative_distance)

list city year gdp pollution edu_spending relative_closeness in 1/5, clean
```

### 注意事项

- 上述代码中的熵权计算简化了过程,实际上,每个指标的熵值应该基于该指标下各区域数据的比例分布来计算。
- `egen` 命令用于生成汇总统计,如平均数、总和等。
- 你需要根据实际的数据调整标准化公式、理想解的选择方法以及熵权重的精确算法。

以上是使用Stata实现熵权TOPSIS法的基本框架。具体应用时可能需要针对数据的具体情况进行微调或优化计算方式。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-8 05:35