文章首发于我的个人博客:欢迎大佬们来逛逛
{ x ˉ j = 1 n ∑ i = 1 n x i j S j = ∑ i = 1 n ( x i j − x ˉ j ) 2 n − 1 \left\{\begin{array}{rcl}\mathrm{\bar x_j~=~\frac1n~\sum_{i=1}^nx_{ij}}\\\\\mathrm{S_j~=\sqrt{\frac{\sum_{i=1}^n\left(x_{ij}~-\bar x_j~\right)^2}{n-1}}}\end{array}\right. ⎩ ⎨ ⎧xˉj = n1 ∑i=1nxijSj =n−1∑i=1n(xij −xˉj )2
corr
函数R j = ∑ i = 1 n ( 1 − r i j ) \mathrm{R_j~=\sum_{i=1}^n(1-r_{ij})} Rj =i=1∑n(1−rij)
C j = S j ∑ i = 1 n ( 1 − r i j ) = S j × R j \mathrm{C_j~=S_j~\sum_{i=1}^n~(1-r_{ij}~)=S_j~\times R_j} Cj =Sj i=1∑n (1−rij )=Sj ×Rj
W j = C j ∑ j = 1 p C j \mathrm{W_j=\frac{C_j}{\sum_{j=1}^pC_j}} Wj=∑j=1pCjCj
%%对比性
function [Score,w]=mfunc_CRITIC(data1)
% CRITIC方法:求解每个指标对应的客观权重算法
% paramts:
% data1: 原始数据矩阵,(m,n) m为评价对象,n为评价指标
% returns:
% Score:每个评价对象的综合得分
% w: 所有指标的客观权重
% 计算标准差
STD=std(data1);
%%矛盾性
r=corr(data1);%计算指标间的相关系数
f=sum(1-r);
%%信息承载量
c=STD.*f;
%计算所有指标的权重
w=c/sum(c);
%计算得分
[m,~]=size(data1);
data= data1 ./ repmat(sum(data1.*data1) .^ 0.5, m, 1); %矩阵归一化
% data=mapminmax(data1',0.002,1);%标准化到0.002-1区间
% data=data';
s=data*w';
Score=100*s/max(s);
end