文章首发于我的个人博客:欢迎大佬们来逛逛
变异系数法的设计原理是:
因为方差可以描述取值的离散程度,即某指标的方差反映了该指标的的分辨能力,所以可用方差定义指标的权重。
注意:使用变异系数法的前提恰恰是所有指标在评价体系中的重要性相当。也就是说,当指标在评价体系中的重要性相差较大时,使用变异系数法确定权重并不一定合适。
mean
与std
{ 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
v j = s j x ˉ j , j = 1 , 2 , ⋯ , p \mathrm{v_j~=~\frac{s_j}{\bar{x}_j}~,~j=1,2,\cdots,p} vj = xˉjsj , j=1,2,⋯,p
w j = V j ∑ j = 1 p v j \mathrm{w_j=\frac{V_j}{\sum_{j=1}^pv_j}} wj=∑j=1pvjVj
W = { w 1 , w 2 , ⋯ , w p } \text{W}=\{\mathrm{w}_1,\mathrm{w}_2,\cdots,\mathrm{w}_\mathrm{p}\} W={w1,w2,⋯,wp}
function [Score,w]=mfunc_variableCoefficient(data)
% 变异系数法:求解每个指标的权重
% paramts:
% data: 原始数据矩阵,(m,n) m为评价对象,n为评价指标
% returns:
% Score:每个评价对象的综合得分
% w: 所有指标的权重
%数据标准化
for j=1:size(data,2)
data(:,j)= data(:,j)./sqrt(sum(data(:,j).^2));
end
A=mean(data); %求每列指标平均值
S=std(data); %求每列指标方差
%计算变异系数
V=S./A;
%计算各指标的权重
w=V./sum(V);
%计算得分
s=data*w';
Score=100*s/max(s);
end