首页 > 其他分享 >【零基础数模系列】模糊分析法、层次分析法和方差分析法

【零基础数模系列】模糊分析法、层次分析法和方差分析法

时间:2024-01-19 17:15:58浏览次数:25  
标签:disp 指标 特征值 矩阵 方差分析 分析法 数模 归一化 向量

前言

作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可的人都可以理解,而无需其他数模知识,涉及任何新概念都会先讲解后使用

所以我就打算把自己学完之后的笔记整理出来,其中每一篇文章中可能含有直接从其他文章中搜集过来的公式,因为这些文章原本只是我自己的笔记,我懒得敲公式,只是写完之后想着整理出来,弘扬一下互联网精神,于是就有了这个系列。

 

模糊分析https://zhuanlan.zhihu.com/p/32666445

先把得分映射为离散分段评价,但又不一一对应而是模糊的映射为所有段,只不过不同段的概率不同(即隶属度不同),比如6分颜值可以在四挡制“很好、比较好、比较差、很差”中映射为0.2 0.5 0.2 0.1,即6分颜值被评价为这四档的可能性由矩阵V1=[0.2 0.5 0.2 0.1]来描述,那么若描述某人的指标有n项而颜值是第一项,这个人颜值的模糊分档便是矩阵V1了,把描述这个人n个指标的矩阵Vi堆叠起来就组成矩阵R,内含这个人的每项指标的归属档位,第i行就是指标i的模糊档位。然后在给定一个权重矩阵(行向量)Wn描述各个指标的重要程度,那么B=W·R就能得出这个人整体的模糊档位,哪个档位分值最大就认为它属于哪个档位,最后把模糊档位还原为精确定分,即解模糊,只要对各个档位给出级分列向量S,即各档位对应的模糊分数,如“很好、比较好、比较差、很差”分别对应9 7 5 3,那么S=[9 7 5 3]’,最后只要B·S即可得出综合打分。

那么V、W、S矩阵分别怎么确定呢?W行向量是各指标的权重指标,依照具体要求主观给出即可。Vi向量是 某特定的人的指标i的分数 所对应的评级,即属于分数->评级的映射,而Si向量是评级->分数的映射。很明显两者应该有一些关系。但也不全如此,Si是一个数,即特定评级对应特定分数,而Vi是一个行向量,即特定分数对应多个评级的可能性。因此我们往往先给出S,然后依照S对每个得分想出一个V,这个过程可以有主观因素但也要有一定客观性(比如按照距离各个模糊分级的Si值的距离的倒数的比值来分配隶属度)。然后根据特定人的分数具体是多少来决定他的V是多少

这种方法其实就是升级版的用加权平均数进行比较的方法

 

层次分析法评价(AHP) https://zhuanlan.zhihu.com/p/448412538

先给出目标层(1层)、准则层(1~n层)、方案层(1层),

准则层既为评价指标,方案层既为“候选人”,准则层的评价指标我们无法直接给出比较客观的权重向量W,那么定义判断矩阵A,其中aii=1,aji=1/aij,aij就是标度,我们用标度来表述各指标重要程度的差别,比如aij=1代表ij指标重要重要,aij=5代表i比j明显重要,aij=9代表i比j强烈重要,234678则代表重要程度中间值。

然后便要进行层次单排序了,即根据判断矩阵A求出权重向量W,有两种求法,分别为方根法和和法

方根法求出A每行的几何平均数得到未归一化的权重列向量,然后进行归一化即可得到权重列向量

和法将A矩阵的每个列向量归一化,然后求每行的算数平均数得到为归一化的权重列向量,在进行归一化即可得到权重列向量。

//要注意区分单位化和归一化,单位化和归一化都是在确保向量各元素比值不变的情况下调整变量,即方向不变大小伸缩,单位化是把向量伸缩到模为1为止,归一化是把向量伸缩到元素之和为1为止

然后要求解最大特征根Lambda_max和C.I值,我们有

IMG_256

其中W是权重向量,AW是A·W的每一行的sum值构成的列向量,AW/W是向量的元素点乘,得到了评价指标i的特征,然后每个指标的特征值的平均数即为最大特征根Lambda_max,随后即可得到C.I值

