关于Critic确定权重的matlab代码和python代码

关于Critic确定权重的matlab代码和python代码:

观察到关于Critic确定权重的相关知识比较少,笔者写了一点自己的理解,如果有不对的地方还请指教!另外文章最后给出我自己写的matlab代码和python代码!

本文采用CRITIC 赋值法对模型进行优化。Critic 赋值法以两个基本概念为基础:一是对比强度,借鉴标准离差法的思想,认为若同一指标的所有评价指数差别越大,即标准差越大,则所蕴含的信息量越大;二是评价指标之间的冲突性,指标之间的冲突性是以指标之间的相关系数为基础,如两个指标之间具有较强的正相关,说明两个指标冲突性较低。第j 个指标与其它指标的冲突性的量化指标 ,其中𝑟𝑖𝑗评价指标i和j之间的相关系数。各个指标的客观权重确定就是对比强度和冲突性来综合衡量的。设𝐶𝑗表示第j个评价指标所包告的信息量。𝐶𝑗的计算式:
在这里插入图片描述在这里插入图片描述
一般地,𝐶𝑗越大,第j个评价指标所包含的信息量越大,则该指标的相对重要性也就越大。设𝑊𝑗为第j个指标的客观权重。𝑊𝑗的计算公式:
在这里插入图片描述
(m为指标数(维度),n为样本个数)

Critic算法流程图:
在这里插入图片描述

