imtoken官方下载|topsis法用什么软件能计算
imtoken官方下载|topsis法用什么软件能计算
要写经管硕士论文想用熵权法topsis法,应该学习什么软件? - 知乎
要写经管硕士论文想用熵权法topsis法,应该学习什么软件? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册学习软件研究生经济管理硕士论文要写经管硕士论文想用熵权法topsis法,应该学习什么软件?是要自学spss吗 还是Excel? 要学编程吗? 本人无相关基础,但是得写经管类硕士论文,目前处于一头雾水,不知道从哪开始下手的好显示全部 关注者16被浏览71,901关注问题写回答邀请回答好问题添加评论分享4 个回答默认排序疯狂绅士SAISM-夹逼对抗解释结构模型——扯蛋的表现形式 关注TOPSIS的原理是什么,怎么计算的可以看下面的链接那么来解释一下原理上面纵向的就是topsis的一个过程。有两个最重要的。指标的属性一定要知道,就是分为正向指标还有逆向指标现在只要认真看,看到的论文大概有80%的样子都是错的,错得最多是没有分析正向指标负向指标,拿到一个程序里面就瞎掰。上面的例子,打分的,个人黑点,分值越高,越差就是负向指标。接着就是带权值的距离公式了。上面取偏序很关键。这个是结果。另外可以看一个女人衣服合身度的算法。原始矩阵跟归一化矩阵对应的拓扑图如下越上面的越合身。距离决策矩阵对应的拓扑图如下:也就是这个女人最合适穿大码跟加大码。最后的结果是上面的。显示穿大码最合适。因此。TOPSIS是明显的一个夹逼过程。分析的关键是原始数据中指标的性质。这个没有具体分析,就是瞎掰,论文就是错的。上面有上万种熵权法与topsis的各种组合方式。理解上面的流程去看就行了。上面一种更高级,有7亿多种组合。弄懂上面的流程图就行了。单纯的学习熵权跟topsis,手算就可以。用excel拉几下就搞定。编辑于 2022-04-25 00:11赞同 322 条评论分享收藏喜欢收起今儿个学习数据分析民工 关注没有基础要用熵权topsis法进行数据分析,可以使用SPSSAU,上手快,适合小白。通过一个案例,介绍使用SPSSAU进行熵权topsis法分析的流程。认真看完这篇,相信就算没有相关基础,也能使用熵权topsis法进行分析。一、案例背景当前有9家公司连续5年(2018-2022年)的财务指标数据,想要通过这份数据,确定9家公司的财务排名情况。因为各项财务指标的权重有所不同,所以选择使用熵权topsis法进行研究。数据为9家公司连续5年的5个财务指标的数据,因为同时包含时间序列数据和截面数据,所以属于面板数据。应该有9*5=45行数据,5个财务指标各占一列,同时公司编号和年份各占一列,最后应该为45行*7列数据,最终应该将数据整理为如下格式:仅展示部分数据二、分析方法原理熵权法的基本原理是:指标的变异性越强,则离散程度越高,就会被赋予较大的权重,对评价目标的影响更显著。topsis法的基本原理是:根据研究的各个目标距理想目标的愿景程度大小进行排序,从而实现对研究目标的优劣批评。熵权topsis法包括熵权法和topsis法;使用熵权法计算各评价指标的权重,然后利用权重值乘原始数据,得到新数据,再利用新数据进行topsis法计算,最终进行各评价对象的优劣排序。三、数据处理使用熵权topsis法进行分析,需要对数据进行三个方面的处理,分别是方向处理、量纲处理以及对数据进行非负平移。接下来分别进行操作介绍。(1)方向处理5个财务指标分别为营业利润、资产总额、负债总额、流动比率、销售成本。这5个指标中既有正向指标(越大越好的指标,如利润),又有逆向指标(越小越好的指标,如成本)。熵权topsis法运算规则中,正向指标越大越好,逆向指标越小越好,所以需要对数据进行方向处理。将正向指标“营业利润”、“资产总额”、“流动比率”使用SPSSAU进行正向化处理;将逆向指标“负债总额”、“销售成本”使用SPSSAU进行逆向化处理。SPSSAU【生成变量】->正向化/逆向化->确认处理,操作如下图:同理,将其他两个指标进行逆向化处理即可。(2)量纲处理消除数据方向的影响后,还需要消除由于数据单位不同造成的影响,即进行量纲处理,SPSSAU提供十几种量纲处理方法,常见的标准化处理方式有“归一化”将数据压缩在0到1之间;“区间化”将数据压缩在自己设定的区间内等等。研究人员可以结合参考文献和自己数据特征进行量纲处理方法选择。不同的处理方式可能会带来分析结果的不同,但是一般不会有太大偏差。本案例因为上述分析中已经进行了正向/逆向此两种处理,而正向/逆向化处理可同时解决方向和量纲问题,所以不需要再次进行归一化处理。(3)非负平移数据进行归一化处理后,有些数据会出现等于0的情况,导致在利用熵值法求权重时取对数值无意义,影响研究结果,所以需要对评价指标进行非负化处理,使用SPSSAU生成变量的非负平移功能进行。SPSSAU默认平移值为“最小值的绝对值加上0.01”,研究人员可更换为0.001,0.0001,0.00001,0.1。SPSSAU操作如下:数据处理完成之后,接下来介绍如何使用SPSSAU进行面板数据熵权topsis法分析。四、操作说明面板数据熵权topsis法分析可以通过筛选年份,以年份为单位分别进行分析,最后取平均值作为最终分析结果。分别筛选出2018-2022年的数据,进行5次熵权topsis法分析,操作如下:筛选后,SPSSAU->熵权topsis法,将指标拖拽到分析框中,点击开始分析即可,如下图: 按照上述分析过程依次筛选5年的数据,进行5次分析,得到5次分析结果提示:如果不是面板数据,无需筛选,直接进行一次分析得到分析结果即可。五、分析结果解读熵权topsis法实际上为熵权法后得到新数据,然后用新数据进行TOPSIS法研究。所以会输出熵值法计算权重结果表和topsis法评价计算结果表。但是熵权topsis法核心是进行topsis法研究,最终要得到评价对象的排序,所以熵值法计算结果只作为中间计算过程,更重要的是关注topsis法分析结果。SPSSAU输出2018年topsis评价计算结果如下表:从上表来看,利用熵权法后加权生成的数据进行topsis法分析(SPSSAU算法自动完成),针对5个财务指标对9个公司的财务水平进行评价;topsis法首先找出评价指标的正负理想解A+和A-(中间计算过程,一般不关注),然后计算出各评价对象分别与正负理想解的距离D+和D-,最终计算得到各评价对象与最优方案的相对接近度C值,并针对C值进行排序。上述为2018年一次熵权topsis法分析结果,面板数据将5次分析结果得到的相对接近度C值取平均值后进行排序,得到最终分析结果。筛选年份后分别进行5次分析,将5年的相对接近度C值汇总整理如下表:从上表汇总结果可以看出,评价对象1即公司1,他的相对接近度C值最高,说明公司1在财务指标上表现最优,其次是公司5,而公司4的相对接近度C值最低,在财务指标上表现最差。六、总结熵权topsis法是使用熵权法先得到指标权重,然后利用权重值乘原始数据得到新数据后,利用新数据进行topsis法分析,最终得到各评价对象的相对接近度C值,来判断和衡量各评价对象的优劣排序。分析依次需要对数据进行正向化/逆向化处理、标准化处理和非负平移。针对面板数据,需要依次筛选年份后,得到每年的相对接近度C值,最终通过计算平均值得到各评价对象的优劣排名情况。编辑于 2023-04-21 18:12赞同 4添加评论分享收藏喜欢收起
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all
clc
%% 导入数据
% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X
% (2)双击进入X,输入或拷贝数据到X
% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件
% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。
load data_water_quality.mat
%% 数据预处理_正向化
[n,m] = size(X);
disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])
Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);
if Judge == 1
Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]
disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')
Type = input('例如[1,3,2]: '); %[2,1,3]
% 注意,Position和Type是两个同维度的行向量
for i = 1 : size(Position,2)%对每一列进行正向化处理
X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));
% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))
% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)
% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列
% 返回值返回正向化之后的指标
end
disp('正向化后的矩阵 X = ')
disp(X)
end
%% 数据预处理_标准化
Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);
disp('标准化矩阵 Z = ')
disp(Z)
%% 指标权重赋值
disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")
Judge = input('请输入是否需要增加权重: ');
if Judge == 1
disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);
weigh = input(['请输入输入' num2str(m) '个权重: ']);
if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。
else
weigh = input('你输入的有误,请重新输入权重行向量: ');
end
else
weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m
end
%% 计算与最大值的距离和最小值的距离,并算出得分
D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量
D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量
S = D_N ./ (D_P+D_N); % 未归一化的得分
disp('最后的得分为:')
stand_S = S / sum(S)% 归一化的得分
[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置
plot(sorted_S,'r-o')
xmin=1;xmax = size(sorted_S,1);
ymin = 0;ymax = max(sorted_S)+min(sorted_S);
axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间
grid on
xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签
title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)
% 输入变量有三个:
% x:需要正向化处理的指标对应的原始列向量
% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)
% i: 正在处理的是原始矩阵中的哪一列
% 输出变量posit_x表示:正向化后的列向量
if type == 1 %极小型
disp(['第' num2str(i) '列是极小型,正在正向化'] )
posit_x = Min2Max(x); %调用Min2Max函数来正向化
disp(['第' num2str(i) '列极小型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 2 %中间型
disp(['第' num2str(i) '列是中间型'] )
best = input('请输入最佳的那一个值(中间的那个值): ');
posit_x = Mid2Max(x,best);
disp(['第' num2str(i) '列中间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 3 %区间型
disp(['第' num2str(i) '列是区间型'] )
a = input('请输入区间的下界: ');
b = input('请输入区间的上界: ');
posit_x = Inter2Max(x,a,b);
disp(['第' num2str(i) '列区间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
else
disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')
end
end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论赞同 31814 条评论分享喜欢收藏申请转载文章被以下专栏收录1111111
SPSS基本分析方法之优劣解距离法(TOPSIS) - 知乎
SPSS基本分析方法之优劣解距离法(TOPSIS) - 知乎首发于数据分析实战教程切换模式写文章登录/注册SPSS基本分析方法之优劣解距离法(TOPSIS)SPSSPRO已认证账号https://www.zhihu.com/video/14602449319814307841、作用TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。2、输入输出描述输入:至少两项或以上的定量变量。输出:反应考核指标在量化评价中的综合得分。3、学习网站SPSSPRO-免费专业的在线数据分析平台4、案例示例案例:为了客观地评价各风景地点的性价比,根据风景、人文、拥挤程度、票价等因素对各风景地点进行评估。5、案例数据优劣解距离法案例数据6、案例操作Step1:新建分析;Step2:上传数据;Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;step4:选择【优劣解距离法(TOPSIS)】;step5:查看对应的数据数据格式,【优劣解距离法(TOPSIS)】要求特征序列为定量变量,分为正向指标变量和负向指标变量,且正向指标变量和负向指标变量的个数之和大于等于两项。step6:设置变量权重(熵权法、不设置权重)。step7:点击【开始分析】,完成全部操作。7、输出结果分析输出结果1:指标权重计算图表说明:熵权法的权重计算结果显示,风景的权重为25.786%、人文的权重为22.684%、拥挤程度的权重为25.737%、票价的权重为25.793%,其中指标权重最大值为票价(25.793%),最小值为人文(22.684%)。输出结果2:TOPSIS评价法计算结果图表说明:由上表可知,景点A的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点A的性价比较高,距离负理想解相对远,距离正理想解相对近。输出结果3:中间值展示图表说明:表格给出的是正理想解(最优解)和负理想解(最劣解)的值。8、注意事项进行TOPSIS分析时,各个指标有着权重属性(当然通常情况并没有),那么可对应设置各个指标的权重(输入的权重值可以为相对数字,SPSSPRO默认都会进行归一化处理让权重加和为1),在进行D+和D-值计算时,SPSSPRO会对应乘上权重值(如果没有权重则下述公式中权重值为1),计算公式如下:9、模型理论 TOPSIS法的基本思想是: 对原始数据同趋 势后构建归一化矩阵, 计算评价对象与最优向量和最劣向量的 差异, 以此测度评价对象的差异。 假设有 n个评价对象,m个 指标, TOPSIS 法的基本步骤为: 步骤1 原始数据同趋势化 区分指标体系中的指标类别 (高优或低优) ,并根据不同类型的指标需要按照不同的公式进行正向化处理。 构建 n 行 m 列的矩阵 Xij, 矩阵中 X表示第 i 个对象的第 j 个指标的值。 步骤2 构建标准化矩阵 步骤3 计算各评价指标与最优及最劣向量之间的差距其中 wj为第 j个属性的权重(重要程度)。步骤4 测度 评价对象与最优方案的接近程度 Ci 值越大, 表明评价对象越优 10、参考文献[1] Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.[2] 刘浩然,汤少梁. 基于 TOPSIS法与秩和比法的江苏省基本医疗服务均等化水平研究[J]. 中国全科医学,2016,19(7):819-823. DOI:10.3969/j.issn.1007-9572.2016.07.017.发布于 2021-12-31 13:45数学建模SPSS 数据分析SPSS赞同 85 条评论分享喜欢收藏申请转载文章被以下专栏收录数据分析实战教程通过案例分享快速了解数
TOPSIS法(优劣解距离法)介绍及 python3 实现 - 知乎
TOPSIS法(优劣解距离法)介绍及 python3 实现 - 知乎首发于Python在数学建模中的应用切换模式写文章登录/注册TOPSIS法(优劣解距离法)介绍及 python3 实现Suranyi数据科学/医学信息学/云吸猫爱好者1 简述C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution)。TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。通俗的例子:小明数学考试 134 分,要怎么知道他的成绩是好还是不好呢?基于分布的评价方法会观察小明的分数位于班级分数的哪个水平(如前 5%、前 10%),但这种评价方法只能给出一个方向的情况。如班上成绩除了最高分外,其余都是 134 分,那么小明的成绩就是并列的倒数第一,但是正向评价给出的结果是前 5%。而 TOPSIS 就是找出班上最高分(假设是 147 分)、最低分(假设是 69 分),然后计算小明的分数和这两个分数之间的差距,从而得到自己分数好坏的一个客观评价。距离最高分越近,那么评价情况越好,距离最低分越近,那么评价情况越糟。2 TOPSIS过程网上大部分资料对此部分均有描述,但不少资料与文献原文存在较大偏差、排版较为混乱,并且没有深入思考原理。此部分内容转述外网文献,并加入了笔者自己的理解。2.1 指标属性同向化,一般选择指标正向化TOPSIS 法使用距离尺度来度量样本差距,使用距离尺度就需要对指标属性进行同向化处理(若一个维度的数据越大越好,另一个维度的数据越小越好,会造成尺度混乱)。通常采用成本型指标向效益型指标转化(即数值越大评价越高,事实上几乎所有的评价方法都需要进行转化),此外,如果需要使用雷达图进行展示,建议此处将所有数据都变成正数。2.1.1 极小型指标:期望指标值越小越好(如患病率、死亡率等)\begin{split} &x'=\frac{1}{x}\quad(x\gt0)\\ 或\quad&x'=M-x \end{split}\tag{1} M 为指标 x 可能取值的最大值2.1.2 中间型指标:期望指标值既不要太大也不要太小,适当取中间值最好(如水质量评估 PH 值)x'=\left\{ \begin{split} &2\frac{x-m}{M-m},\qquad &m\le x\le\frac12(M+m)\\ &2\frac{M-x}{M-m},&\frac12(M+m)\le x\le M \end{split} \right.\tag{2} 其中 M 为指标 x 的可能取值的最大值, m 为指标 x 的可能取值的最小值2.1.3 区间型指标:期望指标的取值最好落在某一个确定的区间最好(如体温)x'=\left\{ \begin{split} &1-\frac{a-x}{a-a^*}\qquad &x\lt a \\ &1&a\le x\le b\\ &1-\frac{x-b}{b^*-b}&x\gt b \end{split} \right.\tag{3} 其中 [a,\;b] 为指标 x 的最佳稳定区间, [a^*,\;b^*] 为最大容忍区间def dataDirection_1(datas, offset=0):
def normalization(data):
return 1 / (data + offset)
return list(map(normalization, datas))
def dataDirection_2(datas, x_min, x_max):
def normalization(data):
if data <= x_min or data >= x_max:
return 0
elif data > x_min and data < (x_min + x_max) / 2:
return 2 * (data - x_min) / (x_max - x_min)
elif data < x_max and data >= (x_min + x_max) / 2:
return 2 * (x_max - data) / (x_max - x_min)
return list(map(normalization, datas))
def dataDirection_3(datas, x_min, x_max, x_minimum, x_maximum):
def normalization(data):
if data >= x_min and data <= x_max:
return 1
elif data <= x_minimum or data >= x_maximum:
return 0
elif data > x_max and data < x_maximum:
return 1 - (data - x_max) / (x_maximum - x_max)
elif data < x_min and data > x_minimum:
return 1 - (x_min - data) / (x_min - x_minimum)
return list(map(normalization, datas))2.2 构造归一化初始矩阵设共有 n 个待评价对象,每个对象都有 m 个指标(属性),则原始数据矩阵构造为:X=\left[ {\begin{array}{cccc} x_{11}&x_{12}&\cdots&x_{1m}\\ x_{21}&x_{22}&\cdots&x_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ x_{n1}&x_{n2}&\cdots&x_{nm}\\ \end{array}} \right]\tag{4} 构造加权规范矩阵,属性进行向量规范化,即每一列元素都除以当前列向量的范数(使用余弦距离度量)z_{ij}=\frac{x_{ij}}{\sqrt{\displaystyle\sum^n_{i=1}x_{ij}^2}}\tag{5} 由此得到归一化处理后的标准化矩阵 Z :Z=\left[ {\begin{array}{cccc} z_{11}&z_{12}&\cdots&z_{1m}\\ z_{21}&z_{22}&\cdots&z_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ z_{n1}&z_{n2}&\cdots&z_{nm}\\ \end{array}} \right]\tag{6} 2.3 确定最优方案和最劣方案最优方案 Z^+ 由 Z 中每列元素的最大值构成:\begin{split} Z^+&=(\max\{z_{11},z_{21},⋯,z_{n1}\},\;\max\{{z_{12},z_{22},⋯,z_{n2}\}},\;⋯,\;\max\{z_{1m},z_{2m},⋯,z_{nm}\})\\ &=(Z_1^+,Z_2^+,\cdots,Z_m^+) \end{split} 最劣方案 Z^- 由 Z 中每列元素的最小值构成:\begin{split}Z^-&=(\min\{z_{11},z_{21},⋯,z_{n1}\},\;\min\{{z_{12},z_{22},⋯,z_{n2}\}},\;⋯,\;\min\{z_{1m},z_{2m},⋯,z_{nm}\})\\&=(Z_1^-,Z_2^-,\cdots,Z_m^-)\end{split} 2.4 计算各评价对象与最优方案、最劣方案的接近程度D^+_i=\sqrt{\sum^m_{j=1}w_j(Z_j^+-z_{ij})^2},\qquad D_i^-=\sqrt{\sum^m_{j=1}w_j(Z_j^--z_{ij})^2}\tag7 其中 w_j 为第 j 个属性的权重(重要程度),指标权重建议根据实际确定或使用专家评估方法。在本文第 4 部分也提供了两种常用的确定权重的方法及简要分析。2.5 计算各评价对象与最优方案的贴近程度 C_i C_i=\frac{D_i^-}{D_i^++D_i^-}\tag8 0\le C_i\le 1,\; C_i\to1 表明评价对象越优。此处也可以将分子设置为 D_i^+ 表示与最劣方案的贴近程度, 此时 C_i\to0 表明评价对象越优2.6 根据 C_i 大小进行排序,给出评价结果2.7 TOPSIS法算法程序使用的编程语言:python3.7.1 (Anaconda3)使用的编辑器:Sublime Text 3使用的模块:pandas、numpyimport pandas as pd
import numpy as np
def topsis(data, weight=None):
# 归一化
data = data / np.sqrt((data ** 2).sum())
# 最优最劣方案
Z = pd.DataFrame([data.min(), data.max()], index=['负理想解', '正理想解'])
# 距离
weight = entropyWeight(data) if weight is None else np.array(weight)
Result = data.copy()
Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 * weight).sum(axis=1))
Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 * weight).sum(axis=1))
# 综合得分指数
Result['综合得分指数'] = Result['负理想解'] / (Result['负理想解'] + Result['正理想解'])
Result['排序'] = Result.rank(ascending=False)['综合得分指数']
return Result, Z, weighttopsis 函数需要输入:data:原始数据,pandas.DataFrame 类型weight:权系数, 默认使用熵权法定权. 也可以传入指定权重列表. (熵权法代码见下文)3 案例及程序调用实例3.1 问题提出为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,下表是所给出的部分数据:表1:研究生院试评估的部分数据\\ \begin{array}{c|c|c|c|c}\hline \qquad j&人均专著x_1&生师比&科研经费x_3&逾期毕业率x_4\\ i&(本/人)&x_2&(万元/年)&(\%)\\\hline A&0.1&5&5000&4.7\\\hline B&0.2&6&6000&5.6\\\hline C&0.4&7&7000&6.7\\\hline D&0.9&10&10000&2.3\\\hline E&1.2&2&400&1.8\\\hline \end{array}\\ 权向量为\quad\omega = [0.2,\;0.3,\;0.4,\;0.1]\notag 3.2 指标同向化处理人均专著、科研经费为效应型指标(越大越好)逾期毕业率为成本型指标(越小越好)生师比为区间型指标表2:同向化指标矩阵\\ \begin{array}{c|c|c|c|c|c} \hline &人均专著&生师比&科研经费&逾期毕业率\\\hline 院校A& 0.1&1.000000& 5000&0.212766\\\hline 院校B& 0.2&1.000000& 6000&0.178571\\\hline 院校C& 0.4&0.833333& 7000&0.149254\\\hline 院校D& 0.9&0.333333&10000&0.434783\\\hline 院校E& 1.2&0.000000&400&0.555556\\\hline \end{array}\\ 3.3 构造归一化初始矩阵以 "人均专著" 属性为例:院校A:0.1/\sqrt{0.1^2+0.2^2+0.4^2+0.9^2+1.2^2}=0.06375767130633384 院校B:0.2/\sqrt{0.1^2+0.2^2+0.4^2+0.9^2+1.2^2}=0.12751534261266767 院校C:0.4/\sqrt{0.1^2+0.2^2+0.4^2+0.9^2+1.2^2}=0.25503068522533534 院校D:0.9/\sqrt{0.1^2+0.2^2+0.4^2+0.9^2+1.2^2}=0.5738190417570045 院校E:1.2/\sqrt{0.1^2+0.2^2+0.4^2+0.9^2+1.2^2}=0.7650920556760059 表3:归一化初始矩阵\\ \begin{array}{c|c|c|c|c|c} \hline &人均专著&生师比&科研经费&逾期毕业率\\\hline 院校A&0.063758&0.597022&0.344901&0.275343\\\hline 院校B&0.127515&0.597022&0.413882&0.231092\\\hline 院校C&0.255031&0.497519&0.482862&0.193151\\\hline 院校D&0.573819&0.199007&0.689803&0.562658\\\hline 院校E&0.765092&0.000000&0.027592&0.718952\\\hline \end{array}\\ 3.4 确定最优方案和最劣方案 在每一列中分别选取最大值、最小值构成最优最劣方案:表4:最优方案与最劣方案\\ \begin{array}{ccccc}\hline &人均专著&生师比&科研经费&逾期毕业率\\\hline 最优方案&0.765092&0.597022&0.689803&0.718952\\\hline 最劣方案&0.063758&0&0.027592&0.193151\\ \hline \end{array}\notag 3.5 计算各评价对象与最优方案的接近程度及最终得分,并进行排序\begin{array}{c} 表5:\text{TOPSIS}评价结果\\\begin{array}{ccccc}\hline &人均专著x_1&生师比&科研经费x_3&逾期毕业率x_4&最终得分&正理想解&负理想解& 排序\\ i&(本/人)&x_2&(万元/年)&(\%)\\\hline 院校A&0.1&5&5000&4.7&0.485830&0.406984&0.384552&4\\ 院校B&0.2&6&6000&5.6&0.526483&0.368177&0.409360&3\\ 院校C&0.4&7&7000&6.7&0.562158&0.315879&0.405565&2\\ 院校D&0.9&10&10000&2.3&0.677571&0.239342&0.502968&1\\ 院校E&1.2&2&400&1.8&0.400512&0.531357&0.354994&5\\\hline \end{array} \end{array} 3.6 雷达图分析及上述过程代码调用图:评价结果雷达图(各属性值进行了变换,图中仅反映相对大小关系)import pandas as pd
def dataDirection_3(datas, x_min, x_max, x_minimum, x_maximum):
def normalization(data):
if data >= x_min and data <= x_max:
return 1
elif data <= x_minimum or data >= x_maximum:
return 0
elif data > x_max and data < x_maximum:
return 1 - (data - x_max) / (x_maximum - x_max)
elif data < x_min and data > x_minimum:
return 1 - (x_min - data) / (x_min - x_minimum)
return list(map(normalization, datas))
data = pd.DataFrame(
{'人均专著': [0.1, 0.2, 0.4, 0.9, 1.2], '生师比': [5, 6, 7, 10, 2], '科研经费': [5000, 6000, 7000, 10000, 400],
'逾期毕业率': [4.7, 5.6, 6.7, 2.3, 1.8]}, index=['院校' + i for i in list('ABCDE')])
data['生师比'] = dataDirection_3(data['生师比'], 5, 6, 2, 12) # 师生比数据为区间型指标
data['逾期毕业率'] = 1 / data['逾期毕业率'] # 逾期毕业率为极小型指标
out = topsis(data, weight=[0.2, 0.3, 0.4, 0.1]) # 设置权系数4 合理确定指标权重是应用 TOPSIS 综合评价的关键4.1 基于信息论的熵值法(数据差异程度)4.1.1 熵值法过程基于信息论的熵值法是根据各指标所含信息有序程度的差异性来确定指标权重的客观赋权方法,仅依赖于数据本身的离散程度。熵用于度量不确定性,指标的离散程度越大(不确定性越大)则熵值越大,表明指标值提供的信息量越多,则该指标的权重也应越大。主要计算步骤如下:Step1 对原始数据矩阵 (4) 按列进行归一化处理(注意,这里不能是同向化后的矩阵,会损失原始信息),归一化方法不唯一,以下提供最简单的比值归一化,实际上也可以使用上文中的向量归一化方法p_{ij}=\frac{x_{ij}}{\displaystyle\sum^n_{i=1}x_{ij}}\tag{9} Step2 计算各指标的熵值:e_j=-k\sum^n_{i=1}p_{ij}\ln p_{ij},\quad(j=1,2,\cdots,m)\tag{10} 其中 k 与样本数量有关,常取 k=1/\ln n ,此外,补充定义:若 p_{ij}=0 ,则令p_{ij}\ln p_{ij}=0 Step3 计算各指标的权系数:h_j=\frac{1-e_j}{\displaystyle\sum^m_{k=1}(1-e_k)},\quad(j=1,2,\cdots,m)\tag{11} 熵权系数 h_j 越大,则该指标代表的信息量越大,表示其对综合评价的作用越大。4.1.2 分析上面的方法看着很高大上,但是直觉告诉我(们),从数据推出的权重,往往都不具有现实意义。那这个到底是什么意思呢?我们用第 3 部分的数据测试一下:原始数据比值归一化后的矩阵为:\left[\begin{array}{ccccc} 0.035714&0.166667&0.176056&0.222749\\ 0.071429&0.200000&0.211268&0.265403\\ 0.142857&0.233333&0.246479&0.317536\\ 0.321429&0.333333&0.352113&0.109005\\ 0.428571&0.066667&0.014085&0.085308\\ \end{array}\right]\tag{12} 计算各指标方差(衡量数据离散程度)\begin{array}{c|c|c}\hline 指标&归一化方差&次序\\\hline 人均专著&0.028444&4\\\hline 生师比&0.009444&1\\\hline 科研经费&0.015141&3\\\hline 逾期毕业率&0.010011&2\\\hline \end{array}\\ 各指标的熵值和权系数为:\begin{array}{c|c|c|c}\hline 指标&各指标熵值&各指标权系数&次序\\\hline 人均专著&0.816087&0.418031&4\\\hline 生师比&0.936241&0.144923&1\\\hline 科研经费&0.874223&0.285889&3\\\hline 逾期毕业率&0.933498&0.151157&2\\\hline \end{array}\\ 发现了吗?熵值、权系数、方差间的大小次序是相关的,如果对熵的概念较为陌生,那不妨换个角度想想:什么类型的数据会导致方差小?如人体体温变化,体温的变化都是在一个微小的范围内,这样就造成了这一属性的变异程度较小,使用熵权法(主成分分析法同理)进行计算时,获得的权系数较小,变得 "不那么重要"。但事实上即使构造了合理的权系数,在对数据做变换(如成本型指标取倒数),这种权系数的设置是否仍然合理都是个问题(数据分布情况发生了改变)。一种减轻这种影响的方法是选择更合理的归一化方法去除指标的量纲。如变化范围较大的数据可以使用小数定标规范化、正态分布的数据使用 z 分数变换、均匀分布的数据使用离差标准化。通过这种方法,可以获得较为 "合理" 的指标权。但要注意的是合不合理都是相对的,事实上许多文献没有考虑到这种方法背后的意义,但其计算得到的结论很实用(滑动权值经验模式,未来在介绍其他评价方法时再做详细介绍),即衡量模型的优劣并不是看系数合不合理,而是效果好不好/符不符合实际。结论:评价结果、评价方法的好坏,本身就具有很强的主观性。马克思主义告诉我们“具体问题具体分析。在矛盾普遍性原理的指导下,具体分析矛盾的特殊性,并找出解决矛盾的正确方法。”。怎么在论文中将你的思想、选取方法的原则、指标选取、权重构造尽可能详尽的展示,才是方法应用成功与否的关键。代码:data = pd.DataFrame(
{'人均专著': [0.1, 0.2, 0.4, 0.9, 1.2], '生师比': [5, 6, 7, 10, 2], '科研经费': [5000, 6000, 7000, 10000, 400],
'逾期毕业率': [4.7, 5.6, 6.7, 2.3, 1.8]}, index=['院校' + i for i in list('ABCDE')])
import numpy as np
def entropyWeight(data):
data = np.array(data)
# 归一化
P = data / data.sum(axis=0)
# 计算熵值
E = np.nansum(-P * np.log(P) / np.log(len(data)), axis=0)
# 计算权系数
return (1 - E) / (1 - E).sum()
entropyWeight(data)4.2 (AHP)层次分析法定权重层次分析法是一种定性与定量相结合的决策分析方法,通过判断各衡量指标的相对重要程度,进而得到决策方案中每个指标的权重,熵权法是基于数据的定权方法,而层次分析法是基于经验的定权方法。注意:层次分析法所提到的特征向量、特征值并不是矩阵中的概念,是重新定义的。1) 构造指标成对比较矩阵由于定性定权不免存在偏差,Santy 等人提出使用一致矩阵法,构造成对比较矩阵。设共有 m 个评价指标。定义: a_{ij} 表示指标 i 和指标 j 的相对重要程度,如 a_{ij}=1/3 表示指标 i 和指标 j 的相对重要程度为 1:3(一般都是查阅文献,xx 比 xx 重要再人为设定相对重要程度,一般以 1、3、5、7 界定重要程度)定义: 成对比较矩阵 A ,A 的每一个元素 a_{ij}>0 且 a_{ij}=1/a_{ji} A=\left[ \begin{array}{cccc} a_{11}& a_{12}&\cdots&a_{1m}\\ a_{21}& a_{22}&\cdots&a_{1m}\\ \vdots& \vdots&\ddots&\vdots\\ a_{m1}& a_{m2}&\cdots&a_{mm}\\ \end{array} \right]\\ 2) 计算矩阵的特征值和特征向量Step 1 : 先对成对比矩阵进行列归一化,即每个元素都除以当前列元素的和 A\stackrel{列归一化}{\longrightarrow}A'=\left[ \begin{array}{cccc} a_{11}/\sum_{i=1}^ma_{i1}& a_{12}/\sum_{i=1}^ma_{i2}&\cdots&a_{1m}/\sum_{i=1}^ma_{im}\\ a_{21}/\sum_{i=1}^ma_{i1}& a_{22}/\sum_{i=1}^ma_{i2}&\cdots&a_{1m}/\sum_{i=1}^ma_{im}\\ \vdots& \vdots&\ddots&\vdots\\ a_{m1}/\sum_{i=1}^ma_{i1}& a_{m2}/\sum_{i=1}^ma_{i2}&\cdots&a_{mm}/\sum_{i=1}^ma_{im}\\ \end{array} \right]= \left[\begin{array}{cccc} a'_{11}& a'_{12}&\cdots&a'_{1m}\\ a'_{21}& a'_{22}&\cdots&a'_{2m}\\ \vdots& \vdots&\ddots&\vdots\\ a'_{m1}& a'_{m2}&\cdots&a'_{mm}\\ \end{array} \right]\\ Step 2: 将归一化矩阵按行求和,得到每一行的“特征向量” A'\stackrel{按行求和}{\longrightarrow}v= \left[ \begin{array}{c} \sum_{j=1}^m \big(a_{1j}/\sum_{i=1}^ma_{ij}\big)\\ \sum_{j=1}^m \big(a_{2j}/\sum_{i=1}^ma_{ij}\big)\\ \vdots\\ \sum_{j=1}^m \big(a_{mj}/\sum_{i=1}^ma_{ij}\big)\\ \end{array} \right]= \left[ \begin{array}{c} \sum_{i=1}^m a'_{1i}\\ \sum_{i=1}^m a'_{2i}\\ \vdots\\ \sum_{i=1}^m a'_{mi}\\ \end{array} \right]= \left[ \begin{array}{c} v'_1\\ v'_2\\ \vdots\\ v'_3\\ \end{array} \right]\\ Step 3: 将特征向量按列归一化,得到“指标权重”v_A\stackrel{归一化}{\longrightarrow}w= \left[ \begin{array}{c} \dfrac{\sum_{j=1}^m \big(a_{1j}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \dfrac{\sum_{j=1}^m \big(a_{2j}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \vdots\\ \dfrac{\sum_{j=1}^m \big(a_{mj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \end{array} \right]= \left[ \begin{array}{c} \dfrac{v_1'}{\sum_{i=1}^m v'_i}\\ \dfrac{v_2'}{\sum_{i=1}^m v'_i}\\ \vdots\\ \dfrac{v_3'}{\sum_{i=1}^m v'_i}\\ \end{array} \right]= \left[ \begin{array}{c} w_1\\ w_2\\ \vdots\\ w_m\\ \end{array} \right]\\ Step 4: 成对比矩阵的每一列乘以“指标权重”中对应位置的元素得到 A'' 矩阵\begin{split}A\stackrel{列加权}{\longrightarrow}A''&= \left[ \begin{array}{ccc} a_{11}\cdot\dfrac{\sum_{j=1}^m \big(a_{1j}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}&\cdots&a_{1m}\cdot\dfrac{\sum_{j=1}^m \big(a_{mj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \vdots& \ddots&\vdots\\ a_{m1}\cdot\dfrac{\sum_{j=1}^m \big(a_{1j}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}& \cdots& a_{mm}\cdot\dfrac{\sum_{j=1}^m \big(a_{mj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \end{array} \right]\\&= \left[ \begin{array}{c} a_{11}\cdot w_1 & \cdots & a_{1m}\cdot w_m\\ \vdots\\ a_{m1}\cdot w_1 & \cdots & a_{mm}\cdot w_m\\ \end{array} \right] \end{split}\\ Step 5: 将 A'' 矩阵按行求和,得到矩阵 A''' :A''\stackrel{按行求和}{\longrightarrow}A'''= \left[ \begin{array}{c} \sum^m_{p=1} a_{1p}\cdot\dfrac{\sum_{j=1}^m \big(a_{pj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \vdots\\ \sum^m_{p=1} a_{mp}\cdot\dfrac{\sum_{j=1}^m \big(a_{pj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}\\ \end{array} \right]= \left[ \begin{array}{c} \sum_{i=1}^ma_{1i}w_i\\ \vdots\\ \sum_{i=1}^ma_{mi}w_i\\ \end{array} \right]\\ Step 6: 将 A''' 进行标准化、并对所有元素求和,得到特征值:\lambda=\sum^m_{t=1}\frac{\sum^m_{p=1}a_{tp}\cdot\dfrac{\sum_{j=1}^m \big(a_{pj}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}}{m\cdot\dfrac{\sum_{j=1}^m \big(a_{1j}/\sum_{i=1}^ma_{ij}\big)}{\sum_{k=1}^m\Big(\sum_{j=1}^m \big(a_{kj}/\sum_{i=1}^ma_{ij}\big)\Big)}} = \sum^m_{j=1}\frac{\sum^m_{i=1}a_{ji}w_i}{m\cdot w_i}\\ 3) 判断成对比较矩阵的一致性定义: 一致性指标 CI 定义为CI=\frac{\lambda-m}{m-1}\\ CI\to0 说明一致性越好,即成对比矩阵构造合理。但多“小”依旧是人为选取,因此引入 “一致性比率” 来衡量。定义: 一致性比率 CR,其中 CI 是一致性指标,RI 是随机一致性指标(查表得到):CR=\frac{CI}{RI}\\ CR\lt0.1 则说明矩阵 的不一致程度在容许范围内,可以用其特征向量作为权向量。代码:import numpy as np
RI = {1: 0, 2: 0, 3: 0.58, 4: 0.90, 5: 1.12, 6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49, 11: 1.51}
def ahp(data):
data = np.array(data)
m = len(data)
# 计算特征向量
weight = (data / data.sum(axis=0)).sum(axis=1) / m
# 计算特征值
Lambda = sum((weight * data).sum(axis=1) / (m * weight))
# 判断一致性
CI = (Lambda - m) / (m - 1)
CR = CI / RI[m]
if CR < 0.1:
print(f'最大特征值:lambda = {Lambda}')
print(f'特征向量:weight = {weight}')
print(f'\nCI = {round(CI,2)}, RI = {RI[m]} \nCR = CI/RI = {round(CR,2)} < 0.1,通过一致性检验')
return weight
else:
print(f'\nCI = {round(CI,2)}, RI = {RI[m]} \nCR = CI/RI = {round(CR,2)} >= 0.1,不满足一致性')例:A = [[1,4,2,8,2],[1/4,1,1/2,2,1/2],[1/2,2,1,4,1],[1/8,1/2,1/4,1,1/4],[1/2,2,1,4,1]]
ahp(A)5 与 TOPSIS 法极其相似的密切点法5.1 密切点法在密切点法中定义“接近程度”时,考虑了当前评价单元与最优最劣解的距离,以当前各评价对象距离最优解的最小距离、最劣解的最大距离作为参比,进行自身对照,综合评价其“接近程度”:D^+=\max_{1\le i\le n}\{D_i^+\}\qquad D^-=\min_{1\le i\le n}\{D_i^+\}\tag{13} 定义密切值如下:C_i=\frac{D_i^+}{D^+}-\frac{D_i^-}{D^-}\tag{14} C_i 越小,表明评价对象越优。5.2 TOPSIS 与 密切值法区别两种评价方法原理相似、方法相近,评价得出的结果也基本相同,在使用时没有较大区别,但由 TOPSIS 法得出的指标一定是正数,且相似度形式便于解释。此外,由于密切值法需要对当前所有评价对象先进行距离度量,再选取度量值作为标准,意味着对于具有较大动态性数据的评价,若使用密切值法,在每一次更新数据时,都要重新对当前数据进行比对,极大地消耗计算资源。由于密切值法相对于 TOPSIS 法没有明显优势,在评价方案 TOPSIS 法与密切值法中,建议使用 TOPSIS 法。6 后记综合评价相关内容:在 TOPSIS 法中可以看出,构造的矩阵并没有涉及矩阵论(或者说线性代数)相关知识,只是利用到了矩阵中的元素及其简单的表达方式,计算过程十分简单。常用的评价方法有层次分析法,RSR 秩和比综合评价法、优劣解距离法、模糊综合评价法、DEA 资料包络分析等,TOPSIS 在实现上是所有方法中最简单的,它完全依赖于现有数据的分布情况,能对现有数据进行充分利用,因此适合用来进行样本数据内部排序使用(如18年美赛C题中,就可以使用这种方法进行评价)。此外,在葡萄酒建模题中,也可以使用此方法,对多个专家评分结果进行综合。对于分类变量的处理不建议使用 TOPSIS 法。参考文献:Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.作者:张柳彬如有疑问,请联系QQ:965579168转载请声明出处编辑于 2021-02-01 13:12Python数学建模如何客观评价赞同 935110 条评论分享喜欢收藏申请转载文章被以下专栏收录Python在数学建模中的应用Python是最适合数学建模竞赛的
SPSS在线_SPSSAU_SPSS_熵权TOPSIS分析
SPSS在线_SPSSAU_SPSS_熵权TOPSIS分析
熵权TOPSIS分析
分析方法视频解读:
B站
优酷
案例数据下载
下载
数据格式说明
查看
TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。
通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。
特别提示:
熵权TOPSIS实际上为熵权法后得到新数据,然后用新数据进行TOPSIS法研究。
熵权TOPSIS案例
1、背景
当前有6个国家经济技术开发区,分别在政务系统的4个指标上的评分值。数字越大表示指标越优。当前希望利用熵权TOPSIS法评价出6个开发区的政务系统排名情况。本例子的数据已经全部是正向指标,因此不需要进行正向化或逆向化处理;如果说指标中有负向指标;则需要让数据全部‘正向化’,针对正向指标做正向处理,负向指标做逆向处理。原始数据如下:
2、理论
熵权TOPSIS法分别涉及熵权法和TOPSIS法;熵权法计算各评价指标的权重值,然后利用权重值乘原始数据,得到newdata。系统利用newdata进行TOPSIS法进行计算,最终得到各评价对象的接近程序C值,用于判断和衡量评价对象的优劣排序等。
熵权法涉及以下专业术语,分别是信息熵值e,信息效用值d和权重系数w,信息熵值e和信息效用值d均为中间过程值;最终目的在于计算权重系数w值。
TOPSIS法涉及以下专业术语,分别是正理想解距离D+,负理想解距离D-,相对接近度C,正理想解A+和负理想解A-。正理想解距离D+是指数据与正理想解A+的距离;负理想解距离D-是指数据与负理想解A-的距离。正理想解A+是指每个评价指标的最优(一般是最大值),负理想解A-是指每个评价指标的最劣(一般是最小值)。相对接近度C=D-
/ (D+加上D-),该值越大意味着评价对象与最优解越接近,也即该值越大越好。
熵权TOPSIS分析的常见4个分析步骤如下:
Step1:数据正向化/逆向化处理;
如果数据中有逆向指标(数字越大反而越不好的意思),此时需要使用‘数据处理->生成变量’的‘逆向化’功能处理。让数据变成正向指标(即数字越大越好的意思)。
‘逆向化’的数据计算公式为:(Max-X)/(Max-Min),明显可以看出,针对逆向指标进行‘逆向化’处理后,数据就会变成正向指标。
Step2:数据标准化处理;
针对数据进行标准化处理,目的在于解决量纲化问题。常见的标准化处理方法有:‘归一化’,‘区间化’,‘均值化’等。
‘归一化’将所有数据压缩在0到1之间;
‘区间化‘将所有数据压缩在自己设定的区间;’
‘均值化’= 当前值 / 平均值。
一般而言,如果数据全部都大于0,建议使用‘均值化’;如果数据中有负数或者0,建议做‘区间化’让数据限定在一个区间(SPSSAU默认1~2之间);当然也可以考虑‘归一化’,让数据全部介于0~1之间。
具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。
Step3:熵权法求权重,利用权重与数据相乘得到新数据newdata;
此步骤为SPSSAU的中间处理过程,SPSSAU默认输出熵权法得到的权重值,并且默认在内部算法过程中计算得到newdata。
Step4:利用TOPSIS法计算。
此步骤为SPSSAU的自动处理,默认输出TOPSIS相关的指标结果。
特别提示:
熵权TOPSIS实际上为熵权法后得到新数据,然后用新数据进行TOPSIS法研究。
3、操作
本案例数据中包括4个政务系统的评价指标,而且全部都是正向指标,因此不需要进行正向化或者逆向化处理。以及接着数据标准化解决量纲问题上,本例子使用‘均值化’处理方法。操作为数据处理->生成变量,如下图:
完成数据‘均值化’处理后,直接开始进行‘熵值TOPSIS法’分析,操作如下图:
4、SPSSAU输出结果
SPSSAU共输出3个表格,分别是:熵值法计算权重结果汇总;TOPSIS评价计算结果和正负理想解。
熵值法计算权重结果汇总展示出了熵值法后计算得到的权重;
TOPSIS评价计算结果和正负理想解这两个表格为TOPSIS评价相关的表格结果。
5、文字分析
上表格展示出4个政务系统指标的权重值,明显可以看出指标3的权重更大。但权重大小仅仅是过程值,熵值TOPSIS分析重心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。
从上表可知,利用熵权法后加权生成的数据(算法自动完成)进行TOPSIS分析,针对4个指标(MC_政务系统指标1, MC_政务系统指标2,
MC_政务系统指标3, MC_政务系统指标4),进行TOPSIS评价,同时评价对象为6个(样本量数量即为评价对象数量);
TOPSIS法首先找出评价指标的正负理想解值(A+和A-),接着计算出各评价对象分别与正负理想解的距离值D+和D-。根据D+和D-值,最终计算得出各评价对象与最优方案的接近程度(C值),并可针对C值进行排序。
最终从上表可知:评价对象4,即开发区4,它的相对接近度C值最高为0.9995,因而说明开发区4在政务系统上的表现最优;其次是开发区3,相对接近度C起来0.8141。开发区1的政务系统表现最差。
正负理想解为计算正负理想距离值的过程值,一般不用过多关注。其代表某指标对应的最优或最劣值,在这里即为最大值或最小值。
6、剖析
涉及以下几个关键点,分别如下:
1.熵权TOPSIS实际上为熵权法后得到新数据,然后用新数据进行TOPSIS法研究;
2.熵权TOPSIS法一般分为四个步骤,如下:
Step1:数据正向化/逆向化处理;
Step2:数据标准化处理;
Step3:熵权法求权重,利用权重与数据相乘得到新数据newdata;
Step4:利用TOPSIS法计算。
疑难解惑
分析之前是否需要进行标准化、归一化、正向化或逆向化处理等?
如果原始数据中有负向指标(数字越大反而越不好的意思),需要针对此类指标先‘逆向化’处理。当确认所有指标均为正向指标(数字越大越好的意思)后,需要接着进标准化处理。
数据进行标准化处理目的在于解决量纲问题,标准化处理的方式有很多,常见是‘归一化’,‘区间化’,‘均值化’,‘求和归一化’,‘平方和归一化’等等非常多。如果指标数据全部都大于0,SPSSAU建议是使用‘均值化’处理,如果指标数据有小于或等于0的数据,SPSSAU建议使用‘区间化’(默认将数据压缩成1~2之间)。
如果分析数据中有负数或者0值如何办?
如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’【该值为某列数据最小值的绝对值+0.01】,以便让数据全部都大于0,因而满足算法要求。
面板数据如何进行熵值TOPSIS法?
熵值TOPSIS法的原理是先进行熵值法,然后再进行TOPSIS法。无论是面板或者非面板数据,均可正常进行熵值TOPSIS法研究,并不需要特别处理。
当然面板数据进行分析时,也可以先筛选出不同的年份,重复进行多次均可。
为什么分析样本量小于实际样本量?
如果分析时出现‘分析样本量’小于样本量,有3种可能。1是免费版(免费版仅分析前100行数据);2是做过‘筛选样本’功能(即主动设置只分析其中一部分数据);3是原始数据中有缺失数据(系统右上角‘我的数据’处可查看原始数据,也可下载原始数据等)。
SPSSAU熵权TOPSIS法时描述统计与描述分析结果不一致?
关于SPSSAU进行熵权TOPSIS时计算描述统计值的原理如下:
1、如果原始数据data中某列有小于等于0的数据,熵权topsis分析时,spssau会自动进行‘非负平移’处理【默认选中‘非负平移’复选框】,平移加上的数字为0.01【如果无此种情况则不处理】,得到newdata;
2、使用平移后的数据即newdata进行熵值法,并且得到权重 ;
3、使用newdata * 权重,得到newdata2;
4、使用newdata2进行topsis分析。
熵值Topsis时计算的平均值等是基于newdata进行,即可能是‘非负平移’后的数据。
分析结果中提示“预览前100项数据结果”?
SPSSAU中进行某些分析时,比如vikor/灰色关联法/topsis/熵权topsis/耦合协调度/综合指数时,并且分析样本量过大导致需要输出非常多结果时,此时结果仅输出前100项数据结果进行预览。此时可通过以下两步得到全部结果。
第1步:在‘开始分析’按钮右侧选中‘保存结果值’,系统将指标值存储在原始数据文档中,并且以不同的标题名称进行标识;
第2步:分析完成后,右上角‘我的数据’下载该数据文档,即将全部数据下载出来使用。
评价模型TOPSIS法的计算--基于Excel_topsis综合评价法 excel-CSDN博客
>评价模型TOPSIS法的计算--基于Excel_topsis综合评价法 excel-CSDN博客
评价模型TOPSIS法的计算--基于Excel
最新推荐文章于 2023-08-26 17:40:30 发布
VIP文章
%临轩听雨%
最新推荐文章于 2023-08-26 17:40:30 发布
阅读量1w
收藏
64
点赞数
10
分类专栏:
笔记
文章标签:
excel
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46271335/article/details/105246237
版权
方法介绍:
上篇文章介绍了熵权法的计算,得到各个指标的权重。接下来讲解TOPSIS法。 TOPSIS法是一种逼近理想解排序方法,基本思想是:把综合评价的问题通过列成矩阵,通过矩阵归一确定理想解和负理想解,然后通过计算每一个被评价对象与理想解和负理想解之间的差距,再比较与理想解的接近程度,从而出综合评价排名。
计算步骤:
实例分析
某省的数据如下:(案列数据有随机数0-1组成)
1.对数据进行归一化处理:
最低0.47元/天 解锁文章
优惠劵
%临轩听雨%
关注
关注
10
点赞
踩
64
收藏
觉得还不错?
一键收藏
知道了
3
评论
评价模型TOPSIS法的计算--基于Excel
方法介绍:上篇文章介绍了熵权法的计算,得到各个指标的权重。接下来讲解TOPSIS法。TOPSIS法是一种逼近理想解排序方法,基本思想是:把综合评价的问题通过列成矩阵,通过矩阵归一确定理想解和负理想解,然后通过计算每一个被评价对象与理想解和负理想解之间的差距,再比较与理想解的接近程度,从而出综合评价排名。计算步骤:实例分析某省的数据如下:1.对数据进行归一化处理:2.使用上篇文...
复制链接
扫一扫
专栏目录
topsis综合评价法_TOPSIS综合评价法
weixin_39697096的博客
12-15
3万+
TOPSIS综合评价法TOPSIS法是多目标决策分析中一种常用的有效方法,是一种逼近于理想解的排序法,又称为优劣解距离法。它根据有限个评价对象与理想化目标的接近程度进行排序,在现有的对象中进行相对优劣的评价。例题解析1989年度西山矿务局5个生产矿井实际资料如下表,对西山矿务局五个生产矿井1989年的企业经济效益进行综合评价。解题步骤解:用x₁,…,x₉分别表示评价的指标变量原煤成本、原...
excel熵值法计算权重_熵权法及改进的TOPSIS多属性决策方法
weixin_39929723的博客
11-23
2391
一、熵权法1.熵权法确定客观权重熵学理论最早产生于物理学家对热力学的研究,熵的概念最初描述的是一种单项流动、不可逆转的能量传递过程,随着思想和理论的不断深化和发展,后来逐步形成了热力学熵、统计熵、信息熵三种思路。信息熵方法用来确定权重己经非常广泛地应用于工程技术、社会经济等各领域。由信息熵的基本原理可知,对于一个系统来说,信息和熵分别是其有序程度和无序程度的度量,二者的符号相反、绝对值相...
3 条评论
您还未登录,请先
登录
后发表或查看评论
excel熵值法计算权重_如何用TOPSIS法计算权重?
weixin_39907311的博客
11-10
2034
用于计算权重的方法有很多:主成分分析、专家评分法、层次分析法、熵值法等,除此之外还有一些实用的综合评价方法,如灰色关联、模糊综合评价等。下面要提到的这个研究方法也是一种用于进行综合比较,计算权重的方法。TOPSIS法TOPSIS法用于研究与理想方案相似性的顺序选优技术,通俗理解即为数据大小有优劣关系,数据越大越优,数据越小越劣,因此结合数据间的大小找出最优和最劣方案,然后进行权重计算,最终对数据的...
基于熵权-TOPSIS的评价模型
08-16
适合研究熵权法—Topsis综合评价法模型的原理公式部分参考
熵权法的计算--基于Excel
m0_46271335的博客
04-01
2万+
按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;如果指标的信息熵越大,该指标提供的信息量越大,在综合评价中所起作用理当越大,权重就应该越高。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。
现用某省的指标数据作为例子:
熵权法的计算步骤如下:
1.数据标准化处理
![在这里插入图片描述](https://...
综合评价方法课件-TOPSIS法及模糊评价法的理解和比较
03-17
研究生授课辅导课件,应用作业。TOPSIS法及模糊评价法的理解和比较。
综合评价与决策方法一:优劣解距离法(TOPSIS法)
weixin_53972936的博客
02-11
1万+
1.TOPSIS方法简介
前文所讲的层次分析法和熵权法主要用来确定每个指标在每个方案中所占权重,在得到权重后与每个指标对应的值求积再求和就能得到每个方案的综合评分,因此也可以用来进行评价。但是其也有各自的局限性,例如层次分析法主观性太强并且方案层不能太多,否则很难通过一致性检验,而熵权法就只适用于计算权重,其所得评价结果也具有一定局限性。
而TOPSIS是一种综合评价方法,可以弥补层次分析法的一些缺点:
(1)优劣解距离法可以充分利用原始数据信息,且其结果能充分反应各...
Excel读取数据、写数据+信息熵权法+TOPSIS法 分析案例的优劣
m0_64827860的博客
08-26
183
根据附件 1,对 402 家供应商的供货特征进行量化分析,建立反映保障企业生产 重要性的数学模型,在此基础上确定 50 家最重要的供应商,并在论文中列表给出结果。
理想解法TOPSIS评价
zhangyue_lala的博客
04-13
3万+
这次的评价是在无量纲化数据之后进行的,具体无量纲的方法在上一篇综合评价里有详细介绍,下面直接开始介绍理想评价法
所谓理想评价法,就是找到各评价标准里边(就是评价矩阵里边的每一列)的最优解,然后将没一列最优解抽象出来,构建一个虚拟的评价对象,它是在每个评价指标里边都是最好的,简单的说,就是全能的一个对象,就像一个所有科目100分的学生,然后找差距呗,和理想对象差距小的肯定是好的呗。
excel熵值法计算权重_如何寻找决策最优解?熵权TOPSIS助你科学决策
weixin_39613208的博客
11-23
1406
熵权topsis是一种融合了熵值法与TOPSIS法的综合评价方法。熵值法是一种客观赋值法,可以减少主观赋值带来的偏差;而topsis法是一种常见的多目标决策分析方法,适用于多方案、多对象的对比研究,从中找出最佳方案或竞争力最强的对象。熵权topsis是先由熵权法计算得到指标的客观权重,再利用TOPSIS法,对各评价对象进行评价。熵权topsis法分析步骤通常可分为以下三步:(1)数据标准化(2)熵...
基于博弈论-TOPSIS法的船型综合评价方法
06-07
船型综合评价是一个多目标决策问题。为克服采用单一方法确定权重存在的片面性,基于主观赋权的层次分析法(AHP)、客观赋权的熵权法(EWM)和智能赋权的BP-神经网络法3类赋权法得到的权重,采用博弈论法来确定指标的组合权重,将各评价指标组合权重与逼近理想解排序法(TOPSIS)结合,建立博弈论–TOPSIS评价模型。并以一组消防船为例进行了案例分析。评价结果表明,博弈论–TOPSIS法与改进复合权重TOPSIS法的评价结果趋势一致,且博弈论–TOPSIS法的方案区分度更大,说明采用博弈论法确定的指标组合权重更加合理,能够为多方案船型评价工作提供更有效的评价工具。
topsis.zip_java topsis_java---topsis_java-topsis_topsis_topsis n
09-14
Topsis using java
this can use Netbeans
我国社会和谐度地区差异的统计测评——基于熵权TOPSIS方法
02-06
我国社会和谐度地区差异的统计测评——基于熵权TOPSIS方法,周四军,袁鹏,按照社会主义和谐社会的六个基本特征要求,选择了16个指标构建我国社会和谐度统计测评指标体系,运用熵权TOPSIS法对2006年我国东部、
熵权-TOPSIS计算工具entropy-TOPSIS-tool-master.zip
最新发布
02-04
熵权-TOPSIS计算工具entropy-TOPSIS-tool-master.zip
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
热门推荐
m0_46271335的博客
05-22
5万+
介绍
上篇博客已介绍投入产出表的结构类型及意义解读,在此就不重复写了。
投入产出法中相对稳定的因素是一些系数,根据投入产出表可以计算很多系数:
案例
案例数据即流量矩阵,采用的是中国2012年的部分行业数据,若有不对,请批评指正哈。
直接消耗系数的计算
根据上表和直接消耗系数的计算公式,直接消耗系数矩阵通常用A表示。农林牧渔产品和服务部门对其他部门产品的直接消耗系数分别为:
这些消耗系数的经济意义是,农、林、牧、渔产品和服务部门每生产单位(1亿元)总产出,要直接消耗0.1378亿元本部门产品,0.26
投入产出表之影响力系数和感应度系数的计算--基于Excel
m0_46271335的博客
05-27
2万+
介绍
前面的博客已有介绍投入产出表的基本结构,也有介绍完全需求系数矩阵,完全需求系数矩阵也就是里昂惕夫逆矩阵。因此这里不多重复介绍啦!
影响力和影响力系数
感应度和感应度系数
案例
例数据即流量矩阵,采用的是中国2012年的部分行业数据,若有不对,请批评指正哈。(此处与直接消耗系数,完全消耗系数计算的数据一致)
由已计算得到的完全需求系数矩阵为:
系数的计算
由上面的计算可得到如下结果,即农林牧渔的影响力系数为0.7306,感应度系数为0.5637;其他行业依次类推即可:
影响力系数与感应度系数的
波士顿矩阵图的制作--基于Excel
m0_46271335的博客
04-05
1万+
波士顿矩阵图介绍:
波士顿矩阵根据市场增长率和市场份额两项指标,将企业所有的战略单位分为明星,金牛,瘦狗和幼童(问题)四大类型。并以此分析企业的产业竞争力,为科学选择企业战略提供参考。
一般图如下(百度参考样式图哈)
实例作图:
实例一:有两个数值列作图,不需增加辅助列。
有8个产品,根据销量增长率和销售额增长率来做波士顿矩阵图来分析产品下一步营销策略。数据如下:
最大值,最小值,均值,是我为了...
热力图--基于Tableau
m0_46271335的博客
04-06
7454
热力图:
热力图以特殊高亮的形式显示访客热衷的页面区域和访客所在地理区域的图示。
实例介绍:
全国各地旅游人数(案例数据随机生成),数据如下:
第一步:使用Microsoft Excel方式打开工作簿
第二步:将数据拖拽至分析区域,同时转换工作表1,如下操作:
第三步:维度标签下,选择市级,右键选择地理角色,选择城市。
第四步:首先将度量下,经度拖拽至列,维度拖拽至行位置,接着选择菜单地...
topsis综合评价法excel
07-25
在Excel中使用TOPSIS综合评价法可以按照以下步骤操作:
1. 准备数据:将需要评价的各项指标以及各个候选方案的数据整理到Excel表格中。
2. 标准化数据:对每个指标的数据进行标准化处理,将其转换为无量纲的指标。可以使用Excel的函数进行计算,例如MIN、MAX、AVERAGE等。
3. 权重确定:根据实际需求和专家意见,确定各个指标的权重。可以使用主观评价或者数理统计等方法进行确定。
4. 构建决策矩阵:将标准化后的数据与权重相乘,得到加权标准化矩阵。
5. 确定最优方案:根据TOPSIS方法的原理,计算每个方案与正理想解、负理想解的距离,得到相对接近度。最终选择最大的相对接近度对应的方案作为最优方案。
6. 编写Excel公式:根据TOPSIS方法的计算公式,在Excel中编写相应的公式进行计算。
请注意,这只是使用Excel进行TOPSIS综合评价法的一般步骤,具体实施过程可能会因数据和需求的不同而有所调整。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
%临轩听雨%
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
10
原创
6万+
周排名
55万+
总排名
15万+
访问
等级
976
积分
178
粉丝
135
获赞
42
评论
635
收藏
私信
关注
热门文章
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
56380
熵权法的计算--基于Excel
28594
投入产出表之影响力系数和感应度系数的计算--基于Excel
23188
波士顿矩阵图的制作--基于Excel
13693
评价模型TOPSIS法的计算--基于Excel
10385
分类专栏
笔记
10篇
最新评论
产出投入表结构类型的介绍
coollerrr:
您好请问第二张图源于哪本书籍呢?谢谢
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
m0_69290334:
我要计算一个行业消耗掉了多少数字行业的量,用完全消耗系数计算,: 数字行业消耗/完全行业的消耗,这样算吗
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
FR_yu_:
因为矩阵可以算出数值呀
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
FR_yu_:
选中呈现逆矩阵的区域,打开对应minverse函数后,点击F2,在按住shift+ctrl+enter即可
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
lady851:
你好我想请教一下,就是我在用Excel表格计算L时,算出来的每个单元格结果都是一个数值是为啥呢,求解答
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
投入产出表之影响力系数和感应度系数的计算--基于Excel
投入产出表之直接消耗系数和完全消耗系数计算--基于Excel
产出投入表结构类型的介绍
2020年10篇
目录
目录
分类专栏
笔记
10篇
目录
评论 3
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎
什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册法学什么叫做"基于熵权的 TOPSIS 综合评价法”?关注者10被浏览117,571关注问题写回答邀请回答好问题添加评论分享6 个回答默认排序疯狂绅士SAISM-夹逼对抗解释结构模型——扯蛋的表现形式 关注你这里有三个概念。只要记得topsis是什么就行!一、综合评价综合评价(Comprehensive Evaluation,CE),也叫综合评价方法或多指标综合评价方法,是指使用比较系统的、规范的方法对于多个指标、多个单位同时进行评价的方法。它不只是一种方法,而是一个方法系统,是指对多指标进行综合的一系列有效方法的总称。综合评价方法在现实中应用范围很广。综合评价是针对研究的对象,建立一个进行测评的指标体系,利用一定的方法或模型,对搜集的资料进行分析,对被评价的事物作出定量化的总体判断。综合评价的三大关键技术:其一,指标选择;其二,权数的确定;其三,方法的适宜。二、求权重的方法求权重的方法如下:求权重方法有客观法与主观法。熵权法是用的最广的客观法。三、topsis方法TOPSIS方法说明流程图中纵向的过程即为TOPSIS方法的流程。TOPSIS简介。 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。该方法又被称为“双基点法”TOPSIS重要基本概念与原理 “正理想解”和“负理想解”是TOPSIS法的最基本的概念。 离正理想点(最好的解、最佳点、最优解、最大极值点)的距离越远,效果最差,即为负向指标。因为其数值越大越差,数值越小越牛逼。 离负理想点(最差的解、最差点、最劣解、最差极值点)的距离越远,效果最好,即为正向指标。因为其数值越小越牛逼,数值越大越差。 贴近度、相似度是TOPSIS法的另外一个重要概念。 越贴近正理想点,即数值越大,效果最大,即为正向指标。 越贴近负理想点,即数值越大,效果最差,即为为向指标。可以把熵权法只是topsis的一部分topsis就是一种综合评价方法。发布于 2022-10-07 18:53赞同 44添加评论分享收藏喜欢收起SPSSAU已认证账号 关注举个例子进行说明。一、分析前准备1.研究背景TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。例如:当前有一个项目进行招标,共有4个承包商,分别是A,B,C,D厂。由于招标需要考虑多个因素,各个方案指标的优劣程度也并不统一。为了保证评价过程中的客观、公正性。因此,考虑通过熵权TOPSIS法,对各个方案进行综合评价,从而选出最优方案。2.数据格式熵权TOPSIS法用于研究指标与理想解的接近度情况。1个指标占用1列数据。1个研究对象为1行,但研究对象在分析时并不需要使用,SPSSAU默认会从上到下依次编号。二、SPSSAU操作(1)登录账号后进入SPSSAU页面,点击右上角“上传数据”,将处理好的数据进行“点击上传文件”上传即可。(2)拖拽分析项在“综合评价”模块中选择“熵权topsis”方法,将分析项拖拽到右侧分析框中,点击“开始分析”即可。三、SPSSAU数据处理1.数据正向化/逆向化处理如果数据中有逆向指标(数字越大反而越不好的意思),此时需要使用‘SPSSAU数据处理->生成变量’的‘逆向化’功能处理。让数据变成正向指标(即数字越大越好的意思)。‘逆向化’的数据计算公式为:(Max-X)/(Max-Min),明显可以看出,针对逆向指标进行‘逆向化’处理后,数据就会变成正向指标。【SPSSAU】数据无量纲化处理 | 数据分析常见问题解答2.数据标准化处理针对数据进行标准化处理,目的在于解决量纲化问题。常见的标准化处理方法有:‘归一化’,‘区间化’,‘均值化’等。(1)‘归一化’将所有数据压缩在0到1之间;(2)‘区间化‘将所有数据压缩在自己设定的区间;(3)‘均值化’= 当前值 / 平均值。补充说明:一般而言,如果数据全部都大于0,建议使用‘均值化’;如果数据中有负数或者0,建议做‘区间化’让数据限定在一个区间(SPSSAU默认1~2之间);当然也可以考虑‘归一化’,让数据全部介于0~1之间。具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。(如果数据进行了正/逆向化处理就不需要再进行标准化处理。)四、SPSSAU分析背景:当前有6个国家经济技术开发区,分别在政务系统的4个指标上的评分值。数字越大表示指标越优。当前希望利用熵权TOPSIS法评价出6个开发区的政务系统排名情况。原始数据如下:本案例数据中包括4个政务系统的评价指标,而且全部都是正向指标,因此不需要进行正向化或者逆向化处理。以及接着数据标准化解决量纲问题上,本例子使用‘均值化’处理方法。操作为SPSSAU数据处理->生成变量:完成数据‘均值化’处理后,直接开始进行‘熵值TOPSIS法’分析,操作如下图:1.熵值法计算权重结果汇总上表格展示出4个政务系统指标的权重值,明显可以看出指标3的权重更大。但权重大小仅仅是过程值,熵值TOPSIS分析重心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。2.TOPSIS评价计算结果分析结果来源于SPSSAU从上表可知,利用熵权法后加权生成的数据(算法自动完成)进行TOPSIS分析,针对4个指标(MC_政务系统指标1, MC_政务系统指标2, MC_政务系统指标3, MC_政务系统指标4),进行TOPSIS评价,同时评价对象为6个(样本量数量即为评价对象数量);TOPSIS法首先找出评价指标的正负理想解值(A+和A-),接着计算出各评价对象分别与正负理想解的距离值D+和D-。根据D+和D-值,最终计算得出各评价对象与最优方案的接近程度(C值),并可针对C值进行排序。最终从上表可知:评价对象4,即开发区4,它的相对接近度C值最高为0.9995,因而说明开发区4在政务系统上的表现最优;其次是开发区3,相对接近度C起来0.8141。开发区1的政务系统表现最差。3.正负理想解4.描述统计分析数据完整并无缺失等,可通过上表格查看各分析项的平均值或标准差值等。从上表格可以看出四个分析项的样本量均为6,平均值均为1。五、其他说明1.如果分析数据中有负数或者0值如何办?如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’(该值为某列数据最小值的绝对值+0.01),以便让数据全部都大于0,因而满足算法要求。2. 面板数据如何进行熵值TOPSIS法?熵值TOPSIS法的原理是先进行熵值法,然后再进行TOPSIS法。无论是面板或者非面板数据,均可正常进行熵值TOPSIS法研究,并不需要特别处理。(当然面板数据进行分析时,也可以先筛选出不同的年份,重复进行多次均可)。六、总结熵权TOPSIS法分别涉及熵权法和TOPSIS法;熵权法计算各评价指标的权重值,然后利用权重值乘原始数据,得到newdata。系统利用newdata进行TOPSIS法进行计算,最终得到各评价对象的接近程序C值,用于判断和衡量评价对象的优劣排序等。【SPSSAU】熵权topsis法案例解读【SPSSAU】熵值法的各类应用【SPSSAU】熵值法操作及应用 | 数据分析常见问题解答今天的分享就到这里啦,更多干货请前往SPSSAU官网查看:发布于 2023-10-12 10:20赞同 10添加评论分享收藏喜欢
TOPSIS算法(优劣解距离法)的使用举例与matlab实现-CSDN博客
>TOPSIS算法(优劣解距离法)的使用举例与matlab实现-CSDN博客
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
最新推荐文章于 2024-02-12 17:07:19 发布
「已注销」
最新推荐文章于 2024-02-12 17:07:19 发布
阅读量1.6w
收藏
217
点赞数
32
分类专栏:
数学
MatLab
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yanzhenhuai/article/details/113242618
版权
MatLab
同时被 2 个专栏收录
9 篇文章
2 订阅
订阅专栏
数学
4 篇文章
3 订阅
订阅专栏
文章目录
一、算法的提出二、TOPSIS算法的一般步骤1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理a.极大值指标正向化b.极小型指标极大正向化c.中间型指标极大正向化d.区间型指标极大正向化
(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵
3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值
三、使用举例1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵
3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值
4.根据优劣值进行排序得到结果
四、matlab代码实现
一、算法的提出
C.L.Hwang和K.Yoon在1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution)算法,直接即逼近理想解排序法,国内通常称之为优劣解距离法。 相比较于层次分析法AHP与模糊综合评价法,TOPSIS算法能够充分利用原始数据的信息,并能更精确反映出各个状况/方案之间的优劣与差距。 TOPSIS算法的基本过程为先将原始数据矩阵(决策矩阵)进行正向化处理得到正向化矩阵,再进行标准化处理消除各指标量纲的影响。再通过AHP或其他方法得到各个因素之间的权重向量,构造出新的加权决策矩阵。 然后在所有的数据中找到最优和最劣方案,计算各个评价对象相对于最优方案与最劣方案的欧氏距离,最终获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。 TOPSIS算法对数据的分布及含量等没有严格限制,且数据易处理计算简单,思路清晰,因而被广泛使用。
二、TOPSIS算法的一般步骤
注意:下列的交标含义请仔细辨别,交标含义并未相同含义贯穿始终。 如果有不清楚的地方可以在评论区指出,有人指出后我再修改交标含义。
1.形成决策矩阵
设共有
n
n
n个评价对象,每个评价对象含有
m
m
m个参数指标。将
n
n
n个评价对象的参数指标排列得到
n
×
m
n×m
n×m矩阵,即决策矩阵:
[
x
11
x
12
…
x
1
m
x
21
x
22
…
x
2
m
…
…
⋱
…
x
n
1
x
n
2
…
x
n
m
]
\begin{bmatrix} x_{11} & x_{12} & \dots & x_{1m} \\ x_{21} & x_{22} & \dots& x_{2m}\\ \dots& \dots & \ddots& \dots\\ x_{n1}& x_{n2}& \dots& x_{nm}\end{bmatrix}
⎣⎢⎢⎡x11x21…xn1x12x22…xn2……⋱…x1mx2m…xnm⎦⎥⎥⎤
2.计算加权决策矩阵
(1)指标正向化处理
常见的四种指标(即评价对象的
m
m
m个参数指标所属类型)
指标类型指标特点举例极大型指标(效益型)越大越好成绩、利润极小型指标(成本型)越小越好成本、费用中间型指标越接近某个值越好人体所处环境温度区间型指标落在某个区间最好体温、饮用水中的矿物质含量
为了后续处理,我们需要将所有类型的指标转换为极大值指标,且需要将所有指标类型统一转换为各自对应的正向化指标,准换的方式可以不一样,下面给出一些转换公式的参考。
a.极大值指标正向化
x
i
′
=
x
i
−
x
m
i
n
x
m
a
x
−
x
m
i
n
x'_i=\frac{x_i-x_{min}}{x_{max}-x_{min}}
xi′=xmax−xminxi−xmin
b.极小型指标极大正向化
x
i
′
=
x
m
a
x
−
x
i
x
m
a
x
−
x
m
i
n
x'_{i}=\frac{x_{max}-x_i}{x_{max}-x_{min}}
xi′=xmax−xminxmax−xi
c.中间型指标极大正向化
x
i
′
=
1
−
∣
x
i
−
x
b
e
s
t
∣
∣
x
i
−
x
b
e
s
t
∣
m
a
x
x'_i=1-\frac{|x_i-x_{best}|}{|x_i-x_{best}|_{max}}
xi′=1−∣xi−xbest∣max∣xi−xbest∣
d.区间型指标极大正向化
设最佳区间为
[
a
,
b
]
[a,b]
[a,b],且记
M
=
max
{
a
−
min
{
x
i
}
,
max
{
x
i
}
−
b
}
M=\max\{a-\min\{x_i\},\max\{x_i\}-b\}
M=max{a−min{xi},max{xi}−b} 则
x
i
′
=
{
1
−
a
−
x
M
x
<
a
1
a
≤
x
≤
b
1
−
x
−
b
M
x
>
b
x_i'= \begin{cases} 1-\frac{a-x}{M}\ \ \ \ \ xb \end{cases}
xi′=⎩⎪⎨⎪⎧1−Ma−x x
(2)指标标准化处理得到新矩阵
a
i
=
x
i
′
∑
j
=
1
n
x
j
′
a_i=\frac{x_i'}{\sum_{j=1}^nx_j'}
ai=∑j=1nxj′xi′
此时我们已经得到了一个经过正向化、标准化的决策矩阵:
A
n
×
m
=
[
a
11
a
12
…
a
1
m
a
21
a
22
…
a
2
m
…
…
⋱
…
a
n
1
a
n
2
…
a
n
m
]
A_{n×m}=\begin{bmatrix} a_{11} & a_{12} & \dots & a_{1m} \\ a_{21} & a_{22} & \dots& a_{2m}\\ \dots& \dots & \ddots& \dots\\ a_{n1}& a_{n2}& \dots& a_{nm}\end{bmatrix}
An×m=⎣⎢⎢⎡a11a21…an1a12a22…an2……⋱…a1ma2m…anm⎦⎥⎥⎤
(3)计算加权决策矩阵
对于
m
m
m个因素,我们使用层次分析法AHP计算
m
m
m个因素的权重向量:
ω
=
(
w
1
,
w
2
,
.
.
.
,
w
m
)
\omega=(w_1,w_2,...,w_m)
ω=(w1,w2,...,wm)
层次分析法AHP的简单使用举例与matlab实现
将各个指标对应的权重与正向化标准化的决策矩阵相乘得到加权决策矩阵:
R
=
(
r
i
j
)
n
×
m
R=(r_{ij})_{n×m}
R=(rij)n×m
r
i
j
=
w
j
×
a
i
j
,
i
=
1
,
2
,
.
.
.
,
n
r_{ij}=w_j×a_{ij},i=1,2,...,n
rij=wj×aij,i=1,2,...,n
3.计算每个方案的优劣值
(1)计算每个参数对应的最大最小值
z
j
+
=
max
{
r
1
j
,
r
2
j
,
.
.
.
,
r
n
j
}
,
j
=
1
,
2
,
.
.
.
,
m
z_{j}^+=\max\{r_{1j},r_{2j},...,r_{nj}\},j=1,2,...,m
zj+=max{r1j,r2j,...,rnj},j=1,2,...,m
z
j
−
=
min
{
r
1
j
,
r
2
j
,
.
.
.
,
r
n
j
}
,
j
=
1
,
2
,
.
.
.
,
m
z_{j}^-=\min\{r_{1j},r_{2j},...,r_{nj}\},j=1,2,...,m
zj−=min{r1j,r2j,...,rnj},j=1,2,...,m
事实上,我们结合之前正向化的步骤很容易知道,
z
j
−
z_j^-
zj−其实就是一个零向量。
(2)计算每个方案距离最优最劣解的距离
由于我们已经将四种类型的指标转换为了极大型指标,所以我们已经可以认为,每个参数存在的最大值就是最优解,每个参数存在的最小值就是最劣解。 我们采用欧式距离计算每个方案在各个因素下的最优距离与最劣距离:
d
i
+
=
∑
j
=
1
m
(
z
j
+
−
r
i
j
)
2
d_i^+=\sqrt{\sum_{j=1}^m(z_j^+-r_{ij})^2}
di+=j=1∑m(zj+−rij)2
d
i
−
=
∑
j
=
1
m
(
z
j
−
−
r
i
j
)
2
d_i^-=\sqrt{\sum_{j=1}^m(z_j^--r_{ij})^2}
di−=j=1∑m(zj−−rij)2
余弦距离与欧氏距离的关系与使用
(3)计算每个方案的优劣值
定义第
i
i
i个方案的优劣值:
v
i
=
d
i
−
d
i
+
+
d
i
−
v_i=\frac{d_i^-}{d_i^++d_i^-}
vi=di++di−di− 我们先来理解一下每个方案距离最优最劣解的距离
d
i
+
、
d
i
−
d_i^+、d_i^-
di+、di−的含义。 首先我们先时刻记住“距离”这一含义: 距离值越大,说明离得越远;距离值越小,说明离得越近。 对应地:
d
i
+
d^+_i
di+越大,说明离最优情况越远,该方案越不优秀。
d
i
+
d^+_i
di+越小,说明离最有情况越近,该方案更加优秀。
d
i
−
d^-_i
di−同样去理解。 在我们现在明确了距离最优最劣解的距离
d
i
+
、
d
i
−
d_i^+、d_i^-
di+、di−的含义之后,我们就不难理解计算优劣值的表达式了: 当
d
i
+
d_i^+
di+越大,离最优解越远,优劣值
v
i
v_i
vi越小,更不优秀。 当
d
i
−
d_i^-
di−越大,离最劣解越远,优劣值
v
i
v_i
vi越大,更加优秀。
三、使用举例
如下题:(题目描述来源于网络,侵删)
评价下表中20条河流的水质情况 注意:含氧量越高越好;pH值越接近7越好;细菌总数越少越好;植物性营养含量在10~20之间最佳
1.形成决策矩阵
2.计算加权决策矩阵
(1)指标正向化处理
(2)指标标准化处理得到新矩阵
(3)计算加权决策矩阵
注意,此处我们层次分析法中的两两比较判断矩阵未必符合真实科学性,此处我们仅仅是作为一个例子来举例而已。 假设四个影响因素的两两比较判断矩阵为:
C
=
[
1
1
7
5
1
1
7
5
1
7
1
7
1
1
3
1
5
1
5
3
1
]
C=\begin{bmatrix} 1 & 1 & 7 & 5 \\ 1 & 1 & 7& 5\\ \frac17& \frac17 & 1& \frac13\\ \frac15& \frac15& 3& 1\end{bmatrix}
C=⎣⎢⎢⎡117151117151771355311⎦⎥⎥⎤ 该矩阵的最大特征值:
λ
m
a
x
=
4.0735
\lambda_{max}=4.0735
λmax=4.0735 一致性检验:
C
.
I
.
=
4.0735
−
4
4
−
1
≈
0.0245
C.I.=\frac{4.0735-4}{4-1}≈0.0245
C.I.=4−14.0735−4≈0.0245
R
.
I
.
=
0.89
R.I.=0.89
R.I.=0.89
C
.
R
.
=
0.0245
0.89
≈
0.0275
<
0.1
C.R.=\frac{0.0245}{0.89}≈0.0275<0.1
C.R.=0.890.0245≈0.0275<0.1 因此我们认为该判断矩阵的一致性可以接受。 计算得到权重向量:
W
=
(
0.4225
0.4225
0.0506
0.1044
)
W=(0.4225\ \ 0.4225\ \ 0.0506\ \ 0.1044)
W=(0.4225 0.4225 0.0506 0.1044) 接下来计算加权决策矩阵:
3.计算每个方案的优劣值
(1)计算每个参数对应的最大最小值
z
j
+
=
(
0.1476
0.1412
0.0203
0
−
0.0320
)
z_j^+=(0.1476\ \ 0.1412\ \ 0.0203\ \ 0-0.0320)
zj+=(0.1476 0.1412 0.0203 0−0.0320)
z
j
−
=
(
0
0
0
0
)
z_j^-=(0\ \ 0\ \ 0\ \ 0)
zj−=(0 0 0 0)
(2)计算每个方案距离最优最劣解的距离
(3)计算每个方案的优劣值
4.根据优劣值进行排序得到结果
最优状况排序如下: 4>8>7>11>3>10>5>20>16>17>12>1>9>19>18>13>6>15>2>4
四、matlab代码实现
M=[4.69 6.59 51 11.94;
2.03 7.86 19 6.46;
9.11 6.31 46 8.91;
8.61 7.05 46 26.43;
7.13 6.5 50 23.57;
2.39 6.77 38 24.62;
7.69 6.79 38 6.01;
9.3 6.81 27 31.57;
5.45 7.62 5 18.46;
6.19 7.27 17 7.51;
7.93 7.53 9 6.52;
4.4 7.28 17 25.3;
7.46 8.24 23 14.42;
2.01 5.55 47 26.31;
2.04 6.4 23 17.91;
7.73 6.14 52 15.72;
6.35 7.58 25 29.46;
8.29 8.41 39 12.02;
3.54 7.27 54 3.16;
7.44 6.26 8 28.41];%最开始的数据矩阵
type=[1,3,2,4];%指标类型矩阵,1表示极大型指标,2表示极小型指标,3表示中间型指标,4表示区间型矩阵
for j=1:4
if(type(j)==1)
Max=-99999.9999;
Min=99999.9999;
for i=1:20
Max=max(Max,M(i,j));
Min=min(Min,M(i,j));
end
for i=1:20
M(i,j)=(M(i,j)-Min)/(Max-Min);
end
elseif(type(j)==2)
Max=-99999.9999;
Min=99999.9999;
for i=1:20
Max=max(Max,M(i,j));
Min=min(Min,M(i,j));
end
for i=1:20
M(i,j)=(Max-M(i,j))/(Max-Min);
end
elseif(type(j)==3)
Max=-99999.9999;
for i=1:20
Max=max(Max,abs(M(i,j)-7));
end
for i=1:20
M(i,j)=1-abs(M(i,j)-7)/Max;
end
elseif(type(j)==4)
Max=-99999.9999;
Min=99999.9999;
for i=1:20
Max=max(Max,M(i,j));
Min=min(Min,M(i,j));
end
T=max(10-Min,Max-20);
for i=1:20
if(M(i,j)<10)
M(i,j)=1-(10-M(i,j))/T;
elseif(M(i,j)>20)
M(i,j)=1-(M(i,j)-20)/T;
else
M(i,j)=1;
end
end
end
end
%以上是讨论四种类型指标,分别进行正向化
A=zeros(20,4);
for j=1:4
sum=0
for i=1:20
sum=sum+M(i,j)^2;
end
sum=sqrt(sum);
for i=1:20
A(i,j)=M(i,j)/sum;
end
end
%以上是将正向化处理得到的矩阵进行标准化
C=[1 1 7 5;
1 1 7 5;
1/7 1/7 1 1/3;
1/5 1/5 3 1];
[Omega,Lambda]=eig(C);
mx=-99999.99999;
id=0;
for i=1:4
if(Lambda(i,i)>mx)
mx=Lambda(i,i);
id=i;
end
end
W=zeros(4,1);
sum=0;
for i=1:4
sum=sum+Omega(i,id);
end
for i=1:4
W(i,1)=Omega(i,id)/sum;
end
%以上是求得权重向量W
R=zeros(20,4);
for j=1:4
for i=1:20
R(i,j)=W(j,1)*A(i,j);
end
end
%求得加权决策矩阵R
Z_plus=[-99999.9999 -99999.9999 -99999.9999 -99999.9999];
Z_minus=[99999.9999 99999.9999 99999.9999 99999.9999 99999.9999];
for j=1:4
for i=1:20
Z_plus(j)=max(Z_plus(j),R(i,j));
Z_minus(j)=min(Z_minus(j),R(i,j));
end
end
%求得每个参数对应的最大最小值、
d_plus=zeros(20,1);
d_minus=zeros(20,1);
for i=1:20
for j=1:4
d_plus(i)=d_plus(i)+(Z_plus(j)-R(i,j))^2;
d_minus(i)=d_minus(i)+(Z_minus(j)-R(i,j))^2;
end
d_plus(i)=sqrt(d_plus(i));
d_minus(i)=sqrt(d_minus(i));
end
%计算每个方案距离最优最劣解的距离
v=zeros(20,2);
for i=1:20
v(i,1)=d_minus(i)/(d_plus(i)+d_minus(i));
v(i,2)=i;
end
%计算每个方案的优劣值
for i=1:20
MaxId=i;
for j=i+1:20
if(v(j,1)>v(MaxId,1))
MaxId=j;
end
end
temp=v(i,1);
v(i,1)=v(MaxId,1);
v(MaxId,1)=temp;
temp=v(i,2);
v(i,2)=v(MaxId,2);
v(MaxId,2)=temp;
end
%进行优劣值排序
%v的第二列即为排序结果
优惠劵
「已注销」
关注
关注
32
点赞
踩
217
收藏
觉得还不错?
一键收藏
知道了
6
评论
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
文章目录一、算法的提出二、TOPSIS算法的一般步骤1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理a.极大值指标正向化b.极小型指标极大正向化c.中间型指标极大正向化d.区间型指标极大正向化(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值三、使用举例1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理一、算法的提出 C.L.Hwang和K.Yoon
复制链接
扫一扫
专栏目录
代码和例题数据_TOPSIS优劣距离法_
10-04
可在MATLAB中实现,包含实例,亲测可用
数学建模之TOPSIS法(优劣解距离法)
qq_63141702的博客
01-29
1102
数学建模之优劣解距离法
6 条评论
您还未登录,请先
登录
后发表或查看评论
数学建模:EWM – TOPSIS 超强讲义! 原理、应用、代码
最新发布
数据分析、数据挖掘、大数据开发
02-12
645
数学建模评价类问题常用的组合模型EWM-TOPSIS的超强讲义!
指标赋权与评价类方法总结
热门推荐
ZFour_X的博客
08-18
2万+
AHP层次分析、主成分分析、熵权法、组合赋权、Topsis、数据包络法、GRA灰色关联度分析
TOPSIS法(理想解法)
strive的博客
01-26
4109
TOPSIS法(理想解法)又称优劣解距离法
数学建模-Topsis综合评价(评价模型)
会思想的苇草i的博客
07-30
1万+
Topsis综合评价方法是一种常用的数学建模工具,用于多个指标下的决策评价和排序。本文将介绍Topsis方法的基本原理和应用,包括构建评价指标矩阵、计算正负理想解、计算综合评价值等步骤。我们还将通过实例演示如何利用Topsis方法解决实际问题,比如企业选址、产品选择等方面的应用。希望本文能够帮助读者理解Topsis综合评价方法在数学建模中的重要性,掌握其应用技巧,提高评价和决策分析能力。
评价模型:TOPSIS法(理想解法)
m0_64087341的博客
10-05
4032
数学建模之TOPSIS(理想解法)
【数学建模入门】TOPSIS算法
YangJinHong2003的博客
12-20
2789
TOPSIS法 可翻译为逼近理想解排序法,国内常简称为优劣解距离法与层次分析法相比,topsis的先决条件是有初始的数据,所以我们更应该通过这些数据进行分析。
(2)评价算法-TOPSIS算法
xdg15294969271的博客
09-07
3753
文章目录1、TOPSIS算法2、TOPSIS算法流程2.1、极大型转化2.1.1 极大型2.1.2 中间型2.1.3 极小型2.1.4 区间型2.2 计算每项指标的权重2.3 正向矩阵标准化2.4 计算得分3、实例4、参考资料
1、TOPSIS算法
TOPSIS方法是基于数据对样本进行排序的一种方法,其基本思想是根据样本数据构造一个理想化的目标。主要找到每一列(指标)的最大值让它们构成一个向量Z+Z^+Z+和每一列(指标)的最小值构成一个向量Z−Z^-Z−。只要找到这两个向量,后面的事情就好办了。
2、TO
TOPSIS算法
The__Tyche的博客
01-16
3760
一.算法介绍
TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。——来自百度百科
数模算法——优劣解距离法(Topsis法)
m0_46273166的博客
07-22
864
文章目录一、Topsis法的概述二、模型建立的步骤1.将原始矩阵正向化2.正向化矩阵标准化3.计算得分并归一化
一、Topsis法的概述
TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。
TOPSIS 法是一种常用的 综合评价方法,其能 充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
(1)比较的对象一般远大于两个(如比较一个班级的.
【算法基础】TOPSIS法
weixin_41838721的博客
11-07
2141
但相关性还是差,最后一名排名不变,就还是零分,如小王16分,归一化评分还是0。指标1和指标2,不能直接相加看,应为单位不同,需要消除不同指标量纲的影响,进行。极大型指标和极小型指标,一起看就有问题,所以要经过处理,修正后的排名越大越好,修正后需要评分,对每个排名。第二种0也不行,推荐第一种,无限定条件。,每个排名 / 各个排名相加的和。一般评分都要归一化,总和为1。权重如何获得:层次分析法?带权重的TOPSIS。
Topsis算法(优劣解距离法)——综合评价方法
jiekeheiguanglan的博客
06-11
3291
TOPSIS 法综合评价方法
topsis法_TOPSIS(逼近理想解)算法原理详解与代码实现
weixin_39612228的博客
12-05
5522
写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的...
综合评价与决策方法一:优劣解距离法(TOPSIS法)
weixin_53972936的博客
02-11
1万+
1.TOPSIS方法简介
前文所讲的层次分析法和熵权法主要用来确定每个指标在每个方案中所占权重,在得到权重后与每个指标对应的值求积再求和就能得到每个方案的综合评分,因此也可以用来进行评价。但是其也有各自的局限性,例如层次分析法主观性太强并且方案层不能太多,否则很难通过一致性检验,而熵权法就只适用于计算权重,其所得评价结果也具有一定局限性。
而TOPSIS是一种综合评价方法,可以弥补层次分析法的一些缺点:
(1)优劣解距离法可以充分利用原始数据信息,且其结果能充分反应各...
评价类问题 之 优劣解距离法(TOPSIS)
iMoriarty的博客
07-09
4985
TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS 。TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
基本过程为先将原始数据
TOPSIS的MATLAB算法实现
07-08
多属性决策的TOPSIS算法。其中leibie.mat可修改各个属性效益型or成本型,效益型即为1,成本型即为-1。shuxing.mat可修改各个方案的评价值。最终输出的index为最终的排名结果。
TOPSIS评价模型方法
10-19
用于数据处理与建立数学模型,TOPSIS方法的详细步骤及举例,
python实现TOPSIS
WenbinYao&YouweiHu
02-24
4384
最近需要用一下TOPSIS算法,所以学了一下,然后网上搜了一下python代码,但是download下来的代码感觉有一些问题,所以自己基于download下来的代码修改了一下,并且测试了一下。
本文主要是介绍下修改的python TOPSIS代码,至于算法的介绍,给个链接,大家自己花个半小时看下即可,非常容易理解
一、TOPSIS算法介绍
TOPSIS算法介绍,这是网上的一篇博文,写的非常得清晰易...
topsis(优劣解距离法
07-28
Topsis(优劣解距离法)是一种多属性决策分析方法,用于评估多个候选方案的综合性能。它基于两个关键概念:优劣解距离和相对接近度。 首先,需要确定每个候选方案的属性值。然后,通过对属性值进行标准化,将属性值...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
「已注销」
CSDN认证博客专家
CSDN认证企业博客
码龄6年
重庆大学
395
原创
-
周排名
-
总排名
14万+
访问
等级
5452
积分
64
粉丝
561
获赞
39
评论
388
收藏
私信
关注
热门文章
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
16321
关于状压DP枚举子集的方法与理解
8245
备战NOIP2018(时间已不够用系列)!!!怀挺!!!!!!
2673
层次分析法AHP的简单使用举例与matlab实现
2468
MATLAB学习笔记(一)
1949
分类专栏
git
2篇
github
1篇
应用
1篇
VUE
JavaScript相关
7篇
正则表达式
1篇
动态规划练习
3篇
数据结构学习
5篇
算法学习
3篇
LeetCode
7篇
复习
18篇
数学
4篇
Python
2篇
Java
2篇
高数
13篇
MatLab
9篇
杂谈
7篇
解题报告
3篇
一些总结
5篇
OI/ACM之分治
25篇
OI/ACM之动态规划与递推
122篇
OI/ACM之数据结构
73篇
OI/ACM之图论
44篇
OI/ACM之数论数学
32篇
OI/ACM之搜索
5篇
OI/ACM之字符串
5篇
OI/ACM之其他如贪心
51篇
最新评论
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
CSDN-Ada助手:
多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8060235, 请多输出高质量博客, 帮助更多的人
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
东青:
请问下这道题用熵权法,加权和不加权的结果是一样的吗?
回顾一年的数模经历与一些准备比赛的建议
先躺会儿:
https://blog.csdn.net/CKJCKJCHEN/article/details/126602693
TOPSIS算法(优劣解距离法)的使用举例与matlab实现
Ahong605:
兄弟,有代码吗
欢迎访问「一名前端攻城师的个人修养」
清汤407:
赞一个
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
欢迎访问「一名前端攻城师的个人修养」
回顾一年的数模经历与一些准备比赛的建议
JavaScript中的逻辑与运算&&与逻辑或运算||中你不知道的操作
2021年28篇
2020年34篇
2018年333篇
目录
目录
分类专栏
git
2篇
github
1篇
应用
1篇
VUE
JavaScript相关
7篇
正则表达式
1篇
动态规划练习
3篇
数据结构学习
5篇
算法学习
3篇
LeetCode
7篇
复习
18篇
数学
4篇
Python
2篇
Java
2篇
高数
13篇
MatLab
9篇
杂谈
7篇
解题报告
3篇
一些总结
5篇
OI/ACM之分治
25篇
OI/ACM之动态规划与递推
122篇
OI/ACM之数据结构
73篇
OI/ACM之图论
44篇
OI/ACM之数论数学
32篇
OI/ACM之搜索
5篇
OI/ACM之字符串
5篇
OI/ACM之其他如贪心
51篇
目录
评论 6
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)_哔哩哔哩_bilibili
大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)_哔哩哔哩_bilibili 首页番剧直播游戏中心会员购漫画赛事投稿大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)
3.3万
16
2021-04-28 00:24:24
未经作者授权,禁止转载26486643197【小白快速上手数据分析】之TOPSIS法
傻瓜式实现+小白也看得懂的实现讲解(内附TOPSIS法模板)
MPai微信公众号:万灵数据
MPai交流群:715829047(发送想要mpai扩展的模型,按反馈意见优先开发部分新模型。)
MPai数据科学平台官网:www.mpaidata.com知识分享官知识科学科普综合评价topsis
小白大腿与数据科学
发消息
人大硕士,擅长数学建模,数据分析咨询,合作交流微信:willingdata
关注 8502
桌面AI伙伴,陪你High翻天!
接下来播放
自动连播多指标综合评价的基本思路与步骤(新手必看!!!)大鸭进京赶烤
7.2万
99
综合评价专题三:TOPSIS法登天小志
1.3万
4
3-TOPSIS法烧鸡嘟嘟嘟
855
0
TOPSIS法模型Matlab代码讲解 【数学建模快速入门】数模加油站 江北数模加油站
2779
5
TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站
4436
7
【小白学统计】综合评价之熵权TOPSIS法,原理+数据处理+案例分析,熵权TOPSIS法进行综合评价小白在学统计
1166
0
一个不太成熟的介绍(1)——如何运用Excel表格进行熵权TOPSIS法的运算心仓马龙的yy
2.6万
22
EXCEL TOPSIS法 相对贴近度(综合得分)计算及排序lanjingling2019
1588
0
TOPSIS理想解法(3)案例分析耿大哥讲算法
953
0
毕业论文数据分析 spssau TOPSIS法计算权重硕博论文指导
3249
0
EXCEL 熵权-TOPSIS法 计算权重及综合得分lanjingling2019
5014
0
TOPSIS和熵权法牛毛b站
2.2万
20
熵权-TOPSIS模型的MATLAB操作,超靠谱,超干货。韭霖后博士生
4.1万
14
DEA方法归类、三阶段DEA、TOPSIS- DEA法论文分析小鱼没水不会游
6356
14
TOPSIS理想解法(1)TOPSIS的基本原理与操作步骤耿大哥讲算法
1687
1
只要十分钟保证学会系列6-用EXCEL操作TOPSIS综合评价算法与灰关联分析(GRA)法--30--
4018
1
熵权topsis的计算步骤、论文不同的做法分析和计算软件分享Matthew学长
3.5万
0
一个不太成熟的介绍(3)——如何运用Excel表格进行熵权TOPSIS法的运算心仓马龙的yy
1.5万
14
【SPSSAU】TOPSIS法计算权重 | 数据分析常见问题解答SPSSAU官方账号
6667
1
小白快速上手熵权Topsis(原理+实战)spsspro
5.4万
48
展开
小窗
客服
顶部
赛事库 课堂 2021
优劣解距离法(TOPSIS)-SPSSPRO帮助中心
优劣解距离法(TOPSIS)-SPSSPRO帮助中心
产品简介 我的数据 数据处理 数据分析 描述性分析 问卷分析 综合评价 层次分析法(AHP专业版)因子分析(探索性)数据包络分析模糊综合评价优劣解距离法(TOPSIS)1、作用2、输入输出描述3、案例示例4、案例数据5、案例操作6、输出结果分析7、注意事项 8、模型理论9、参考文献秩和比综合评价法(RSR)耦合协调度层次分析法(AHP简化版)熵值法CRITIC权重法独立性权系数法变异系数法灰色关联分析多准则妥协解排序法(VIKOR)解释结构模型(ISM)差异性分析 相关性分析 预测模型 统计建模 计量经济模型 医学统计模型 机器学习分类 机器学习回归 规划求解 研究模型 自定义算法
优劣解距离法(TOPSIS)
操作视频 SPSSPRO教程-优劣解距离法(TOPSIS) # 优劣解距离法(TOPSIS) # 1、作用 TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。 # 2、输入输出描述 输入:至少两项或以上的定量变量。输出:反应考核指标在量化评价中的综合得分。 # 3、案例示例 案例:为了客观地评价各风景地点的性价比,根据风景、人文、拥挤程度、票价等因素对各风景地点进行评估。 # 4、案例数据 优劣解距离法案例数据 # 5、案例操作 Step1:新建分析;Step2:上传数据;Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;step4:选择【优劣解距离法(TOPSIS)】;step5:查看对应的数据数据格式,【优劣解距离法(TOPSIS)】要求特征序列为定量变量,分为正向指标变量和负向指标变量,且正向指标变量和负向指标变量的个数之和大于等于两项。step6:设置变量权重(熵权法、不设置权重)。step7:点击【开始分析】,完成全部操作。 # 6、输出结果分析 输出结果 1:指标权重计算 图表说明:熵权法的权重计算结果显示,风景的权重为 25.786%、人文的权重为 22.684%、拥挤程度的权重为 25.737%、票价的权重为 25.793%,其中指标权重最大值为票价(25.793%),最小值为人文(22.684%)。 输出结果 2:TOPSIS 评价法计算结果 索引值 正理想解距离(D+) 负理想解距离(D-) 综合得分指数 排序 A 0.58858972 0.73971683 0.55688714 1 B 0.6895735 0.46671506 0.40363199 5 C 0.55294627 0.48326013 0.46637439 4 D 0.58132163 0.6605838 0.53191152 2 E 0.63882976 0.6119502 0.48925488 3 图表说明:由上表可知,景点 A 的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点 A 的性价比较高,距离负理想解相对远,距离正理想解相对近。 输出结果 3:中间值展示 项 正理想解 负理想解 风景 0.999975 0.000025 人文 0.9999875 0.0000125 拥挤程度 0.9999875 0.0000125 票价 0.999995 0.000005 图表说明:表格给出的是正理想解(最优解)和负理想解(最劣解)的值。 # 7、注意事项 进行 TOPSIS 分析时,各个指标有着权重属性(当然通常情况并没有),那么可对应设置各个指标的权重(输入的权重值可以为相对数字,SPSSPRO 默认都会进行归一化处理让权重加和为 1),在进行 D+和 D-值计算时,SPSSPRO 会对应乘上权重值(如果没有权重则下述公式中权重值为 1); # 8、模型理论 TOPSIS 法的基本思想是: 对原始数据同趋 势后构建归一化矩阵, 计算评价对象与最优向量和最劣向量的 差异, 以此测度评价对象的差异。 假设有 n 个评价对象,m 个 指标, TOPSIS 法的基本步骤为: (1)步骤 1 :原始数据正向化+同趋势化
由于平台存在“正向指标”、“负向指标”,将分别对这两类数据做预处理 。这里对最小值减去0.0001,对最大值加上0.0001是为了兼容一整列都为相同的值的情况,对整体结果影响不大,可忽略不计 Xmin=min(X1j,X2j,...,Xnj)−0.0001 Xmax=max(X1j,X2j,...,Xnj)+0.0001
对于正向指标: zij=Xij−XminXmax−Xmin
对于负向指标: zij=Xmax−XijXmax−Xmin
(2)步骤2:计算最优解和最劣解
最优解:(,)(Z1+,Z2+,...,Zm+)
最劣解:(,)(Z1−,Z2−,...,Zm−)
(3)步骤 3 :计算各评价指标与最优及最劣向量之间的差距其中w_j为第 j 个属性的权重(重要程度)。(4)步骤 4 :测度 评价对象与最优方案的接近程度 C_i 值越大, 表明评价对象越优 # 9、参考文献 [1] Scientific Platform Serving for Statistics Professional 2021. SPSSPRO. (Version 1.0.11)[Online Application Software]. Retrieved from https://www.spsspro.com.
[2] Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.[3] 刘浩然,汤少梁. 基于 TOPSIS 法与秩和比法的江苏省基本医疗服务均等化水平研究[J]. 中国全科医学,2016,19(7):819-823. DOI:10.3969/j.issn.1007-9572.2016.07.017. 建议反馈
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all
clc
%% 导入数据
% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X
% (2)双击进入X,输入或拷贝数据到X
% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件
% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。
load data_water_quality.mat
%% 数据预处理_正向化
[n,m] = size(X);
disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])
Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);
if Judge == 1
Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]
disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')
Type = input('例如[1,3,2]: '); %[2,1,3]
% 注意,Position和Type是两个同维度的行向量
for i = 1 : size(Position,2)%对每一列进行正向化处理
X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));
% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))
% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)
% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列
% 返回值返回正向化之后的指标
end
disp('正向化后的矩阵 X = ')
disp(X)
end
%% 数据预处理_标准化
Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);
disp('标准化矩阵 Z = ')
disp(Z)
%% 指标权重赋值
disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")
Judge = input('请输入是否需要增加权重: ');
if Judge == 1
disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);
weigh = input(['请输入输入' num2str(m) '个权重: ']);
if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。
else
weigh = input('你输入的有误,请重新输入权重行向量: ');
end
else
weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m
end
%% 计算与最大值的距离和最小值的距离,并算出得分
D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量
D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量
S = D_N ./ (D_P+D_N); % 未归一化的得分
disp('最后的得分为:')
stand_S = S / sum(S)% 归一化的得分
[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置
plot(sorted_S,'r-o')
xmin=1;xmax = size(sorted_S,1);
ymin = 0;ymax = max(sorted_S)+min(sorted_S);
axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间
grid on
xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签
title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)
% 输入变量有三个:
% x:需要正向化处理的指标对应的原始列向量
% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)
% i: 正在处理的是原始矩阵中的哪一列
% 输出变量posit_x表示:正向化后的列向量
if type == 1 %极小型
disp(['第' num2str(i) '列是极小型,正在正向化'] )
posit_x = Min2Max(x); %调用Min2Max函数来正向化
disp(['第' num2str(i) '列极小型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 2 %中间型
disp(['第' num2str(i) '列是中间型'] )
best = input('请输入最佳的那一个值(中间的那个值): ');
posit_x = Mid2Max(x,best);
disp(['第' num2str(i) '列中间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 3 %区间型
disp(['第' num2str(i) '列是区间型'] )
a = input('请输入区间的下界: ');
b = input('请输入区间的上界: ');
posit_x = Inter2Max(x,a,b);
disp(['第' num2str(i) '列区间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
else
disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')
end
end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论赞同 31814 条评论分享喜欢收藏申请转载文章被以下专栏收录1111111
SPSS基本分析方法之优劣解距离法(TOPSIS) - 知乎
SPSS基本分析方法之优劣解距离法(TOPSIS) - 知乎首发于数据分析实战教程切换模式写文章登录/注册SPSS基本分析方法之优劣解距离法(TOPSIS)SPSSPRO已认证账号https://www.zhihu.com/video/14602449319814307841、作用TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。2、输入输出描述输入:至少两项或以上的定量变量。输出:反应考核指标在量化评价中的综合得分。3、学习网站SPSSPRO-免费专业的在线数据分析平台4、案例示例案例:为了客观地评价各风景地点的性价比,根据风景、人文、拥挤程度、票价等因素对各风景地点进行评估。5、案例数据优劣解距离法案例数据6、案例操作Step1:新建分析;Step2:上传数据;Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;step4:选择【优劣解距离法(TOPSIS)】;step5:查看对应的数据数据格式,【优劣解距离法(TOPSIS)】要求特征序列为定量变量,分为正向指标变量和负向指标变量,且正向指标变量和负向指标变量的个数之和大于等于两项。step6:设置变量权重(熵权法、不设置权重)。step7:点击【开始分析】,完成全部操作。7、输出结果分析输出结果1:指标权重计算图表说明:熵权法的权重计算结果显示,风景的权重为25.786%、人文的权重为22.684%、拥挤程度的权重为25.737%、票价的权重为25.793%,其中指标权重最大值为票价(25.793%),最小值为人文(22.684%)。输出结果2:TOPSIS评价法计算结果图表说明:由上表可知,景点A的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点A的性价比较高,距离负理想解相对远,距离正理想解相对近。输出结果3:中间值展示图表说明:表格给出的是正理想解(最优解)和负理想解(最劣解)的值。8、注意事项进行TOPSIS分析时,各个指标有着权重属性(当然通常情况并没有),那么可对应设置各个指标的权重(输入的权重值可以为相对数字,SPSSPRO默认都会进行归一化处理让权重加和为1),在进行D+和D-值计算时,SPSSPRO会对应乘上权重值(如果没有权重则下述公式中权重值为1),计算公式如下:9、模型理论 TOPSIS法的基本思想是: 对原始数据同趋 势后构建归一化矩阵, 计算评价对象与最优向量和最劣向量的 差异, 以此测度评价对象的差异。 假设有 n个评价对象,m个 指标, TOPSIS 法的基本步骤为: 步骤1 原始数据同趋势化 区分指标体系中的指标类别 (高优或低优) ,并根据不同类型的指标需要按照不同的公式进行正向化处理。 构建 n 行 m 列的矩阵 Xij, 矩阵中 X表示第 i 个对象的第 j 个指标的值。 步骤2 构建标准化矩阵 步骤3 计算各评价指标与最优及最劣向量之间的差距其中 wj为第 j个属性的权重(重要程度)。步骤4 测度 评价对象与最优方案的接近程度 Ci 值越大, 表明评价对象越优 10、参考文献[1] Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.[2] 刘浩然,汤少梁. 基于 TOPSIS法与秩和比法的江苏省基本医疗服务均等化水平研究[J]. 中国全科医学,2016,19(7):819-823. DOI:10.3969/j.issn.1007-9572.2016.07.017.发布于 2021-12-31 13:45数学建模SPSS 数据分析SPSS赞同 85 条评论分享喜欢收藏申请转载文章被以下专栏收录数据分析实战教程通过案例分享快速了解数
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎
TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all
clc
%% 导入数据
% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X
% (2)双击进入X,输入或拷贝数据到X
% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件
% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。
load data_water_quality.mat
%% 数据预处理_正向化
[n,m] = size(X);
disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])
Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);
if Judge == 1
Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]
disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')
Type = input('例如[1,3,2]: '); %[2,1,3]
% 注意,Position和Type是两个同维度的行向量
for i = 1 : size(Position,2)%对每一列进行正向化处理
X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));
% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))
% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)
% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列
% 返回值返回正向化之后的指标
end
disp('正向化后的矩阵 X = ')
disp(X)
end
%% 数据预处理_标准化
Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);
disp('标准化矩阵 Z = ')
disp(Z)
%% 指标权重赋值
disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")
Judge = input('请输入是否需要增加权重: ');
if Judge == 1
disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);
weigh = input(['请输入输入' num2str(m) '个权重: ']);
if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。
else
weigh = input('你输入的有误,请重新输入权重行向量: ');
end
else
weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m
end
%% 计算与最大值的距离和最小值的距离,并算出得分
D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量
D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量
S = D_N ./ (D_P+D_N); % 未归一化的得分
disp('最后的得分为:')
stand_S = S / sum(S)% 归一化的得分
[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置
plot(sorted_S,'r-o')
xmin=1;xmax = size(sorted_S,1);
ymin = 0;ymax = max(sorted_S)+min(sorted_S);
axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间
grid on
xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签
title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)
% 输入变量有三个:
% x:需要正向化处理的指标对应的原始列向量
% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)
% i: 正在处理的是原始矩阵中的哪一列
% 输出变量posit_x表示:正向化后的列向量
if type == 1 %极小型
disp(['第' num2str(i) '列是极小型,正在正向化'] )
posit_x = Min2Max(x); %调用Min2Max函数来正向化
disp(['第' num2str(i) '列极小型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 2 %中间型
disp(['第' num2str(i) '列是中间型'] )
best = input('请输入最佳的那一个值(中间的那个值): ');
posit_x = Mid2Max(x,best);
disp(['第' num2str(i) '列中间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
elseif type == 3 %区间型
disp(['第' num2str(i) '列是区间型'] )
a = input('请输入区间的下界: ');
b = input('请输入区间的上界: ');
posit_x = Inter2Max(x,a,b);
disp(['第' num2str(i) '列区间型正向化处理完成'] )
disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')
else
disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')
end
end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论赞同 31814 条评论分享喜欢收藏申请转载文章被以下专栏收录1111111
什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎
什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册法学什么叫做"基于熵权的 TOPSIS 综合评价法”?关注者10被浏览117,571关注问题写回答邀请回答好问题添加评论分享6 个回答默认排序疯狂绅士SAISM-夹逼对抗解释结构模型——扯蛋的表现形式 关注你这里有三个概念。只要记得topsis是什么就行!一、综合评价综合评价(Comprehensive Evaluation,CE),也叫综合评价方法或多指标综合评价方法,是指使用比较系统的、规范的方法对于多个指标、多个单位同时进行评价的方法。它不只是一种方法,而是一个方法系统,是指对多指标进行综合的一系列有效方法的总称。综合评价方法在现实中应用范围很广。综合评价是针对研究的对象,建立一个进行测评的指标体系,利用一定的方法或模型,对搜集的资料进行分析,对被评价的事物作出定量化的总体判断。综合评价的三大关键技术:其一,指标选择;其二,权数的确定;其三,方法的适宜。二、求权重的方法求权重的方法如下:求权重方法有客观法与主观法。熵权法是用的最广的客观法。三、topsis方法TOPSIS方法说明流程图中纵向的过程即为TOPSIS方法的流程。TOPSIS简介。 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。该方法又被称为“双基点法”TOPSIS重要基本概念与原理 “正理想解”和“负理想解”是TOPSIS法的最基本的概念。 离正理想点(最好的解、最佳点、最优解、最大极值点)的距离越远,效果最差,即为负向指标。因为其数值越大越差,数值越小越牛逼。 离负理想点(最差的解、最差点、最劣解、最差极值点)的距离越远,效果最好,即为正向指标。因为其数值越小越牛逼,数值越大越差。 贴近度、相似度是TOPSIS法的另外一个重要概念。 越贴近正理想点,即数值越大,效果最大,即为正向指标。 越贴近负理想点,即数值越大,效果最差,即为为向指标。可以把熵权法只是topsis的一部分topsis就是一种综合评价方法。发布于 2022-10-07 18:53赞同 44添加评论分享收藏喜欢收起SPSSAU已认证账号 关注举个例子进行说明。一、分析前准备1.研究背景TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。例如:当前有一个项目进行招标,共有4个承包商,分别是A,B,C,D厂。由于招标需要考虑多个因素,各个方案指标的优劣程度也并不统一。为了保证评价过程中的客观、公正性。因此,考虑通过熵权TOPSIS法,对各个方案进行综合评价,从而选出最优方案。2.数据格式熵权TOPSIS法用于研究指标与理想解的接近度情况。1个指标占用1列数据。1个研究对象为1行,但研究对象在分析时并不需要使用,SPSSAU默认会从上到下依次编号。二、SPSSAU操作(1)登录账号后进入SPSSAU页面,点击右上角“上传数据”,将处理好的数据进行“点击上传文件”上传即可。(2)拖拽分析项在“综合评价”模块中选择“熵权topsis”方法,将分析项拖拽到右侧分析框中,点击“开始分析”即可。三、SPSSAU数据处理1.数据正向化/逆向化处理如果数据中有逆向指标(数字越大反而越不好的意思),此时需要使用‘SPSSAU数据处理->生成变量’的‘逆向化’功能处理。让数据变成正向指标(即数字越大越好的意思)。‘逆向化’的数据计算公式为:(Max-X)/(Max-Min),明显可以看出,针对逆向指标进行‘逆向化’处理后,数据就会变成正向指标。【SPSSAU】数据无量纲化处理 | 数据分析常见问题解答2.数据标准化处理针对数据进行标准化处理,目的在于解决量纲化问题。常见的标准化处理方法有:‘归一化’,‘区间化’,‘均值化’等。(1)‘归一化’将所有数据压缩在0到1之间;(2)‘区间化‘将所有数据压缩在自己设定的区间;(3)‘均值化’= 当前值 / 平均值。补充说明:一般而言,如果数据全部都大于0,建议使用‘均值化’;如果数据中有负数或者0,建议做‘区间化’让数据限定在一个区间(SPSSAU默认1~2之间);当然也可以考虑‘归一化’,让数据全部介于0~1之间。具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。(如果数据进行了正/逆向化处理就不需要再进行标准化处理。)四、SPSSAU分析背景:当前有6个国家经济技术开发区,分别在政务系统的4个指标上的评分值。数字越大表示指标越优。当前希望利用熵权TOPSIS法评价出6个开发区的政务系统排名情况。原始数据如下:本案例数据中包括4个政务系统的评价指标,而且全部都是正向指标,因此不需要进行正向化或者逆向化处理。以及接着数据标准化解决量纲问题上,本例子使用‘均值化’处理方法。操作为SPSSAU数据处理->生成变量:完成数据‘均值化’处理后,直接开始进行‘熵值TOPSIS法’分析,操作如下图:1.熵值法计算权重结果汇总上表格展示出4个政务系统指标的权重值,明显可以看出指标3的权重更大。但权重大小仅仅是过程值,熵值TOPSIS分析重心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。2.TOPSIS评价计算结果分析结果来源于SPSSAU从上表可知,利用熵权法后加权生成的数据(算法自动完成)进行TOPSIS分析,针对4个指标(MC_政务系统指标1, MC_政务系统指标2, MC_政务系统指标3, MC_政务系统指标4),进行TOPSIS评价,同时评价对象为6个(样本量数量即为评价对象数量);TOPSIS法首先找出评价指标的正负理想解值(A+和A-),接着计算出各评价对象分别与正负理想解的距离值D+和D-。根据D+和D-值,最终计算得出各评价对象与最优方案的接近程度(C值),并可针对C值进行排序。最终从上表可知:评价对象4,即开发区4,它的相对接近度C值最高为0.9995,因而说明开发区4在政务系统上的表现最优;其次是开发区3,相对接近度C起来0.8141。开发区1的政务系统表现最差。3.正负理想解4.描述统计分析数据完整并无缺失等,可通过上表格查看各分析项的平均值或标准差值等。从上表格可以看出四个分析项的样本量均为6,平均值均为1。五、其他说明1.如果分析数据中有负数或者0值如何办?如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’(该值为某列数据最小值的绝对值+0.01),以便让数据全部都大于0,因而满足算法要求。2. 面板数据如何进行熵值TOPSIS法?熵值TOPSIS法的原理是先进行熵值法,然后再进行TOPSIS法。无论是面板或者非面板数据,均可正常进行熵值TOPSIS法研究,并不需要特别处理。(当然面板数据进行分析时,也可以先筛选出不同的年份,重复进行多次均可)。六、总结熵权TOPSIS法分别涉及熵权法和TOPSIS法;熵权法计算各评价指标的权重值,然后利用权重值乘原始数据,得到newdata。系统利用newdata进行TOPSIS法进行计算,最终得到各评价对象的接近程序C值,用于判断和衡量评价对象的优劣排序等。【SPSSAU】熵权topsis法案例解读【SPSSAU】熵值法的各类应用【SPSSAU】熵值法操作及应用 | 数据分析常见问题解答今天的分享就到这里啦,更多干货请前往SPSSAU官网查看:发布于 2023-10-12 10:20赞同 10添加评论分享收藏喜欢