根据矩阵阶数,我们查表可知对应的R.I值,然后即可得到CR值(CR=CI/RI)

表是类似于这样的:

CR值刻画的是这个评价体系有没有逻辑问题,比如aij*ajk>1而aik<1便是犯了逻辑错误,我们很难让aik完全等于aij*ajk,但无疑aik完全等于aij*ajk恒成立是最好的,最符合逻辑的,那么,我们将这个定义为“好”,CR值刻画的就是我们给出的这样一个评价体系是否足够“好”

CR<0.1即可认为A的一致性程度被认为在容许的范围内,如果CR>=0.1说明我们给出的判断矩阵出现了逻辑错误,需要对判断矩阵进行修正。

这次,我们便完成了层次单排序(即确定权值向量)和一致性检验(检验确定权值向量的判断矩阵的合理性),我们已经得到了准则层的权值向量,接下来便要进行层次总排序和第二次一致性检验了

想要得出候选人的评分,我们既需要个指标的权重,还对方案层的各个“候选人”的各大指标进行打分,得到候选人的各指标得分。层次总排序就是确定每个指标下各个候选人的得分情况,其中我们把每个指标的得分情况用一个向量来表示,这个向量的确定用和此前权值向量的确定类似的做法,先给出各个候选人在这一指标上的判断矩阵,然后进行“层次单排序和一致性检验”即可得到该指标的各候选人得分列向量,得分向量绑在一起就得到了得分矩阵,每个人的综合得分自然就是各指标得分的加权平均数,不难意识到得分矩阵和权值向量做向量乘法所得的向量的各个数便代表每个候选人的综合得分。

然后,抽象的地方来了,让我们冷静一下,以面对下面这个头脑风暴:

假设我们已知W向量,对于指标i而言,Aij(1<=j<=n)无疑刻画了指标i相对于其他指标的重要程度,将A的第i行抽出来组成行向量bi,那么设yi=bi·W这个对乘积无疑就是相对于其他指标的重要程度的加权平均数,即综合重要程度,这个“权”就恰恰是各指标的重要程度。那么列向量Y=(y1 ... yn)’无疑就描述了各个指标的综合重要程度,很显然Y理应和w成正比即Y=λ*W,这样的W才是“好”的W,又由A=[b1;b2;...;bn],yi=bi·W得Y=A·W,因此AW=λ*W,换句话说好的W就应该是A的特征向量。

因为根据A的性质(aij=1/aji)不难从数学上证得rank(A)=1,|A|>0也就是说A有且只有一个正实数特征值,因此A的正特征值对应的特征向量就是一个好的权重向量了,由这种方法确定出来的权重向量要比“方根法”和“和法”要合理的多。

但是,由于matlab的计算是用浮点数来完成的,三分之一会被截断成0.3333..,计算过程中还会发生各种浮点数误差,因此计算机计算出来的rank(A)极有可能不等于1,计算出来的实特征向量也很可能不止有一个,但我们要清楚,其他的实特征变量不论正负都不过是浮点误差所带来的,根据特征值的几何意义即该矩阵所表示的线性变换在另一基向量描述的线性空间中伸缩的倍数,我们可以知道浮点误差所带来假实数特征值的绝对值必定是很小的,因此我们只要去最大的正实数特征值,就可以确保取到正确的那个特征值,对应的特征向量a就是未归一化的权值向量。我们还可以根据最大特征根的定义进一步从数学上证明,Lambda_max就等于这个最大正特征值,便可更好地理解到最大特征根为什么叫最大特征根了。

因此我们拿到评价矩阵后,只需要求出最大特征值所对应的特征向量,在将这个特征向量归一化即可得到权值向量,最大特征值即为最大特征根,然后轻松求出CI,查表得RI,轻松得到CR即完成一致性检验,代码如下:

A=[1 3 5;0.33 1 3;0.2 0.33,1];

[n,n]=size(A);

[V,D]=eig(A);%求得特征向量和特征值

%求出最大特征值和它所对应的特征向量

tempNum=D(1,1);

pos=1;

for h=1:n

if D(h,h)>tempNum

tempNum=D(h,h);

pos=h;

end

end

w=abs(V(:,pos));%w要么全正要么全负,abs确保全正化

