精华内容
下载资源
问答
  • SPSS中因子分析法的操作步骤,深入浅出分析了SPSS中因子分析法基本原理,让初学者掌握和理解SPSS中因子分析。
  • 主成分分析法的原理应用及计算步骤
  • 层次分析法步骤: 1. 分析系统中各因素之间的关系建立系统的递阶层次结构: (1) 最高层 (2) 中间层 (3) 最低层 2. 构造两两成对比的判断矩阵。 3. 层次单排序及其一致性检验。 4. 层次总排序。 参考代码...

    层次分析法步骤:

    1. 分析系统中各因素之间的关系建立系统的递阶层次结构:
    (1) 最高层
    (2) 中间层
    (3) 最低层
    2. 构造两两成对比的判断矩阵。
    3. 层次单排序及其一致性检验。
    4. 层次总排序。

    参考代码(博主xddc总结):

    disp('请输入判断矩阵A(n阶)');
    A=input('A=');
    [n,n]=size(A);
    x=ones(n,100);
    y=ones(n,100);
    m=zeros(1,100);
    m(1)=max(x(:,1));
    y(:,1)=x(:,1);
    x(:,2)=A*y(:,1);
    m(2)=max(x(:,2));
    y(:,2)=x(:,2)/m(2);
    p=0.0001;i=2;k=abs(m(2)-m(1));
    while  k>p
      i=i+1;
      x(:,i)=A*y(:,i-1);
      m(i)=max(x(:,i));
      y(:,i)=x(:,i)/m(i);
      k=abs(m(i)-m(i-1));
    end
    a=sum(y(:,i));
    w=y(:,i)/a;
    t=m(i);
    disp(w);disp(t);
             %以下是一致性检验
    CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
    CR=CI/RI(n);
    if CR<0.10
        disp('此矩阵的一致性可以接受!');
        disp('CI=');disp(CI);
        disp('CR=');disp(CR);
    end

     

    执行示例:

    请输入判断矩阵A(n阶)
    A=[1 1/2 4 3 3;
          2 1   7 5 5;
        1/4 1/7 1 1/2 1/3;
          1/3 1/5 2 1 1;
         1/3 1/5 3 1 1]
        0.2636
        0.4758
        0.0538
        0.0981
        0.1087
        5.0721
    此矩阵的一致性可以接受!
    CI=
        0.0180
    CR=
        0.0161

    根据数模培训对层次分析的讲解,只是懂了思路,要翻译成matlab语言还是磕磕绊绊

     

    代码2:

    这里设计了3层,最后要把每层的权重叠乘一下:

    function ahpactor

    A = [1/1  2/1  5/1  3/1 
         1/2  1/1  3/1  1/2 
         1/5  1/3  1/1  1/4
         1/3  2/1  4/1  1/1];
    [w, CR] = AHP(A);

    % face
    A1 = [1/1  1/2  3/1
          2/1  1/1  5/1
          1/3  1/5  1/1];
    [w1, CR1] = AHP(A1);

    % body
    A2 = [1/1  1/3  2/1
          3/1  1/1  5/1
          1/2  1/5  1/1];
    [w2, CR2] = AHP(A2);

    % voice
    A3 = [1/1  2/1  1/5
          1/2  1/1  1/7
          5/1  7/1  1/1];
    [w3, CR3] = AHP(A3);

    % acting
    A4 = [1/1  2/1  1/3
          1/2  1/1  1/5
          3/1  5/1  1/1];
    [w4, CR4] = AHP(A4);


    CRs = [CR1 CR2 CR3 CR4]
    P = [w1 w2 w3 w4] * w

     % ------------------------------------------------------------------------
     
    function [w, CR] = AHP(A)
    % n= [ 1    2    3    4    5    6    7    8    9
    RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];

    n = size(A,1);
    [V, D] = eig(A);

    [lamda, i] = max(diag(D));
    CI=(lamda-n)/(n-1);
    CR = CI/RI(n);

    W = V(:,i);
    w = W/sum(W);

    展开全文
  • 层次分析法(AHP)详细步骤

    万次阅读 多人点赞 2019-01-07 13:01:10
    层次分析法步骤 1.建立层次结构模型 将决策的目标、考虑的因素(决策准则)和决策对象按照他们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。 最高层: 决策的目的、要解决的问题。 最低层: 决策...

    1. 算法简介

    层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
    层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的课题。

    2. 算法基本原理

    例子:
    在这里插入图片描述

    2.1. 解决问题的思路

    层次分析法的基本思路是将所要分析的问题层次化;根据问题的性质和所要达成的总目标,将问题分解为不同的组成因素,并按照这些因素的关联影响及其隶属关系,将因素按不同层次凝聚组合,形成一个多层次分析结构模型;最后,对问题进行优劣比较并排列。

    2.2. 层次分析法的步骤

    1.建立层次结构模型

    • 将决策的目标、考虑的因素(决策准则)和决策对象按照他们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。
    • 最高层: 决策的目的、要解决的问题。
      最低层: 决策时的备选方案。
      中间层: 考虑的因素、决策的准则。
    • 对相邻的两层,称高层为目标层,低层为因素层

    层次分析法所要解决的问题是关于最低层对最高层的相对权重的问题,按此相对权重可以对最低层中的各种方案、措施进行排序,从而在不同的方案中做出选择或形成选择方案的原则。

    2.构造判断矩阵
    层次分析法中构造判断矩阵的方法是一致矩阵法,即:不把所有因素放在一起比较,而是两两相互比较;对此时采用相对尺度,以尽可能减少性质不同因素相互比较的困难,以提高准确度。

    判断矩阵 a i j a_{ij} aij的标度方法

    标度含义
    1表示两个因素相比,具有同样重要性
    3表示两个因素相比,一个因素比另一个因素稍微重要
    5表示两个因素相比,一个因素比另一个因素明显重要
    7表示两个因素相比,一个因素比另一个因素强烈重要
    9表示两个因素相比,一个因素比另一个因素极端重要
    2,4,6,8上述两相邻判断的中值
    倒数因素 i i i j j j比较的判断 a i j a_{ij} aij,则因素 j j j i i i比较的判断 a j i = 1 / a i j a_{ji}=1/a_{ij} aji=1/aij

    3.层次单排序及其一致性检验
    对应于判断矩阵最大特征根 λ m a x \lambda max λmax的特征向量,经归一化(使向量中各元素之和为1)后记为 W W W W W W的元素为同一层次元素对于上一层因素某因素相对重要性的排序权值,这一过程称为层次单排序

    定义一致性指标 C I = λ − n n − 1 CI=\frac {\lambda-n}{n-1} CI=n1λn
    C I = 0 CI=0 CI=0,有完全的一致性;
    C I CI CI接近于0,有满意的一致性;
    C I CI CI越大,不一致越严重。

    为了衡量 C I CI CI的大小,引入随机一致性指标 R I RI RI

    随机一致性指标 RI
    n1234567891011
    RI000.580.901.121.241.321.411.451.491.51

    定义一致性比率: C R = C I R I CR=\frac{CI}{RI} CR=RICI,一般认为一致性比率 C R < 0.1 CR<0.1 CR<0.1时,认为A的不一致程度在容许范围之内,有满意的一致性,通过一致性检验。可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵A,对 a i j a_{ij} aij加以调整。

    示例:
    在这里插入图片描述在这里插入图片描述

    4.层次总排序及其一致性检验

    • 计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。
    • 这一过程是从最高层次到最低层次依次进行的。
      在这里插入图片描述
      A层 m m m个因素 A 1 , A 2 , ⋅ ⋅ ⋅ , A m , A_{1},A_{2},···,A_{m}, A1,A2,,Am,对总目标Z的排序为 a 1 , a 2 , ⋅ ⋅ ⋅ , a m a_{1},a_{2},···,a_{m} a1,a2,,am
      B层 n n n个因素对上层A中因素为 A j A_{j} Aj的层次单排序为 b 1 j , b 2 j , ⋅ ⋅ ⋅ , b n j ( j = 1 , 2 , 3 , ⋅ ⋅ ⋅ , m ) b_{1j},b_{2j},···,b_{nj}(j=1,2,3,···,m) b1j,b2j,,bnj(j=1,2,3,,m)

    B层的层次总排序(即B层第 i i i个因素对总目标的权值为: ∑ j = 1 m a j b i j \sum_{j=1}^{m}a_{j}b_{ij} j=1majbij)为:
    B 1 : a 1 b 11 + a 2 b 12 + ⋅ ⋅ ⋅ + a m b 1 m , B_{1}:a_{1}b_{11}+a_{2}b_{12}+···+a_{m}b_{1m}, B1:a1b11+a2b12++amb1m,
    B 2 : a 1 b 21 + a 2 b 22 + ⋅ ⋅ ⋅ + a m b 2 m , B_{2}:a_{1}b_{21}+a_{2}b_{22}+···+a_{m}b_{2m}, B2:a1b21+a2b22++amb2m,
    ⋅ ⋅ ⋅ ···
    B n : a 1 b n 1 + a 2 b n 2 + ⋅ ⋅ ⋅ + a m b n m , B_{n}:a_{1}b_{n1}+a_{2}b_{n2}+···+a_{m}b_{nm}, Bn:a1bn1+a2bn2++ambnm,

    层次总排序的一致性比率为: C R = a 1 C I 1 + a 2 C I 2 + ⋅ ⋅ ⋅ + a m C I m a 1 R I 1 + a 2 R I 2 + ⋅ ⋅ ⋅ + a m R I m CR=\frac{a_{1}CI_{1}+a_{2}CI_{2}+···+a_{m}CI_{m}}{a_{1}RI_{1}+a_{2}RI_{2}+···+a_{m}RI_{m}} CR=a1RI1+a2RI2++amRIma1CI1+a2CI2++amCIm,当 C R < 0.1 CR<0.1 CR<0.1时,认为层次总排序通过一致性检验。
    例子:
    在这里插入图片描述在这里插入图片描述

    3.算法总结

    • 应用领域:经济计划个管理,能源政策和分配,人才选拔和评价,生产决策,交通运输,科研选题,产业结构,教育,医疗,环境,军事等。
    • 处理问题类型:决策、评价、分析、预测等。
    • 建立层次分析结构模型是关键一步,要有主要决策层参与。
    • 构造成对比较矩阵是数量依据,应由经验丰富、判断力强的专家给出。

    4.参考

    1. 层次分析法建模——《百度文库》
    展开全文
  • 文章目录前言一、解决评价类问题二、解决该类问题大体...层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各


    前言

    层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

    一、解决评价类问题

    1、评价目标是什么
    2、达到目标可实施的方案有哪些
    3、评价的准则是什么(指标)

    二、解决该类问题大体流程

    1.确定评价目标

    2.达到目标可行的方案

    3.不同方案的权重或指标

    4.确定不同指标的一致矩阵,即判断矩阵

    5.计算一致性指标和一致性比例,判断矩阵的一致性是否可以接受

    6.计算不同方案对每个指标的得分

    7.加权每个方案对不同指标的权重

    8.最终确定不同方案的综合评分,找到可实施的方案

    三、具体题目实现和细节问题

    题目:假期几位同学想要去春游,他们查询了网络,确定了苏杭、北戴河和桂林之一作为目标地点。请你确定评价指标、行成评价体系来为他们选择合适的方案。

    1、评价指标可根据不同题意去网上查找相关资料形成不同的评价指标,或者在题目背景中挖掘。

    1. 景点景色
    2. 旅游花费
    3. 居住环境
    4. 饮食情况
    5. 交通便利程度

    2、要确定不同指标的权重,以及不同方案对不同权重的得分。

    在这里插入图片描述

    在这里插入图片描述
    该矩阵为层次分析法中的判断矩阵,但是要判断他是否为正互反矩阵,即aij*aji=1。
    在这里插入图片描述

    3、既然每个指标所占的权重计算好了,那么如何计算不同方案对于景色,饮食等不同指标所占的权重(得分)呢?

    在这里插入图片描述

    填写该判断矩阵,即不同方案对景色所占的权重(得分)

    这是方案填写完的效果。

    4、之后就要检验判断矩阵的一致性

    在这里插入图片描述
    各行(各列)成倍数关系。
    在这里插入图片描述

    5、一致性检验的步骤

    第一步:计算一致性指标CI
    在这里插入图片描述
    第二步:查找对应的平均随机一致性指标RI
    在这里插入图片描述

    第三步:计算一致性比例CI
    在这里插入图片描述

    如果CR<0.1,即可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修改

    在这里插入图片描述

    6、既然确定好了一致矩阵,之后就要求一直矩阵的权重了

    **权重一定要进行归一化处理
    在这里插入图片描述

    (1)方法1:算术平均法求权重

    在这里插入图片描述
    第一步:将判断矩阵按照每列进行归一化(每个元素除以其所在列和)
    第二步:将归一化后的各列数据相加(按行求和)
    第三步:将相加后得到的数值除以n,即可得到平均权重

    (2)方法2:几何平均法求权重

    在这里插入图片描述
    第一步:将每行的元素相乘
    第二步:将得到的值开n次方
    第三步:对该列向量进行归一化处理

    (3)方法3:特征值法求权重

    在这里插入图片描述
    第一步:求出矩阵的最大特征值及其对应的特征向量
    第二步:对求出的特征向量进行归一化即可得到权重

    不同方法求得的权重如下图所示:对于景色

    在这里插入图片描述
    在这里插入图片描述
    之后的每个指标都像这么执行,计算出相应的得分。

    7、算出各指标所对应的权重,即

    在这里插入图片描述

    8、确定最终的矩阵

    在这里插入图片描述
    计算各方案的得分
    苏杭得分=0.59540.2636+0.08190.4758+0.42860.0538+0.63370.0981+0.1667*0.1097=0.299

    四、总结

    在这里插入图片描述

    展开全文
  • AHP层次分析法

    万次阅读 多人点赞 2014-02-21 01:07:12
    在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于...

    2014年参加数学建模美赛, 其中一道题是选出5大优秀教练,数据来源要求自行寻找。 在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于进一步针对细节进行学习。文章内容主要参阅 《matlab数学建模算法实例与分析》,部分图片来源于WIKI

     

     

    文章分为2部分:

    1第一部分以通俗的方式简述一下层次分析法的基本步骤和思想

    2第二部分介绍一下我们队伍数学建模过程中,对层次分析法的应用,中间有些地方做了不严谨的推理,例如关于一致性的检验,如有人发现不正确,希望可以指正

     

    第一部分:

     

    层次分析法(Analytic Hierarchy Process ,简称 AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而又实用的多准则决策方法。

    人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 


    运用层次分析法建模,大体上可按下面四个步骤进行: 
    (i )建立递阶层次结构模型; 
    (ii )构造出各层次中的所有判断矩阵; 
    (iii )层次单排序及一致性检验; 
    (iv )层次总排序及一致性检验。 

     

    这四个步骤中,前两个步骤最容易理解,后两个步骤需要一点时间理解

     

    首先从层次结构模型说起

    层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法

    最顶层是我们的目标,比如说选leader,选工作,选旅游目的地

    中间层是判断候选方物或人优劣的因素或标准

    选工作时有:发展前途  ,待遇 ,工作环境等

    选leader时有:年龄,经验,教育背景,魅力

     

    在分层以后,为了选出最优候选

    给目标层分配值1.000

    然后将这一值作为权重,分配给不同因素,对应因素的权重大小代表该因素在整个选择过程中的重要性程度

    然后对于候选方案,每一个标准再将其权重值分配给所有的候选方案,每一方案获得权重值,来源于不同因素分得的权重值的和

     

    如下图:

                目标层分配值为1, 然后我们给了4个候选方案评估标准 criterion 1 、 criterion 2、criterion 3、criterion 4

                假设我们认为这四个标准同等重要, 于是目标层的值1 就被均分到 4个准则上, 每个准则获得的值为 0.25

                然后我们从评估标准 criterion 1 出发, 考虑在该评估标准下, 3 个候选方案的优劣比如何。 假如我们认为在标准1 的衡量下,   3 个方案完全平等, 方案1 在该标准下的得分就应该是: 0.25 * (1/3) 

               同理, 如果我们假设剩下的 3 个标准下, 3个候选方案都是平分秋色, 那么方案 1 的最终得分就应该是

               0.33 =  0.25 * (1/3)   +   0.25 * (1/3)   +  0.25 * (1/3)  +  0.25 * (1/3) 

               最终获得的各个方案的的权重值的和依然为1

     

    这不就是一个简单的权重打分的过程吗?为什么还要层次分析呢。这里就有两个关键问题:

    1每个准则(因素)权重具体应该分配多少

    2每一个候选方案在每一个因素下又应该获得多少权重

     

    这里便进入层次分析法的第二个步骤,也是层次分析法的一个精华(构造比较矩阵(判断矩阵)comparison matrix):

     

    首先解决第一个问题:每个准则(因素)权重具体应该分配多少?

    如果直接要给各个因素分配权重比较困难,在不同因素之间两两比较其重要程度是相对容易的

     

    现在将不同因素两两作比获得的值aij  填入到矩阵的 i 行 j 列的位置,则构造了所谓的比较矩阵,对角线上都是1, 因为是自己和自己比

    这个矩阵容易获得,我们如何从这一矩阵获得对应的权重分配呢

    这里便出现了一个比较高级的概念,正互反矩阵和一致性矩阵

    首先正互反矩阵的定义是:

     

    我们目前构造出的矩阵很明显就是正互反矩阵

     

    而一致性矩阵的定义是:


    这里我们构造出的矩阵就不一定满足一致性,比如我们做因素1:因素2= 4:1  因素2:因素3=2:1    因素1:因素3=6:1(如果满足一致性就应该是8:1),我们就是因为难以确定各因素比例分配才做两两比较的,如果认为判断中就能保证一致性,就直接给出权重分配了

     

    到了关键部分,一致性矩阵有一个性质可以算出不同因素的比例

     

    这里的w就是我们想要知道的权重,所以通过 求比较矩阵的最大特征值所对应的特征向量,就可以获得不同因素的权重,归一化一下(每个权重除以权重和作为自己的值,最终总和为1)就更便于使用了。(实际上写这篇博客就是因为,重新翻了线代的书才好不容易理解这里的,就想记录下来)

     

    这里补充一点线性代数的知识:

        n阶矩阵有n个特征值,每个特征值对应一个n维特征列向量,特征值和特征向量的计算方法这里就省略了,反正书中的程序是直接用matlab 的eig函数求的

     

    这里不能忘了,我们给出的比较矩阵一般是不满足一致性的,但是我们还是把它当做一致矩阵来处理,也可以获得一组权重,但是这组权重能不能被接受,需要进一步考量

    例如在判断因素1,2,3重要性时,可以存在一些差异,但是不能太大,1比2重要,2比3 重要,1和3比时却成了3比1重要,这显然不能被接受

     

    于是引入了一致性检验:

              一致性的检验是通过计算一致性比例CR 来进行的

              

              当 10 . 0 < CR 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 

     

    CI的值由判断矩阵计算获得,RI的值查表获得,具体的计算公式这里就略去,重点是理解为什么要做一致性检验

     

     

    接下来解决第二个问题:每一个候选方案在每一个因素下又应该获得多少权重

     

    这里则需要将不同候选方案,在不同因素下分别比较,具体的比较方法,还是使用比较矩阵,只不过之前准则层的比较矩阵比较的对象是因素,这里比较的是某一因素下,候选方案的优劣, n个因素则需构造出来n个比较矩阵

    例如在工作环境的因素下,工作1与工作2相比为 :4:2,工作2与工作3=2:1  工作1:工作3=6:1.,这样构造一个矩阵,再用之前的一致性矩阵的方法就可以求出一个权重,然后相对应因素(这里是工作环境)所拥有的权值就可以按这个权重比例分配给不同候选物或人。

     

    其他因素同理

     

     

    至此两个问题就都得到了解决

    最终将每个候选物、人从不同因素获得的权值求和,就可以得到不同候选对于目标层的权值大小,继而可以根据值的大小,来选出优劣

     

    对于第一部分的总结:

     

    • 通过对层次分析法的基本了解,不难发现层次分析法对人们的思维过程进行了加工整理,提出了一套系统分析问题的方法,为科学管理和决策提供了较有说服力的依据。 

     

    • 但很明显的缺点是,整个分析过程似乎都是依赖于人的主观判断思维,一来不够客观,二来两两比较全部人为完成,还是非常耗费精力的,尤其是当候选方案比较多的时候

     

     

     

    文章的第二部分:


    层次分析法的变形应用(也可能本来就是这样用的,只不过参考书上没这样说,外语
    论文没细看)解决最优教练选择问题

     

    目标:选最优教练

     

    准则:  

     

     

    1. 职业生涯所带队伍的胜率      
    2. 职业生涯所带队伍的胜场            
    3. 从教时长(年)          
    4. 职业生涯所带队伍获奖状况(化成分数)

     

      

    候选:  众多教练

     

    准则层比较矩阵获得

     

     

    • 准则层的比较矩阵好构造 ,作6次两两比较,就可以获得4*4的比较矩阵

     

     

    候选层比较矩阵

     

    每一个准则对应下来的 候选层 已经有定量的数据了。 这里其实就不再需要候选层比较矩阵了, 因为有4000个教练的话, 得比4000*3999次,可以直接利用定量的数据计算权重

    • 例如“职业生涯所带队伍的胜场” 这一准则对应到每个教练都有直接相应数据的,例如教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90. 此时该准则下得到的分数, 就应当按照 10:5:9 的比例来进一步划分。 

     

    类似的,胜率准则 下就根据  “胜率   计算权重分配比例。 从教时长准则下就根据 “从教时间的年数” 计算权重分配比例

     

    这里又有两点可以注意:

     

    1.不同因素下数据的量纲和性质不一样,直接用数据作比来分配,不一定合适,比如胜率越要接近1越难,0.7比胜率0.5  和胜率0.9比0.7  ,后者比值比前者小,这显然不合适。这里可以利用指数函数和对数函数对数据先做一次处理, 再作为权重分配的依据。

     

    2.这里的用定量数据作比获得的矩阵显然满足一致性要求,不需要做一致性检验。以职业生涯所带队伍的胜场数为例,如果教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90。 那么 A:B :C 无论怎么作比, 都不会违反 10:15:9 的一致性。 

     

    综上就对层次分析法完成了定性定量结合的应用,以及对多个候选方案的比较(其实只是就是用程序控制数据作比,我们水平有限,能成功应用该方法已经不容易了)

     

    很遗憾的是比赛时编写的代码存放的优盘不慎丢失, 没有办法把代码共享出来, 这里只能将书中的代码贴出。比赛建模时, 就是在这个代码基础上进行修改实现。 只要理解了下列代码,编写符合自己需求的程序, 应当是水到渠成的事。

     

     

     

     matlab 代码(对应于文章第一部分选 Leader 的内容):

     

     

    clc,clear
    fid=fopen('txt3.txt','r');
    n1=6;n2=3;
    a=[];
    for i=1:n1
    	tmp=str2num(fgetl(fid));
    	a=[a;tmp]; %读准则层判断矩阵
    end
    for i=1:n1
    	str1=char(['b',int2str(i),'=[];']);
    	str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);
    	eval(str1);
    	for j=1:n2
    		tmp=str2num(fgetl(fid));
    		eval(str2); %读方案层的判断矩阵
    	end
    end
    ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
    [x,y]=eig(a);  % matlab eig(a) 返回矩阵的特征值和特征向量, 这里的 x 为矩阵 a 的 n 个特征向量, y 为矩阵 a 的 n 个特征值
    lamda=max(diag(y));  %  eig 函数返回的 y 是矩阵形式保存的, dig(y) 提取对角线上的n 个特征值到一个数组中, 求出最大特征值 lamda
    num=find(diag(y)==lamda);  % 返回最大特征的索引
    w0=x(:,num)/sum(x(:,num));  % x( :num) 为最大特征值所对应的那一列特征向量。 w0 中准则层计算出的 包含归一化后的n 个权重值
    cr0=(lamda-n1)/(n1-1)/ri(n1)
    
    for i=1:n1 % 循环 n 个维度, 针对每个维度, 都计算一次方案层的比较矩阵及其权重值
    	[x,y]=eig(eval(char(['b',int2str(i)])));
    	lamda=max(diag(y));
    	num=find(diag(y)==lamda);
    	w1(:,i)=x(:,num)/sum(x(:,num));
    	cr1(i)=(lamda-n2)/(n2-1)/ri(n2);
    end
    cr1, ts=w1*w0, cr=cr1*w0

     

    txt3.txt 中的内容, 前6行为准则层的 6 x 6 比较矩阵, 后 18 行则为 6 个准则下, 各自的 3 x 3 的比较矩阵。 

    1 1 1 4 1 1/2
    1 1 2 4 1 1/2
    1 1/2 1 5 3 1/2
    1/4 1/4 1/5 1 1/3 1/3
    1 1 1/3 3 1 1
    2 2 2 3 3 1
    1 1/4 1/2
    4 1 3
    2 1/3 1
    1 1/4 1/5
    4 1 1/2
    5 2 1
    1 3 1/3
    1/3 1 1/7
    3 7 1
    1 1/3 5
    3 1 7
    1/5 1/7 1
    1 1 7
    1 1 7
    1/7 1/7 1
    1 7 9
    1/7 1 1
    1/9 1 1

     

    再上一段 JAVA 代码, 方便 JAVA 童鞋参考, 这部分仅仅展示了如何用JAVA 代码进行准则层比较矩阵计算 。 

     

    import org.apache.commons.math3.linear.*;
    
    
    public class MatrixTester {
        public static void main(String[] args) {
    
            // Create a real matrix with two rows and three columns, using a factory
            // method that selects the implementation class for us.
            double[][] matrixData = {   {1d,    1d,     1d,     4d,     1d,     1d/2d},
                                        {1d,    1d,     2d,     4d,     1d,     1d/2d},
                                        {1d,    1d/2d,  1d,     5d,     3d,     1d/2d },
                                        {1d/4d, 1d/4d,  1d/5d,  1d,     1d/3d,  1d/3d },
                                        {1d,   1d,     1d/3d,  3d,     1d,     1d },
                                        {2d,    2d,     2d,     3d,     3d,     1d },
                                    };
            RealMatrix m = MatrixUtils.createRealMatrix(matrixData);
    
    
    
            // One more with three rows, two columns, this time instantiating the
            // RealMatrix implementation class directly.
            double[][] matrixData2 = {{1d, 2d}, {2d, 5d}, {1d, 7d}};
            RealMatrix n = new Array2DRowRealMatrix(matrixData2);
    
            // Note: The constructor copies  the input double[][] array in both cases.
            // Now multiply m by n
    //        RealMatrix p = m.multiply(n);
    //        System.out.println(p.getRowDimension());    // 2
    //        System.out.println(p.getColumnDimension()); // 2
    //
    //        // Invert p, using LU decomposition
    //        RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();
    
    
            RealMatrix D = new EigenDecomposition(m).getD();
            RealMatrix V = new EigenDecomposition(m).getV();
    
            for(int i=0; i<D.getRowDimension();i++)
            {
                System.out.println(D.getRowMatrix(i));
            }
    
            for(int i=0; i<V.getRowDimension();i++)
            {
                System.out.println(V.getRowMatrix(i));
            }
    
            // 特征值
            double maxLamda;
            int columIndexForMaxLamda=0;
            maxLamda=D.getEntry(0,0);
    
            for(int i =0, j=0; i<D.getRowDimension()&&j<D.getColumnDimension();i++,j=i)
            {
                double lamda = D.getEntry(i,j);
                if(maxLamda<lamda)
                {
                    maxLamda=lamda;
                    columIndexForMaxLamda = j;
                }
                System.out.println(lamda);
            }
    
            // 输出尚未做归一化 w1, w2, w3, w4, w5, w6 , 
            System.out.println(V.getColumnMatrix(columIndexForMaxLamda));
    
        }
    }
    

     

     

    展开全文
  • 层次分析法(评价问题) 一般的层次分析方式 本质:层次分析就是给两两比较的指标进行量化比较实现权重的大小(专家打分) 1.确定评价的标准,目标,可选的方案 层次结构图 目标层:最终目标 准则层:各项指标 方案层:哪些...
  • 在一组多变量的数据中,很多变量常常是一起变动的。一个原因是很多变量是同一个驱动影响的的结果。...主成分分析是一个定量的严格的可以起到简化作用的方法。它产生一组叫做主成分的新变量,每一个主成分是原始变...
  • 主成分分析法(三):计算步骤

    万次阅读 多人点赞 2019-03-29 20:17:08
    主成分分析法(三):计算步骤 目录 一:主成分分析简述 二:主成分分析法步骤 1)对原始数据进行标准化处理 2)计算相关系数矩阵R 3)计算特征值和特征向量 4)选择 p ( p ≤ m )个主成分,计算综合...
  • 材料主要是关于spss数据分析的相关内容,其中较为重点地介绍了因子分析这一章,即spss因子分析基本步骤和概念分析
  • SPSS:因子分析步骤

    万次阅读 多人点赞 2018-10-15 22:37:33
    因子分析步骤  某对外汉语培训中心对在该中心学习的外国留学生进行了一项汉语学习动机问卷调查。使用李克特五级式量表。第一级为最不喜欢,第五级为最喜欢。随机抽取18人参加调查。其中—个项目调查的是“内在动机...
  • 文章目录1.序2.动态规划的基本概念[^1]3.动态规划算法的基本思想[^2]4....这篇文章主要介绍动态规划算法的基本思想、使用动态规划算法求解问题的基本步骤、动态规划算法的两个基本要素以及一些经典的动态规划问题。...
  • 层次分析法实例与步骤 结合一个具体例子,说明层次分析法基本步骤和要点。
  • 回归分析基本步骤

    万次阅读 2017-01-15 22:34:44
    回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。拟合优度检验 1 一元回归方程 2 多元回归方程 回归方程的显著性检验 回归系数的显著性检验 残差分析 异常值检验 多重共线性检验通过样本...
  • 建模方法(四)-因子分析定义和应用

    万次阅读 多人点赞 2018-08-20 20:58:05
    因子分析(factor analysis)也是一种降维、简化数据的技术。 它通过研究众多变量之间的内部依赖关系,使用少数几个“抽象”的变量来表示其基本的 数据结构。这几个抽象的变量被称作“因子”,能反映原来 众多变量的...
  • 元计算技术人员为大家介绍有限元基本思想及计算步骤
  • 分治基本步骤

    千次阅读 2019-07-26 00:31:03
    分治基本步骤 分治在每一层递归上都有三个步骤: 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;...
  • 层次分析法(AHP)基础概念整理+步骤总结

    万次阅读 多人点赞 2019-07-08 17:29:17
    层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层,最上面为目标层,最下面为方案层,中间是准则层或指标层。 最顶层是我们的目标,比如说选...
  • 主成分分析操作步骤

    千次阅读 2020-07-22 21:44:44
    操作步骤: 1、原始数据 2、将原始数据标准化 3、进行降维因子分析。 利用matlab处理数据 4、求f矩阵 如果想得出所有因素的情况下,综合评估。可将f矩阵的每一行进行加权平均。(除原有因素的数量),然后...
  • 面板数据分析步骤及流程-R语言

    万次阅读 多人点赞 2016-08-16 16:49:55
    面板数据模型选择及分析步骤;附R语言代码
  • 主成分分析法基本介绍及其Matlab实现
  • 本期主要内容主要是对盐城滨海湿地野外采样的总结,在论文写作中指标权重的赋予,以及分享几套宁波大学特有的PPT模板。 从7月28日-8月2日,我们在盐城呆了6天,从南到北跑了一千多公里。推荐一个软件APP:六只脚,...
  • 主成分分析在SPSS中的操作应用

    万次阅读 多人点赞 2018-07-18 23:32:33
    主成分分析法简介 主成分分析数学模型 对沿海 10 个省市经济综合指标进行主成分分析 生成图表 方法一 方法二 方法一结果 方法二结果 参考链接 主成分分析原理 ​ 主成分分析是设法将原来众多具有一定...
  • 讲述了统计和数据处理中的因子分析方法的原理、数学模型,并以实际案例为例,介绍了其应用方法和步骤,值得学习。
  • 数学建模:层次分析法实例以及代码

    万次阅读 多人点赞 2020-11-22 22:06:09
    目录层次分析法的思想层次分析法步骤具体案例(市政工程项目建设决策)1.问题提出2.建立递阶层次结构3.构造判断矩阵(成对比较阵)并赋值4.层次单排序(计算权向量)与检验(一致性检验)计算权向量一致性检验5.层次总...
  • 《编译原理》构造 LR(1) 分析表的步骤与例题解析
  • 梯度下降算法原理讲解——机器学习

    万次阅读 多人点赞 2019-01-21 20:27:48
    梯度下降算法 2.1 场景假设 梯度下降基本思想可以类比为一个下山的过程。 假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,...
  • 流程分析法

    千次阅读 2019-10-02 20:58:22
    一、流程分析法的定义 主要是针对测试场景类型,针对测试场景的测试项下的测试子项进行设计,是从白盒测试设计方法中的路径覆盖分析法借鉴过来的一种方法。 在白盒测试中,路径就是指函数代码的某个分支组合,...
  • 实用干货!因子分析超全步骤总结

    千次阅读 2020-07-13 12:15:18
    因子分析是统计数据分析...二、分析步骤 Step1数据准备: 依据研究目的,收集相关数据。本例中就是我们收集得到的14个问题的有关数据。 因子分析要求数据一定为定量数据,问卷数据一般为量表题。 Step2选...
  • 主成分分析

    万次阅读 多人点赞 2014-03-12 10:07:24
    主成分分析 在实际问题中,我们经常会遇到研究多个变量的问题,而且在多数情况下,多个变量之间常常存在一定的相关性。由于变量个数较多再加上变量之间的相关性,势必增加了分析问题的复杂性。如何从多个变量中综合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,896
精华内容 49,558
关键字:

内容分析法的基本步骤