赞
踩
【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列
文章目录
采用熵权法进行客观权重计算的步骤为:
①根据评价等级对指标重要性进行打分,然后构建评价矩阵;
②将评价矩阵进行归一化处理,得到归一化评价矩阵;
③根据信息熵计算公式,计算各个指标 的信息熵;
④根据熵权计算公式,计算各个指标的客观权重值 。
采用线性比例变换法将评价矩阵进行初等变换,得到归一化矩阵进而解决不同指标值的同质化问题,其中正向指标与负向指标数值不同,但绝对值越大越好凹,例如计算指标的重要性与权重值的关系,权重值越大,则代表重要性越强,所以选择正向指标。
式中:yij ——评价矩阵原始值。
归一化:计算第 j 项指标下第 i 个样本值占该指标的比重 qij。
式中:m——总样本数。
- %data是n个对象、m个评价指标 n行m列数据
- %data是唯一需要从外界输入的数据
- function result=SQ(data);
- R = data;
- [rows,cols]=size(R); % 输入矩阵的大小,rows为行数(对象个数),cols为列数(指标个数)
-
- Rmin = min(R); %矩阵中最小行
- Rmax = max(R); %矩阵中最大行
- A = max(R) - min(R); %分母 矩阵中最大行减最小行
-
- y = R - repmat(Rmin,rows,1); %分子 R矩阵每一行减去最小行
- for j = 1 : cols %该循环用于正向指标标准化处理 分子/分母
- y(:,j) = y(:,j)/A(j);
- end
-
- S = sum(y,1); %列之和(用于列归一化)
-
- for i = 1 : cols %该循环用于列的归一化
- Y(:,i) = y(:,i)/S(i);
- end
-
- Y; %打印矩阵正向指标标准化处理结果
-
- k=1/log(rows); % 求k
- lnYij1=zeros(rows,cols); % 初始化lnYij1
- % 计算lnYij1
- for i=1:rows %循环遍历取对数
- for j=1:cols
- if Y(i,j)==0;
- lnYij1(i,j)=0;
- else
- lnYij1(i,j)=log(Y(i,j)); %log取对数
- end
- end
- end
- ej1=-k*(sum(Y.*lnYij1,1)); % 计算正向指标标准化熵值ej1
-
- weights1=(1-ej1)/(cols-sum(ej1)); %正向指标权重weights1
-
-
- %结构体定义
- result(1).guiyihua = Y; %矩阵归一化结果赋给result
- result(1).shangzhi = ej1; %熵值赋给result
- result(1).weight = weights1; %权重赋给result

- %data是n个对象、m个评价指标 n行m列数据
- %data是唯一需要从外界输入的数据
- function result=SQfuxiang(data);
- R = data;
- [rows,cols]=size(R); % 输入矩阵的大小,rows为行数(对象个数),cols为列数(指标个数)
-
- Rmin = min(R); %矩阵中最小行
- Rmax = max(R); %矩阵中最大行
- A = max(R) - min(R); %分母 矩阵中最大行减最小行
-
- y1 = repmat(Rmax,rows,1) - R; %分子 最大行减去R矩阵每一行
-
- for j = 1 : cols %该循环用于负向指标标准化处理 分子/分母
- y1(:,j) = y1(:,j)/A(j);
- end
- S = sum(y1,1); %列之和(用于列归一化)
- for i = 1 : cols %该循环用于列的归一化
- Y1(:,i) = y1(:,i)/S(i);
- end
- Y1; %打印矩阵负向指标标准化处理结果
-
- k=1/log(rows); % 求k
- lnYij2=zeros(rows,cols); % 初始化lnYij2
- % 计算lnYij1
- for i=1:rows %循环遍历取对数
- for j=1:cols
- if Y1(i,j)==0;
- lnYij2(i,j)=0;
- else
- lnYij2(i,j)=log(Y1(i,j)); %log取对数
- end
- end
- end
- ej2=-k*(sum(Y1.*lnYij2,1)); % 计算负向指标标准化熵值ej2
-
- weights2=(1-ej2)/(cols-sum(ej2)); %负向指标权重weights2
-
- %结构体定义
- result(1).guiyihua = Y1; %矩阵归一化结果赋给result
- result(1).shangzhi = ej2; %熵值赋给result
- result(1).weight = weights2; %权重赋给result

默认函数名保存即可
%data是n个对象、m个评价指标 n行m列数据
%data是唯一需要从外界输入的数据
以下列子所用数据集为
5 3 7 3
6 7 6 4
9 4 7 5
10 6 9 2
6 4 8 6
7 2 8 3
5 4 5 3
9 5 9 2
result=SQ(data)
result=SQfuxiang(data)
运行指令换成
result=SQfuxiang(data)
即可
运行结果就不再过多赘述。
采用熵权法进行客观权重计算的步骤为:
①根据评价等级对指标重要性进行打分,然后构建评价矩阵;
②将评价矩阵进行归一化处理,得到归一化评价矩阵;
③根据信息熵计算公式,计算各个指标 的信息熵;
④根据熵权计算公式,计算各个指标的客观权重值 。
本文包括了熵权算法法确定权重原理+完整MATLAB代码+详细注释+操作实列。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。