w=w/sum(w);

t=D(pos,pos);

disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');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 1.60 1.61 1.615 1.62 1.63];

CR=CI/RI(n);

if CR<0.10

disp('此矩阵的一致性可以接受!');

disp('CI=');disp(CI);

disp('CR=');disp(CR);

else disp('此矩阵的一致性验证失败,请重新进行评分!');

end

最后,如果准则层指标太多怎么办?分层!把准则层分为准则层和子准则层(还可以有子子准则层etc),每个“点-下一层”的评价矩阵并求出权值矩阵,然后进行一致性检验。在根据权值向量求出最底准则层的权值向量,在得出每个方案层的候选人综合评分即可。

改进方法:每层指标数不要超过9个,若超过则分层。评价矩阵可以有三人独立提出最后用德尔菲法综合得到最终评价矩阵

(不要用什么“询问专家得权值法”,那评委肯定怀疑你怎么还作弊问老师呢)

 

方差分析法

用于试图证明某因素对结果毫无影响或者影响极大时使用方差分析发

对总体参数进行假设检验时,首先要给定1个原假设H0,H0是关于总体参数的描述,与此同时存在1个与H0相对立的备择假设H1,H0和H1有且仅有1个成立。然后进行通过一次随机仿真实验进行抽样,然后分析结果,若发生了小概率事件,可依据“小概率事件在一次实验中几乎不可能发生”的理由,推翻原假设,即拒绝原假设H0,从而说我们有1-Alpha 的把我说明备择假设H1成立;反之,小概率事件并没有发生,就没有理由拒绝H0。因此我们还要确定多大概率的时间算小概率事件,即显著性水平Alpha,一般设置Alpha=0.05

我们这里只介绍单因素方差分析

只考虑一个因素A对于所关心的试验结果的影响。A 取k 个水平,在每个水平上作 ni次试验(其中i=1,2,⋯,k )试验过程中除A 外其它影响试验结果的因素都保持不变(只有随机因素存在)。我们的任务是从试验结果推断,因素A 对试验结果有无显著影响,即当A 取不同水平时试验结果有无显著差别。

记第i个水平的第j个观测值为Yij,则Yij=ai0+eij(ai0是Y第i行的平均数,即A取第i个水平时实验结果的均值,eij表示每次实验的随机误差)

eij作为随机误差,自然是相互独立的。一般还假设eij都服从均值为0方差相同的某个正态分布。

记U=Y中每个元素的平均值

则记ai=ai0-U,表示由不同的A水平带来的附加效应

那么Yij=U+ai+eij

因此原假设A对实验结果Y毫无影响的等价表述就是a1=a2=...=ak=0

Yij并不相同,这其中有随机误差的因素,还可能有由不同水平的A所带来到底差异化因素,那么我们分别定义SS、SSA、SSE,分别用来刻画总偏差、A带来的偏差和随机因素带来的偏差

以下三个式子是很自然的定义

SSA

代入即可证明SS=SSE+SSA

这里要引入一个概念,自由度,即样本所能提供的独立的信息的个数,一般来说,自由度等于独立变量数减掉其衍生量数。自由度的大小会影响方差分析的结果和检验的效力。

拿SSA为例,当我们已知的情况下,我们只要知道k-1个即可算出SSA,也就是说这组样本中其实只有k-1个独立数据,因此SSA的自由度应该是k-1,那么用来表示因素A带来的偏差的MSA就应该等于SSA/(k-1)而不是SSA/k,(这么做其实不是很有道理但是很好用),同样设ni的和为N,则SSE=SS-SSA=(N-1)-(k-1)=N-k,因此表示随机因素带来偏差的MSE应该等于SSE/(N-k)。还不理解就看这个:https://www.zhihu.com/question/20099757/answer/26318750

统计学家指出,基于前面随机偏差服从正态分布的假设和基于自由度给出表示偏差的量的行为,我们可以认为当H0成立时MSA/MSE的值服从与F(k-1,n-k)分布,那么我们就可以用实际的MSA/MSE值和显著性水平Alpha来进行F检验了,如果MSA/MSE的值在F(k-1,n-k)中出现的概率小于Alpha,我们就拒绝接受H0,如果出现概率大于Alpha,我们则暂时没理由拒绝H0,即承认A与Y毫不相关,敏感性很低