例题:假设有下面的数据:(例题参考自:https://www.docin.com/p-847838688.html
资产收益率 费用利润率 逾期贷款率 资产使用率 自有资本率
中信银行 0.4830 13.2682 0.0000 4.3646 5.1070
光大银行 0.4035 13.4909 39.0131 3.6151 5.5005
浦发银行 0.8979 25.7776 9.0513 4.8920 7.5342
招商银行 0.5927 16.0245 13.2935 4.4529 6.5913
注:逾期贷款率为越小越好,其余为越大越好;

经过极大化指标和标准化数据后得到以下矩阵(这里采取的是最大值最小值标准化):
资产收益率 费用利润率 逾期贷款率 资产使用率 自有资本率
中信银行 0.16800 0.0000 1.0000 0.58697 0.0000
光大银行 0.00000 0.01780 0.0000 0.00000 0.16212
浦发银行 1.00000 1.00000 0.76799 1.00000 1.00000
招商银行 0.38269 0.22034 0.65926 0.65612 0.61153

相关矩阵为:
在这里插入图片描述
标准化后的各列标准差:
在这里插入图片描述
最后求得各指标的权重为:
在这里插入图片描述

Matlab代码:

clc;clear;
X=[0.4830,13.2682,0.0000,4.3646,5.1070;
0.4035,13.4909,39.0131,3.6151,5.5005;
0.8979,25.7776,9.0513,4.8920,7.5342;
0.5927,16.0245,13.2935,4.4529,6.5913];
[n,m]=size(X);
X(:,3) = min_best(X(:,3)) ;% 将极小型指标转化为加大型
xmin = min(X);
xmax = max(X);
xmaxmin = xmax-xmin;
Z =(X-xmin)./repmat(xmaxmin,n,1);  % 最大值最小值标准化,去除量纲
R = corrcoef(Z);  % 计算相关系数矩阵,但是要将相关系数矩阵都变成正相关
for i =1:n
    for j=1:m
        if R(i,j)<0
            R(i,j)=-R(i,j);
        end
    end
end 
delta = zeros(1,m);
c = zeros(1,m);
for j=1:m
    delta(j) = std(Z(:,j));
    c(j)= size(R,1)-sum(R(:,j));
end
C = delta.*c;
w =C./(sum(C))

% min_best子函数:
function [change_x]=min_best(x)
  r=size(x,1);
  change_x = repmat(max(x),r,1)-x;
end

python代码:

import numpy as np
import pandas as pd

def critic(X):
    n,m = X.shape
    X[:,2] = min_best(X[:,2])  # 自己的数据根据实际情况
    Z = standard(X)  # 标准化X,去量纲
    R = np.array(pd.DataFrame(Z).corr())
    delta = np.zeros(m)
    c = np.zeros(m)
    for j in range(m):
        delta[j] = Z[:,j].std()
        c[j] = R.shape[0] - R[:,j].sum()
    C = delta * c
    w = C/sum(C)
    return np.round(w,4)

def min_best(X):
    for i in range(len(X)):
        X[i] = max(X)-X[i]
    return X

def standard(X):
    xmin = X.min(axis=0)
    xmax = X.max(axis=0)
    xmaxmin = xmax-xmin
    n, m = X.shape
    for i in range(n):
        for j in range(m):
            X[i,j] = (X[i,j]-xmin[j])/xmaxmin[j]
    return X

if __name__ == '__main__':
    X=np.array([[0.4830,13.2682,0.0000,4.3646,5.1070],
    [0.4035,13.4909,39.0131,3.6151,5.5005],
    [0.8979,25.7776,9.0513,4.8920,7.5342],
    [0.5927,16.0245,13.2935,4.4529,6.5913]])

    print(critic(X))
说明

转载请附上出处,谢谢!

参考文献

[1]https://www.docin.com/p-847838688.html
[2]张娇,蒋倩倩,张伯言,魏屹.基于AHP-CRITIC法正交优选乌甘袋泡茶提取工艺及抗炎作用研究[J].中草药,2020,51(08):2177-2184.

### CRITIC权重法的原理及应用 #### 方法概述 CRITIC权重法是一种客观赋权方法,旨在通过综合考虑评价指标的波动性相关性来确定各指标的相对重要性[^1]。其核心理念源于“Criteria Importance Through Intercriteria Correlation”,即通过指标间的关系推导出每项指标的重要程度[^2]。 #### 原理详解 CRITIC权重法的核心在于量化指标的标准差相关系数矩阵。具体而言: - **标准差**反映了某一指标的数据分布范围及其变化幅度。较大的标准差意味着该指标具有更高的信息量。 - **相关系数**衡量了不同指标之间的线性关系强度。高相关性可能表明某些指标提供了冗余的信息,从而降低它们在整体评估中的独立贡献。 最终,某一项指标的权重由这两部分共同决:一方面取决于自身的变异情况;另一方面则受到与其他变量关联度的影响。 #### 应用场景 此方法特别适合于涉及多维度考量的情境下实施决策支持或者绩效评测等工作流程之中。例如,在企业战略制过程中,当面临众多财务与非财务方面的测度项目时,运用CRITIC能够帮助识别哪些方面最为关键,并据此分配资源或调整策略方向。 以下是实现这一算法的一个简单MATLAB代码实例: ```matlab function weights = critic_weight(data) % 计算标准化后的数据矩阵 norm_data = zscore(data); % 获取列数作为特征数量 [~, n_features] = size(norm_data); % 初始化Critic得分向量 C = zeros(1,n_features); % 预先计算所有成对比率之Sij S = sum(abs(diff(norm_data,[],1))); for j=1:n_features r_jj = corrcoef(norm_data(:,j),norm_data(:,j)); temp_sum = 0; for k=1:n_features if(k ~= j) rkj = abs(corrcoef(norm_data(:,k)',norm_data(:,j)')); temp_sum = temp_sum + rkj; end end C(j) = (std(norm_data(:,j)) * (sum(r_jj)-temp_sum))/S; end % 归一化得到最后的权重 weights = C ./ sum(C); end ``` 以上函数接受原始数据集输入参数`data`,返回经过CRITIC方法计算得出的各项属性对应的权重比例数组`weights`。 #### 层次分析法(AHP)补充说明 虽然本问题是针对CRITIC权重法展开讨论,但值得一提的是另一种常用的多准则决策工具——层次分析法(AHP)[^3]。相比起完全依赖统计数据驱动的CRITIC技术来说,AHP更多融入了人类直觉判断成分进去,尤其是在缺乏充足历史记录可供统计建模的情况下显得尤为重要。 ---
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值