评价方法根据确定权重的方法,大体上可分为主观赋权,客观赋权;主观赋权依赖于“专家”的权重或较多独立个体的评判偏好,如层次分析法,功效系数法,模糊综合评价法,综合指数法;客观赋权法根据各指标间相关关系或各指标变异程度来确定权数,此种方法依赖数据本身,本质上与数据间大小、方差有关,如主成分分析法,优劣解距离法,因子分析法,秩和比法,灰色关联法,熵权法等
信息熵:
- 信息熵 = 每种可能事件的概率 * 每种可能事件的信息量 (本质是对信息量的期望)
- 发生的概率越小,(确定它所需要的)信息量越大(利用对数函数拟合)
熵权法:
原理:
指标的离散程度越小,(确定它所需要的)信息量越小,信息熵越大;
指标的离散程度越小,该指标对综合评价的影响(即权重)就越小
步骤:
- 数据标准化
- 求出各指标下的概率(每个元素占概率的比重)
- 计算各指标的信息熵 ()
- 计算各指标的权重(1-H:差异系数/信息效用值)
- (延伸:计算此指标体系下各observation的综合分)
pros: 相对客观 / 可反映出指标的区分能力
cons: 对样本依赖性大 / 不能捕捉指标间相关性、层级关系
Code
def ewm(df):
df = df.apply(lambda x: ((x - np.min(x)) / (np.max(x) - np.min(x))))
rows, cols = df.shape
k = 1.0 / math.log(rows)
#k = (df!=0).astype(int).sum(axis=0)
#k = list(map(lambda x: 1.0/math.log(x), k))
p = df / df.sum(axis=0)
lnf = -np.log(p , where = df!=0 )*p*k
d = 1 - lnf.sum(axis=0)
w = d / d.sum()
w = pd.DataFrame(w)
w = w.round(5)
w.index = df.columns
w.columns =['weight']
return w
Reference