CRITIC权重法

CRITIC权重法(Criteria Importance Though Intercrieria Correlation)是一种客观的多准则决策分析方法,用于确定各评价指标的权重。该方法基于两个核心概念:对比强度和冲突性。下面将详细阐述CRITIC权重法的原理和步骤,并提供相关的案例分析:

  1. 对比强度:对比强度反映的是同一指标在不同评价对象之间的取值差异大小,通常以标准差来表示。标准差越大,表明该指标在不同评价对象之间的波动越大,因此其权重也应更高,因为较大的波动性意味着该指标能够提供更多区分不同评价对象的信息。
  2. 冲突性:冲突性是通过相关系数来表达的,反映了不同指标之间的相关性。如果两个指标之间的相关系数较大且为正值,说明它们之间的冲突性较小,即这两个指标在评价过程中提供的信息有较大的重叠,因此它们的权重应该较低。
  3. 无量纲化处理:在进行CRITIC权重法之前,需要对数据进行无量纲化处理,以消除不同指标量纲的影响。常用的处理方法包括正向化和逆向化处理,具体方法取决于指标的特性,即指标是越大越好还是越小越好。
  4. 计算标准差和相关系数:标准差直接反映了指标的波动性,而相关系数矩阵则用于计算指标间的冲突性。这些计算为后续的权重确定提供了必要的中间参数。
  5. 权重计算:根据对比强度和冲突性的计算结果,通过一定的数学公式综合得出每个指标的权重。权重的计算公式通常涉及到对比强度和冲突性的乘积,并进行归一化处理,以确保所有指标的权重之和为1。
  6. 案例分析:通过具体的数据案例,如医院的评价指标数据,展示CRITIC权重法的应用过程。这包括数据的获取、标准化处理、相关系数和标准差的计算,以及最终的权重确定,从而为决策提供依据。
需要注意的事项:
  1. 数据质量:确保输入数据的准确性和完整性,因为CRITIC权重法的结果高度依赖于数据质量。
  2. 指标选择:选择与评价目标高度相关且信息量大的指标,避免包含过多冗余或不相关的指标。
  3. 结果解释:权重结果应结合实际情况和专业知识进行解释,避免完全依赖数值结果做出决策。
import numpy as np  
import pandas as pd  
  
# 定义一个字典data,包含一些数据  
data={'A1':[10,2,3],'A2':[2,3,4],'A3':[3,4,5],'A4':[4,5,6],  
      'A5':[-2,9,13]}  
  
# 定义一个函数critic_weight,用于计算不同种类(归一化、标准化、规范化)的权重  
def critic_weight(data, kind=1):  
    # 判断传入的data类型,如果不是numpy数组,则转换为numpy数组  
    if type(data) != np.ndarray:  
        # 使用pandas的DataFrame将字典转换为DataFrame,再转换为numpy数组  
        X = np.array(pd.DataFrame(data))  
    else:  
        X = data  
  
    # 根据kind的值选择不同的转换方式  
    if kind == 1:  
        # 归一化:将每个元素减去所在列的最小值,然后除以该列的最大值和最小值的差  
        Y = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))  
    elif kind == 2:  
        # 标准化:将每个元素减去所在列的均值,然后除以该列的标准差  
        Y = (X - X.mean(axis=0)) / X.std(axis=0)  
    else:  
        # 规范化(也称为L2范数归一化):将每个元素除以所在列的L2范数  
        Y = X / np.linalg.norm(X, axis=0, keepdims=True)  # 注意这里添加keepdims=True,确保形状一致  
  
    # 计算标准化/归一化/规范化后数据的标准差  
    data_std = np.std(Y, axis=0)  
  
    # 计算标准化/归一化/规范化后数据的相关系数矩阵  
    data_corr = np.corrcoef(Y.T)  # 注意这里需要转置Y,因为np.corrcoef期望输入的是观察值(即行)  
  
    # 计算信息量C:标准差与(1-相关系数之和)的乘积  
    C = data_std * np.sum(1 - data_corr, axis=0)  
  
    # 计算权重W:将每个C值除以所有C值的和(加上一个小值以防止除以0)  
    W = C / (np.sum(C) + 1e-9)  
  
    return W  
  
# 调用函数并传入数据(归一化)  
W = critic_weight(data, kind=1)
df = pd.DataFrame(data).T
df.assign(权重=W)

在这里插入图片描述

总结

CRITIC权重法是一种综合考虑指标波动性和相关性的客观赋权方法,适用于需要处理多个评价指标并确定其相对重要性的场景。通过上述步骤和注意事项的应用,可以更加科学和合理地进行多准则决策分析。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花花 Show Python

你的打赏会让我有创作的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值