整个过程可以用matlab的anova1函数来计算,还能自动绘图呐

注意,方差分析被命名为方差分析是因为表示偏差的变量的算法像是再算方差,但其实这个算法中并没有方差的出现,也与方差无关,表示偏差的变量的意义也和方差大为不同。

双因素方差分析略,暂未学习

 

  TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back     此页面的语言为中文(简体)   翻译为        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

标签:disp,指标,特征值,矩阵,方差分析,分析法,数模,归一化,向量
From: https://www.cnblogs.com/gongkai/p/17975083

相关文章

  • 【零基础数模系列】主成分分析
    前言作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可的人都可以理解,而无需......
  • 16理解函数模板
    理解函数模板模板的意义:对函数类型可以做修改函数模板:boolcompare(Ta,Tb)模板实例化:定义一个模板参数类型,进行一次函数的实例化模板函数:一个函数模板的实例化就是一个模板函数模板类型参数:T模板非类型参数:模板的实参推演:根据实参反推模板参数类型模板的特例化:为函数......
  • C++函数模板详解,轻松实现通用函数
    C++函数模板详解,轻松实现通用函数函数模板编写通用函数您也可以为独立的函数编写模板。其语法与类模板类似。例如,您可以编写以下通用函数来在数组中查找一个值并返回其索引:staticconstsize_tNOT_FOUND{static_cast<size_t>(-1)};template<typenameT>size_tFind(const......
  • 综合评价分析法
    综合评价法指的是运用多个指标对多个参评单位进行评价的方法,简称综合评价方法。综合评价是指某些数据封闭性通过多元化评价对数据封闭性的发展及方向进行一个综合的统计评价,从而来判断数据封闭性的走向和目标,这对任何一个数据封闭性或者行业化发展都有很大好处,所以综合评价是市场及......
  • C++ --- 函数模板
    函数模板C++的一种编程思想称为泛型编程,主要利用的技术就是模板。编写与类型无关的调用代码,是代码复用的一种手段。 模板是泛型编程的基础。C++提供两种模板机制:函数模板和类模板。函数模板:建立一个通用的函数,它用到的参数类型可以不确定,用一个虚拟类型替代。等到函数调用的时......
  • IPD(集成产品开发)细分市场利器:KBF分析法
    摘要:本文将介绍一种适用于细分市场组合分析的方法:KBF(购买决策因素),帮助企业在庞大的市场中开辟出新天地。在公司初步选定细分市场后,要对这些细分市场进行进一步分析。本文就将介绍一种适用于细分市场组合分析的方法:KBF(购买决策因素),帮助企业在庞大的市场中开辟出新天地。一、什么是KB......
  • IPD(集成产品开发)细分市场利器:KBF分析法
    摘要:本文将介绍一种适用于细分市场组合分析的方法:KBF(购买决策因素),帮助企业在庞大的市场中开辟出新天地。 在公司初步选定细分市场后,要对这些细分市场进行进一步分析。本文就将介绍一种适用于细分市场组合分析的方法:KBF(购买决策因素),帮助企业在庞大的市场中开辟出新天地。一、......
  • 六. 函数模板和类模板
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.引入在编写函数和类时,有时会出现这样的情况,具体实现方式完全一致,但因此参数类型、返回值类型、数据类型等因素的不同,导致不得不写多个函数或者类(因为C++是强类型语言,无法隐式转换,且有些......
  • 振弦读数模块开发时的要点
    振弦读数模块开发时的要点振弦读数模块是振弦采集仪中重要的组成部分,以下是开发时需要注意的要点: 1.确定采样频率和精度:振弦采集仪必须以足够高的频率和精度采集振弦信号,以确保数据的准确性和完整性。2.选择合适的传感器:振弦读数模块需要与振弦传感器配合使用,传感器的品质......
  • 数学建模之相关系数模型及其代码
    发现新天地,欢迎访问小铬的主页(www.xiaocr.fun)引言本讲我们将介绍两种最为常用的相关系数:皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数。它们可用来衡量两个变量之间的相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析(建模论文中最容易用错......