指标体系有一级二级三级指标,如何先用三级指标给二级指标算权重,然后再用二级指标给一级指标算权重,最后用一级指标的权重得出指数水平
在Stata中,计算熵权法的步骤可以分为以下几步:
将原始数据标准化,即将每个指标的原始数据转化为0-1之间的数值,表示该指标对应的数值占该指标在全部数据中的比例。
计算每个指标的信息熵,即该指标对全局信息的贡献度,用公式 $E_i=-\sum_{j=1}^{n}p_{ij}ln(p_{ij})$ 计算,其中 $p_{ij}$ 表示第 $i$ 个指标的第 $j$ 个样本在该指标上的标准化值。
计算每个指标的权重,即该指标在整个指标体系中的重要程度,用公式 $w_i=\frac{1-E_i}{n-\sum_{i=1}^{n}(1-E_i)}$ 计算,其中 $n$ 表示指标个数,$E_i$ 表示第 $i$ 个指标的信息熵。
将三级指标的权重汇总到二级指标上,用公式 $w_{j}=\frac{\sum w_{ji}}{n_i}$ 计算,其中 $w_{ji}$ 表示第 $i$ 个二级指标下的第 $j$ 个三级指标的权重,$n_i$ 表示第 $i$ 个二级指标下的三级指标个数。
将二级指标的权重汇总到一级指标上,用公式 $w_{k}=\frac{\sum w_{kj}}{n_j}$ 计算,其中 $w_{kj}$ 表示第 $j$ 个一级指标下的第 $k$ 个二级指标的权重,$n_j$ 表示第 $j$ 个一级指标下的二级指标个数。
计算每个样本的指标水平,用公式 $S_i=\sum_{j=1}^{n}w_{j}x_{ij}$ 计算,其中 $S_i$ 表示第 $i$ 个样本的指标水平,$x_{ij}$ 表示第 $i$ 个样本在第 $j$ 个指标上的原始数据。
下面是一个简单的Stata代码示例:
* 假设有三个指标,分别为x1、x2、x3,样本个数为100。
* 原始数据保存在data.dta中,需要先导入数据。
clear all
use data.dta
* 将原始数据标准化,计算每个指标的信息熵。
egen x1_std = std(x1)
egen x1_norm = (x1 - mean(x1)) / x1_std
egen x2_std = std(x2)
egen x2_norm = (x2 - mean(x2)) / x2_std
egen x3_std = std(x3)
egen x3_norm = (x3 - mean(x3)) / x3_std
egen E1 = -x1_norm * ln(x1_norm) - (1 - x1_norm) * ln(1 - x1_norm)
egen E2 = -x2_norm * ln(x2_norm) - (1 - x2_norm) * ln(1 - x2_norm)
egen E3 = -x3_norm * ln(x3_norm) - (1 - x3_norm) * ln(1 - x3_norm)
* 计算每个指标的权重。
egen w1 = (1 - E1) / (3 - sum(1 - E1))
egen w2 = (1 - E2) / (3 - sum(1 - E2))
egen w3 = (1 - E3) / (3 - sum(1 - E3))
* 将三级指标的权重汇总到二级指标上。
egen w2_1 = (w1 + w2 + w3) / 3
* 将二级指标的权重汇总到一级指标上。
egen w1_1 = (w2_1[1..3] + w2_1[4..6] + w2_1[7..9]) / 3
* 计算每个样本的指标水平。
egen S = w1_1 * x1 + w2_1 * x2 + w3 * x3
上述代码中,我们先用 egen
命令计算每个指标的标准化值和信息熵,然后根据公式计算每个指标的权重。接着,将三级指标的权重汇总到二级指标上,再将二级指标的权重汇总到一级指标上。最后,用 egen
命令计算每个样本的指标水平。
你可以用entropy 来进行熵权法分级赋权的计算,这方面他们的官方文档讲的很详细