基于熵权灰色关联的开放式基金综合评价模型Matlab程序
- 格式:doc
- 大小:457.50 KB
- 文档页数:3
(完整版)五种灰色关联度分析matlab代码灰色邓氏关联度分析% P12 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_deng(x)s = size(x);len = s(2);num = s(1);ro = 0.5;for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len) = 0;for i = 2 : numfor k = 1 : lendx(i,k) = abs(x(1,k) - x(i,k));endendmax_dx = max(max(dx));min_dx = min(min(dx));r(1,1:len-1) = 1;for i = 2 : numfor k = 1 : lenr(i,k) = (min_dx + ro*max_dx)/(dx(i,k) + ro*max_dx);endendr1 = sum(r(2:num,:),2)/(len);改进灰色绝对关联度分析% P11 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_gjjd(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendc = 1;beta(1,1:len-1) = 0;w(1,1:len-1) = 0;for i = 2 : numtemp = sum(abs(x(i,:) - x(1,:)),2);for k = 1 : len - 1beta(i,k) = atan((dx(i,k) - dx(1,k))/(1 + dx(i,k)*dx(1,k)));if beta(i,k) < 0beta(i,k) = pi + beta(i,k);endw(i,k) = 1 - abs(x(i,k) - x(1,k))/temp;endendr = c./(c + tan(beta./2));wr = w.*r;r1 = sum(wr(2:num,:),2)/(len - 1);灰色绝对关联度分析% P18 -- The Study on the Grey Relational Degree and ItsApplication function r1 = gld_jd(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1r(i,k) = 1/(1 + abs(dx(1,k) - dx(i,k)));endendr1 = sum(r(2:num,:),2)/(len - 1);灰色T型关联度分析% P19 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_t(x)s = size(x);len = s(2);num = s(1);dx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = abs(x(i,j+1) - x(i,j));d_x = sum(dx(i,:),2)/(len - 1);x(i,:) = x(i,:)./d_x;enddx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1if dx(1,k)*dx(i,k) == 0r(i,k) = sign(dx(1,k)*dx(i,k));elser(i,k) = sign(dx(1,k)*dx(i,k))*min(abs(dx(1,k)),abs(dx(i,k))) / max(abs(dx(1,k)),abs(dx(i,k)));endendendr1 = sum(r(2:num,:),2)/(len - 1);灰色斜率关联度分析% P20 -- The Study on the Grey Relational Degree and Its Application function r1 = gld_xl(x)s = size(x);len = s(2);num = s(1);for i = 1: numx(i,:) = x(i,:)./x(i,1);dx(num,len-1) = 0;for i = 1 : numfor j = 1 : len - 1dx(i,j) = x(i,j+1) - x(i,j);endendr(1,1:len-1) = 1;for i = 2 : numfor k = 1 : len - 1r(i,k) = 1/(1 + abs(dx(1,k)/x(1,k+1) - dx(i,k)/x(i,k+1))); endendr1 = sum(r(2:num,:),2)/(len - 1);。
熵权法matlab实例熵权法是一种常用的多指标综合评价方法,它可以将多个指标的权重进行量化,并且可以避免主观因素对权重的影响。
在实际应用中,熵权法可以用来评价企业的综合实力、产品的质量、城市的发展水平等。
下面我们以matlab为例,介绍如何使用熵权法进行多指标综合评价。
1. 数据准备首先,我们需要准备好要评价的多个指标的数据。
这些数据可以来自于实际调查或者是已有的统计数据。
以评价企业综合实力为例,我们可以选择以下几个指标:- 资产总额- 净利润- 员工数量- 税收贡献我们将这些指标的数据保存在一个excel文件中,每个指标占据一列,每个企业占据一行。
2. 计算熵值接下来,我们需要计算每个指标的熵值。
熵值是用来衡量指标数据分布的离散程度的,熵值越大表示数据分布越离散,反之则表示数据分布越集中。
计算熵值的公式如下:$$E_i = -\frac{1}{ln(n)}\sum_{j=1}^{n}\frac{p_{ij}ln(p_{ij})}{ln(n)} $$其中,$E_i$表示第$i$个指标的熵值,$n$表示样本数,$p_{ij}$表示第$i$个指标在第$j$个样本中的占比。
我们可以使用matlab中的entropy函数来计算每个指标的熵值。
具体代码如下:```matlabdata = xlsread('data.xlsx'); % 读取数据[n, m] = size(data); % 获取数据的行数和列数E = zeros(1, m); % 初始化熵值向量for i = 1:mp = data(:, i) / sum(data(:, i)); % 计算占比E(i) = -sum(p .* log(p)) / log(n); % 计算熵值end```3. 计算权重接下来,我们需要根据每个指标的熵值计算其权重。
权重是用来衡量每个指标在综合评价中的重要程度的,熵值越小表示指标的重要程度越高。
基于层次分析法的灰⾊关联度综合评价模型第1章基于层次分析法的灰⾊关联度综合评价模型灵活型公共交通系统是⼀个复杂的综合性系统,单⼀的常规评价⽅法不能够准确对系统进⾏全⾯评价【39】,这就要求在进⾏灵活型公共交通系统评价时,结合系统固有特点,根据各种评价⽅法的优缺点,构建适合该系统的综合评价模型。
本章以灵活型公共交通系统评价指标体系为基础,参考常规型公共交通系统评价⽅法,建⽴了基于层次分析法的灰⾊关联度综合评价模型。
1.1评价⽅法适应性分析灰⾊关联度分析法基于灰⾊系统理论,是⼀种多指标、多因素分析⽅法,通过对系统的动态发展情况进⾏定量化分析,考察系统各个要素之间的差异性和关联性,当⽐较序列与参考序列曲线相似时,认为两者有较⾼关联度,反之则认为它们之间关联度较低,从⽽给出各因素之间关系的强弱和排序【50】。
与传统的其它多因素分析法相⽐【80】【81】【82】,灰⾊关联度分析法对数据量要求较低,样本量要求较少,计算量较⼩,可以利⽤各指标相对最优值作为参考序列,为最终综合评价等级的确定提供依据,⽽不必对⼤量实践数据有过⾼要求,能够较好解决灵活型公共交通系统作为新型辅助式公系统没有⾜够的经验数据⽀撑其模型参数的问题。
此外,灵活型公共交通系统评价体系是基于乘客、公交企业、政府三⽅主体的综合评价体系,涉及因素较多,指标较为复杂,部分指标之间存在关联性和重复性,信息相对不完全,⽽灰⾊系统的差异信息原理以及解的⾮唯⼀性原理,可以很好的解决这⼀问题【79】。
综上所述,认为灰⾊关联度分析法⽐较适合于灵活型公共交通系统的综合评价。
然⽽灰⾊关联度分析法将所有指标对于总⽬标的影响因素⼤⼩视作等同,没有考虑指标权重的影响,评价值可信度较低,应当通过科学的⽅法,确定指标权重,将其与关联度系数相结合,增加评价结果的科学性和有效性【83】。
常见的权重确定⽅法包括,专家打分法、等权重法、统计试验法、熵值法等。
等权重法不能很好的体现不同指标影响程度的差异性,并且在综合评价值相差不⼤时不利于⽅案的选择【84】;专家打分法、统计试验法评价的主观性较⾼,并且不适⽤于指标较多的情况【85】;⾏和正规化法、列和求逆法等指对判断矩阵的⼀部分数据进⾏利⽤,结果可信度不⾼【86】;最⼩偏差法、对数回归法等,利⽤同⼀指标不同⽅案值,认为变化程度较⼤的指标传递更多信息,应具有较⾼权重,然⽽对于灵活型公共交通系统单⽅案综合⽔平等级评价的情况,并不适⽤。
matlab灰色预测模型函数Matlab是一种广泛应用于科学计算和工程领域的软件工具,它提供了许多函数和工具箱,用于数据分析和建模。
其中一个重要的函数是灰色预测模型函数,它可以用来预测和分析时间序列数据。
本文将介绍灰色预测模型函数的原理和应用,并通过一个示例来演示其使用方法。
灰色预测模型是一种基于灰色系统理论的预测方法,它适用于样本数据较少、不完整或不规律的情况。
在灰色预测模型中,数据被分为两类:发展数据和规律数据。
发展数据是指拥有较完整信息的数据,规律数据是指缺乏完整信息的数据。
通过对规律数据进行处理和建模,可以预测未来数据的趋势和变化。
在Matlab中,可以使用灰色预测模型函数进行数据预测和分析。
该函数可以通过输入历史数据和需要预测的时间步长来生成预测结果。
具体的使用方法如下:1. 导入数据:首先需要导入需要预测的时间序列数据。
可以使用Matlab中的数据导入函数来读取数据文件或手动输入数据。
2. 数据预处理:对导入的数据进行预处理,包括去除异常值、平滑数据等。
可以使用Matlab中的数据处理函数来完成这些操作。
3. 构建灰色模型:使用灰色预测模型函数来构建灰色模型。
该函数需要输入历史数据和需要预测的时间步长。
4. 模型评估:对构建的灰色模型进行评估,包括计算预测误差、拟合度等指标。
可以使用Matlab中的统计函数来完成这些计算。
5. 预测结果:根据构建的灰色模型,可以生成未来数据的预测结果。
可以使用Matlab中的预测函数来完成这一步骤。
下面通过一个示例来演示灰色预测模型函数的使用方法。
假设我们有一个销售数据的时间序列,我们希望预测未来三个月的销售额。
首先,我们需要导入销售数据,并进行数据预处理。
然后,我们可以使用灰色预测模型函数来构建灰色模型。
最后,我们可以通过预测函数来生成未来三个月的销售额预测结果。
在实际操作中,我们可能还需要对模型进行参数调优和模型选择。
可以使用交叉验证等方法来选择最优的参数和模型。
MATLAB实现灰色预测程序灰色预测很好的东西呐,······~~··`~··~~~~~~~~~~~~~~~~~~~~~````````````` fon [feval,au,ec,C,P]=GM1_1(x, rif nrgin<2myar=0;end[mx,nx]=size(x;if mx==1x=x';endn=length(x;for i=2:nz(i-1=0.5*x1(i+0.5*x1(i-1;endY=x(2:end;B(:,1=-z;2/au(1;yc(1=x(1;for k=1:n+myear-1y1(k+1=pm*exp(-au*k+a(2/au(1;yc(k+1=y1(k+1-y1(k;endfeval=yc';ex=ec./x;r=0;rou=0.5;for k=1:nr=r+rou* s(ec(k+rou*max(a (ec; endr=r/n;%原始序列的标准差s1=std(x;%计算残差的标准差s2=std(ec;%计算CC=s2/s1;%计算后验概率deta=ec-mean(ec;index=fineta<0.6745*s1;P=length(index/n;%%if C<0.35&P>0.95disp('预测精度为一级'elsP>0.8disp('预测精度为二级'elseif >0.7disp('预测精度为三级'elsedisp('预测精度过低,需要对模型进行修正'endif r>0.6disp('关联度符合检验要求'endt1=1:length(x;t2=1:lengt;plot(t1,x,'b--+',t2,feval,'r-o'legend('原始数据','预测数据'另一个程序function [y,p,e]=huise_1_1(X,k %灰色模型的malab程序%Example [y,p]=gm_1_1([200 250 300 350],2%接口描述: X的预测的初始数列,|X|>4,K是指向后进行预测的个数%命令格式:程序保存的文件名,eg:huise.m 则命令是: huise([579.8 547.5 527.0 492.3 437.0],5if nargout>3;r('Too maoutput argument.';enif nargin==1,k=1;x_orig=X;elseif ==0|nargin>2errr('Wrong nu arguments.';endx_rig=X;predict=k; %AGO 处理,即是对初始数列进行一阶累加x=cumsum(x_orig; %计算系数(a 和 u------------------------n=leh(x_orig; %生成矩阵 Bfor i=1:(n-1;B(i=-(x(i+x(i+1/2;enB=[B' ones(n-1,1]; %生成矩阵 Yfor i=1:(n-1;y(i=x_ori(i+1;edY=y'; %计算系数 a=au(1 u=au(2au=(inv(B'*B*(B'*Y; %--------------------------------------------------------%把huise模型公式转换成符号coef1=au(2/au(1;coef2=x_or (1-coef1;co3=0-au(1;costr1=nm2str(coef1;costr2=numstr(abs(coef2;costr3=ntr(coef3;eq=strcat(ctr1,'+',costr2,'e^',costr3,'*(t-1'; %计算每一个值for t=1:(n+predictmcv(t=co1+coef2*exp(coef3*(t-1;endx_mcv0=diff(mcv;x_mcve=[x_orig(1 x_mcv0] %输出图形中的各点x_c_error=x_orig_n-x_mcv;x_errr=mn(abs(x_c_error./x_orig_n;if x_error>0.2 %相对误差的均值disp('del disqualification!';elseif x_error>0.1dip('model check out';disp('model is perfect!';endplot(1:n,x_orig,'o',1:n+predict,x_mcve;p=x_mcve(end-predict+1:end; %画出预测模型和初始数列的点xlabel('年份(从第一个数据年份起';ylabel('产水量(万吨)';tie('灰度模型 GM(1,1';grid ony=eq;e=x_error;p=x_mcve(end-predict+1:end;所有文档>>学术论文>>会议论文>>灰色GM(1,N模型在经济中的预测与应用/p-137710835384.html。
熵权法matlab代码基于熵权法的多理策略决策MATLAB代码rand('state',0) % 产生了每次随机运行的结果一致 %n=5; %模型有5个变量y=[]; %存放各个系数for i=1:ny(i)=input(sprintf('模型变量 y%d:',i));endQ=input('期望值 Q='); %定义期望值A=[]; %放各约束条件for i=1:nA(i,:)=input(sprintf('约束条件 %d :',i)); endb=input('约束条件b=');x=ones(1,n); %定义变量Aeq=[]; beq=[]; %定义等式约束lb=zeros(1,n);ub=Inf*ones(1,n); % 无约束[xmin,maxent]=maxent_lp(x,y,A,b,Aeq,beq,lb,ub); disp(sprintf('最优裁判结果为:'));disp(xmin);disp(sprintf('期望值Q = %.3f',0.5*maxent+Q)); A=[A; Aeq]; %合并等式与不等式方程组b=[b;beq]; % 合并等式与不等式约束c=[y zeros(1,size(A,1))]; % 目标函数右边系数A=[A eye(size(A,1))]; % 左边系数x=[x zeros(1,size(A,1))];[x,y]=linprog(-c,A,b,[],[],x-ub,x-lb); %求出最大熵时模型变量x与相关参数y, y=-y;x=x(1:size(x,2)/2); % x选择moel变量end。
熵权法在matlab中的应用1. 介绍熵权法熵权法是一种多标准决策方法,它综合考虑了不同指标的权重和评价值,基于信息熵的原理进行计算,用于解决复杂的决策问题。
2. 熵权法的原理与方法在熵权法中,首先需要对每个指标进行标准化处理,使得各指标具有可比性和可加性。
根据各指标的评价值计算信息熵,信息熵越大表示指标的不确定性越高,反之亦然。
接下来,根据信息熵计算每个指标的权重,权重越大表示指标对决策结果的影响越大。
根据指标的权重和评价值计算综合评价值,综合评价值越大表示决策方案的优势越大。
通过熵权法可以实现对多个指标的综合评估与排序。
3. 熵权法在MATLAB中的应用步骤步骤一:准备数据将指标数据导入MATLAB环境中,可以使用Excel或文本文件进行数据导入。
确保指标数据的准确性和完整性。
步骤二:数据标准化根据指标的度量单位和范围,对指标数据进行标准化处理,使得各指标具有可比性和可加性。
常用的标准化方法包括最大-最小标准化和零-均值标准化。
根据需要选择合适的标准化方法进行处理。
步骤三:计算信息熵根据标准化后的指标数据,利用公式计算每个指标的信息熵。
信息熵的计算公式为:•H(i) = - Σ(p(ij) * log(p(ij)))其中,H(i)表示第i个指标的信息熵,p(ij)表示第i个指标第j个水平的概率。
步骤四:计算权重根据信息熵计算每个指标的权重。
信息熵越大表示指标的不确定性越高,权重越小;反之,信息熵越小表示指标的信息量越大,权重越大。
常用的计算权重的方法包括熵值法和逆熵值法。
步骤五:计算综合评价值根据指标的权重和评价值,计算各个方案的综合评价值。
综合评价值越大表示方案的优势越大。
步骤六:排序与决策根据综合评价值对各个方案进行排序,选择评价值最高的方案作为决策结果。
4. 示例:熵权法在房产投资中的应用假设我们需要对不同地区的房产投资进行评估和排序。
我们选择三个指标进行综合评价,分别是房价增长率、租金收益率和生活便利程度。
使用Matlab技术进行灰色系统建模的基本方法灰色系统理论是一种具有实用价值和应用广泛的预测和决策分析方法。
在实际应用中,利用Matlab技术来进行灰色系统建模更加高效和方便。
本文将介绍使用Matlab技术进行灰色系统建模的基本方法和步骤,帮助读者深入了解和掌握这一技术。
一、Matlab在灰色系统建模中的应用Matlab是一种功能强大的科学计算软件,具有数据处理、绘图和模拟仿真等丰富的功能,因此在灰色系统建模中得到了广泛应用。
Matlab提供了各种灰色系统建模工具和函数,可以快速、准确地进行系统建模和分析。
因此,掌握Matlab的使用,对于进行灰色系统建模具有重要意义。
二、数据预处理在进行灰色系统建模之前,需要对原始数据进行预处理,以提高后续建模的准确性和可靠性。
数据预处理包括数据清洗、数据平滑和数据归一化等步骤。
Matlab 提供了丰富的数据处理函数和工具,可以快速、灵活地完成这些操作。
1. 数据清洗数据清洗是指删除或修正含有噪声、异常值或缺失值的数据。
Matlab中可以使用滤波函数、插值函数和替换函数等方法对数据进行清洗。
例如,可以使用median函数对数据进行中值滤波,去除噪声干扰。
另外,使用interp1函数进行数据插值,可以填补缺失值,使数据更加完整。
2. 数据平滑数据平滑是指通过降低数据的波动性,使其更具有连续性和稳定性。
Matlab中常用的数据平滑方法包括移动平均法、指数平滑法和小波平滑法等。
移动平均法通过计算滑动窗口内数据的平均值,来平滑原始数据。
指数平滑法则采用指数加权平均的方式,对数据进行平滑处理。
小波平滑法则利用小波分析的方法,对数据进行平滑处理。
3. 数据归一化数据归一化是指将不同量纲或取值范围的数据,转换为统一的尺度。
常用的归一化方法包括最小-最大归一化和Z-score归一化等。
最小-最大归一化将数据线性映射到[0,1]的范围内,使数据具有统一的尺度和可比性。
Z-score归一化则通过计算数据与均值的偏差,除以标准差,将数据标准化为均值为0,标准差为1的分布。
1灰色预测模型 GM(1,1)的matlab 运行代码例 由1990—2001年中国蔬菜产量,建立模型预测 2002年中国蔬菜产量,并对预测结果作检验。
分析建模:给定原始时间1990—2001年资料序列X (0)(k),对X (0)(k) 生成1-AGO(累加)序列X (1)(k)及Y n。
见下表K 1 2 3 4 5 6 7 8 9 10 11 12 X ⑼19519 ,19578 ,19637,19695,16602, 25723, 30379, 34473, 38485, 40514, 42400, 48337 X (1)19519, 39097, 58734, 264605,307005,355342Y n 19578 19637 40514 42400 48337其中 X ⑴(k):x (0)(i);i 1Y n = [X (0)(2),X (0)(3), ,X (0) (12)]TX (0)(k)的 GM(1,1),得到z (1^2) 10.5 X⑴(1) X (。
⑵1 -29308.0 z ⑴(3) 1 0.5 X ⑴(2) X "(3)1 -48915.5 z (1)(4) 10.5 X ⑴(3) X (1^4)1 -68581.5 z ⑴(5) 1 0.5 X(4) X (1^5)1 -86730.0 z (1)(6) 10.5 X ⑴(5) X⑴⑹ 1 -107892.5 z ⑴(7) 1 0.5 X ⑴(6) X ("(7)1 -135943.5 z ⑴(8) 1 0.5 X ⑴(7) X "(8)1 -168369.5 z ⑴(9) 1 0.5 X ⑴(8) X ⑴(9)1-204848.5 z ⑴(10) 1 0.5 X ⑴(9) X ⑴(10) 1 244348.0 z ⑴(11) 10.5 X ⑴(10) X ("(11) 1 -331173.5 z ⑴(12) 10.5 X ⑴(11)X ("(12) 1-5236.21 1 1 1 1 1 1 1 1 1 将B 和Y n 代入辨识算式,有:对上述 ka(B TB) 1B T?Y n b得灰色GM(1,1)模型为0.1062105 13999.9(1)灰微分方程 X (0) (k)-0.1062105 Z ⑴(k)=13999.9刃⑼亿 1) 15248.968e 0.1062105t(5)残差检验:(6)后验差检验:12[X ( 0)(i) X (0)]2112L , X (0)丄 X (0)(i) n 1 12 i 1 C<0.35好;C<0.5合格;00.6不合格。
28. 灰色关联分析一、灰色系统理论简介若系统的内部信息是完全已知的,称为白色系统;若系统的内部信息是一无所知(一团漆黑),只能从它同外部的联系来观测研究,这种系统便是黑色系统;灰色系统介于二者之间,灰色系统的一部分信息是已知的,一部分是未知的。
灰色系统理论以“部分信息已知、部分信息未知”的“小样本”、“贫信息”不确定型系统为研究对象,其特点是:(1)认为不确定量是灰数,用灰色数学来处理不确定量,使之量化,灰色系统理论只需要很少量的数据序列;(2)观测到的数据序列看作随时间变化的灰色量或灰色过程,通过鉴别系统因素之间发展趋势的相似或相异程度,即进行关联度分析;(3)通过累加生成和累减生成逐步使灰色量白化,从而建立相应于微分方程解的模型,从而预测事物未来的发展趋势和未来状态。
二、灰色关联度分析1. 要定量地研究两个事物间的关联程度,可以用相关系数和相似系数等,但这需要足够多的样本数或者要求数据服从一定概率分布。
在客观世界中,有许多因素之间的关系是灰色的,分不清哪些因素之间关系密切,哪些不密切,这样就难以找到主要矛盾和主要特性。
灰因素关联分析,目的是定量地表征诸因素之间的关联程度,从而揭示灰色系统的主要特性。
关联分析是灰色系统分析和预测的基础。
关联分析源于几何直观,实质上是一种曲线间几何形状的分析比较,即几何形状越接近,则发展变化趋势越接近,关联程度越大。
如下图所示:xt曲线A 与B 比较平行,则认为A 与B 的关联程度大;曲线C 与A 随时间变化的方向很不一致,则认为A 与C 的关联程度较小;曲线A 与D 相差最大,则认为两者的关联程度最小。
2. 关联度分析是分析系统中各因素关联程度的方法步骤:(1) 计算关联系数设参考序列为0000{(1),(2),...,()}X x x x n =比较序列为{(1),(2),...,()}, 1,,i i i i X x x x n i m ==比较序列X i 对参考序列X 0在k 时刻的关联系数定义为:0000min min ()() max max ()()()()() max max ()()s s s t s ti i s s tx t x t x t x t k x k x k x t x t ρηρ-+-=-+- 其中,0min min ()()s s tx t x t -和0max max ()()s s t x t x t -分别称为两级最小差、两级最大差,[0,1]ρ∈称为分辨系数,ρ越大分辨率越大,一般采用0.5ρ=对单位不一,初值不同的序列,在计算关联系数之前应首先进行初值化,即将该序列的所有数据分别除以第一数据,将变量化为无单位的相对数值。
云模型是一种处理不确定性信息的数学模型,常用于数据挖掘、决策分析等领域。
以下是一个简单的MATLAB代码示例,用于生成云模型并进行评价:```matlab定义云模型的参数a = 0.5; 云模型的超熵b = 0.5; 云模型的熵c = 0.1; 云模型的期望值生成云模型x = -10:0.1:10; 取值范围y = zeros(size(x)); 初始化隶属度函数值for i = 1:length(x)y(i) = exp(a * ((x(i) - c) ^ 2) - b); 计算隶属度函数值endy = y / sum(y); 归一化处理绘制云图figure;plot(x, y);title('Cloud Model');xlabel('Input');ylabel('Membership function value');计算评价函数值f = zeros(size(x)); 初始化评价函数值for i = 1:length(x)f(i) = y(i) * (x(i) - c) ^ 2; 计算评价函数值endf = f / sum(f); 归一化处理绘制评价曲线figure;plot(x, f);title('Evaluation curve');xlabel('Input');ylabel('Evaluation value');```在上述代码中,我们首先定义了云模型的参数,包括超熵、熵和期望值。
然后,我们生成了云模型,并绘制了云图。
接着,我们计算了评价函数值,并绘制了评价曲线。
通过观察云图和评价曲线,可以对云模型进行评价和分析。
熵值法matlab代码熵值法是一种常见的多指标决策方法,它可以用于确定各指标的权重,从而更准确地对不同方案进行评价和比较。
在matlab中,我们可以通过编写简单的代码来实现熵值法的计算。
首先,我们需要定义一个函数来计算熵值。
熵值的计算公式如下: $$ E_i = -frac{1}{ln{n}}sum_{j=1}^n p_{ij}ln{p_{ij}} $$ 其中,$E_i$表示第$i$个指标的熵值,$p_{ij}$表示第$j$个方案在第$i$个指标上的得分占比,$n$为方案数。
接下来,我们可以编写一个函数来计算每个指标的熵值,并返回一个熵值向量。
代码如下:```matlabfunction [E] = entropy(A)% 计算熵值% 输入参数:A为方案指标矩阵,每行为一个方案% 输出参数:E为各指标的熵值向量[n, m] = size(A);E = zeros(1, m);for i = 1:m% 计算每个方案在该指标上的得分占比p = A(:,i) / sum(A(:,i));% 计算熵值E(i) = -1 / log(n) * sum(p .* log(p));endend```接下来,我们可以编写一个函数来计算每个指标的权重。
权重的计算公式如下:$$ w_i = frac{1 - E_i}{m - sum_{j=1}^m E_j} $$ 其中,$w_i$表示第$i$个指标的权重,$m$为指标数。
代码如下:```matlabfunction [w] = entropy_weight(A)% 计算熵值权重% 输入参数:A为方案指标矩阵,每行为一个方案% 输出参数:w为各指标的权重向量E = entropy(A);m = size(A, 2);w = (1 - E) / (m - sum(E));end```最后,我们可以测试一下这些函数的效果。
假设我们有5个方案,每个方案有3个指标,分别是收益、成本和风险。
熵权灰色综合评价法
熵权灰色综合评价法是一种基于熵权法和灰色关联度分析的综合评价方法。
该方法综合考虑了数据的信息熵和灰色关联度,用于对多个指标进行综合评价。
具体步骤如下:
1. 确定评价指标:选择适当的评价指标,用于评估被评价对象的各个方面。
2. 数据标准化:将原始数据进行标准化处理,使得数据具有可比性。
3. 计算信息熵:对每个指标计算信息熵,用于衡量指标的信息量和差异性。
4. 计算权重:根据信息熵计算各个指标的权重,权重越大表示该指标对评价结果的影响越大。
5. 灰色关联度分析:利用灰色关联度分析方法,计算各个指标之间的关联度,用于衡量指标之间的关联程度。
6. 计算评价结果:根据指标的权重和关联度,计算出最终的评价结果。
熵权灰色综合评价法在实际应用中具有较高的灵活性和适用性,能够考虑到多个指标之间的相互关系,提高评价结果的准确性和可靠
性。
灰⾊预测模型的学习笔记(MATLAB包含模型的建⽴求解及检验)本博⽂是本⼈在学习灰⾊预测模型时所做的笔记,原理及代码部分都是基于学习各位⼤佬的博⽂,详见后⾯的参考,⼀、 实操,利⽤灰⾊预测模型预测未来⼗年湖南的⼈⼝数量⼆、 具体实现,从国家统计局获取湖南省过去⼗年的⼈⼝数据,作为原始数据,见Excel⽂件,利⽤MATLAB对灰⾊预测模型进⾏求解,具体MATLAB实现见如下代码:%MATLAB 2016a版clear,clc;A=xlsread('分省年度数据.xls','$K$5:$B$5');A=sort(A);syms a b;c=[a b]';B=cumsum(A); % 原始数据累加n=length(A);for i=1:(n-1)C(i)=(B(i)+B(i+1))/2; % ⽣成累加矩阵end% 计算待定参数的值D=A;D(1)=[];D=D';E=[-C;ones(1,n-1)];c=inv(E*E')*E*D;c=c';a=c(1);b=c(2);% 预测后续数据F=[];F(1)=A(1);for i=2:(n+10)F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;endG=[];G(1)=A(1);for i=2:(n+10)G(i)=F(i)-F(i-1); %得到预测出来的数据endt1=2007:2016;t2=2017:2026;G;a;b;% 输出预测值,发展系数和灰⾊作⽤量scatter(t1,A,'b');hold onplot(2007:2026,G,'r');xlabel('年份');ylabel('⼈⼝数/万⼈');title('基于灰⾊预测模型的未来⼗年湖南省⼈⼝趋势图');text(2026,7444.6,'7444.6万');legend('实际⼈⼝数量','预测⼈⼝数量');grid on可以得到如下结果:灰⾊预测模型的检验:%灰⾊预测模型的检验H = G(1:10);%计算残差序列epsilon = A - H;%法⼀:相对残差Q检验%计算相对误差序列delta = abs(epsilon./A);%计算相对误差Qdisp('相对残差Q检验:')Q = mean(delta)%法⼆:⽅差⽐P检验disp('⽅差⽐P检验:')P= std(epsilon, 1)/std(A, 1)在对模型的检验过程中,我们得到了如下表的检验结果:相对残差Q⽅差⽐C-0.00350.1828。
基于熵权的灰色关联分析摘要以灰色决策分析理论为基础,提出基于理想方案的灰色关联度方法、基于临界方案的最小关联度方法,以及同时考虑理想方案和临界方案的综合关联度方法及其相关度概念。
建立了灰色区间关联度系数公式和灰色区间相对关联系数公式。
并且在确定方案指标的权重时,将熵值理论与灰色关联分析方法相结合,建立起基于熵权的灰色关联分析模型。
根据各个指标值得变异程度,引用信息熵所反映数据本身的效用值来计算指标的权重系数,有效的避免了由于人的主观因素而形成的权重分配偏差。
关键词熵权灰色关联分析综合评价一、灰色基本概念1、问题描述灰色系统理论研究对象是,部分信息已知,部分信息未知的小样本、贫信息的不确定系统,它通过对部分已知信息的生成、开发实现对现实世界的确切描述和认识。
系统信息不完全的情况分为以下四种:(1)元素(参数)信息不完全;(2)结构信息不完全;(3)边界信息不完全;(4)运行行为信息不完全。
2、基本原理“信息不完全”是“灰”的基本含义。
在灰色系统理论创立和发展过程中,学者发现并提炼出灰色系统的基本原理如下:(1)“差异”是信息,凡信息必有差异;(2)信息不完全、不确定的解是非唯一的;(3)灰色系统理论的特点是充分开发利用已占有的“最少信息”;(4)信息是认知的依据;(5)新信息对于认知的作用大于老信息;(6)“信息不完全”(灰)是绝对的。
3、灰数及其类别灰色系统用灰数、灰色方程、灰色矩阵等来描述、其中灰数是灰色系统的基本“单元”或“细胞”。
灰数是指在某一个区间或某个一般的数集内取值的不确定数。
在应用中,灰数实际上是指在某一个区间或某个一般的数集内取值的不确定数。
通常用记号“⊗”表示灰数灰数有一下几类:(1)仅有下届的灰数。
⊗∈[a ,∞)或⊗(a) (2)仅有上届的灰数。
⊗∈ (3)区间灰数。
⊗∈ (4)黑数与白数。
当⊗∈ 时,即⊗ 的上下界均为无穷时,称⊗为黑数。
当⊗∈且 时,称⊗为白数。
二、基于熵权的灰色关联分析 (一)基本公式某一研究范围内的备选方案全体称为决策集合,记为A={A 1, A 2,…,A n };目标因素集合记为S={S 1,S 2,…S m }方案A i 在目标S j 下的效果评价价值为非负区间灰数方案Ai 的效果向量记为:为了消除量纲和增加可比性,用灰色极差变换进行标准化, 对效益型目标值得到:对成本型目标值得到:标准化后的效果向量为: 其中 均为[0,1]上的非负区间灰数。
熵权法及改进的TOPSIS一、熵权法1.熵权法确定客观权重熵学理论最早产生于物理学家对热力学的研究,熵的概念最初描述的是一种单项流动、不可逆转的能量传递过程,随着思想和理论的不断深化和发展,后来逐步形成了热力学熵、统计熵、信息熵三种思路。
美国数学家克劳德·艾尔伍德·香农(Claude Elwood Shannon)最先提出信息熵的概念,为信息论和数字通信奠定了基础。
信息熵方法用来确定权重己经非常广泛地应用于工程技术、社会经济等各领域。
由信息熵的基本原理可知,对于一个系统来说,信息和熵分别是其有序程度和无序程度的度量,二者的符号相反、绝对值相等。
假设一个系统可能处于不同状态,每种状态出现的概率为(1,,)=i P i n则该系统的熵就定义为:1ln ==∑ni i E P P在决策中,决策者获得信息的多少是决策结果可靠性和精度的决定性因素之一,然而,在多属性决策过程中,往往可能出现属性权重大小与其所传达的有价值的信息多少不成正比的情况。
例如:某一指标所占的权重在所有指标中最大,但在整个决策矩阵中,这一指标所有方案的数值却相差甚微,即这一指标所传递的有用信息较少。
显然,这一最重要的指标在决策过程中所起的作用却很小,如果不对其属性权重进行适当的处理,必将会造成评价决策方案的失真。
熵本身所具有的物理意义及特性决定其应用在多属性决策上是一个很理想的尺度。
某项指标之间值的差距越大,区分度越高,所携带和传输的信息就越多,该指标的熵值就会越小,在总体评价中起到的作用越大;相反,某项指标之间值的差距越小,区分度越低,所携带和传输的信息就越少,该指标的熵值就会越大,在总体评价中起到的作用越小。
因此,可采用计算偏差度的方法求出客观权重,再利用客观权重对专家评价出的主观权重进行修正,得出综合权重。
与其他客观赋权方法相比,该方法不仅仅是建立在概率的基础之上,还以决策者预先确定的偏好系数为基础,把决策者的主观判断和待评价对象的固有信息有机地结合起来,实现了主观与客观的统一,得出的权值准确性更高。
基于熵权灰色关联的开放式基金综合评价模型Matlab程序
详细算法流程请见我的文库-《Garch-Var开放式基金风险度量及综合评价体系》的第二部分,综合评价体系,程序中的变量请对应文章的算法涉及变量。
输入的表格字段如下:
其中第一个变量代表基金的名称(这里总共选取了100只基金,只截取了部分数据),后面的变量根据影响基金表现的因素分别建立模型并收集数据计算得到。
输出是一系列的基金的权重,按照大小排序既可以得到基金的综合评分:
程序:
function FuzzyEvalue(FileName)
clc;
fid = fopen(FileName);
head_ = textscan(fid, '%s %s %s %s %s %s',1,'delimiter', ',');
head = {{zeros(length(head_) - 1)}};
for i = 2:length(head_)
head{i-1}(1) = head_{i}(1);
end
clear head_
%for i = 1:length(head)
% head{i}(1)
% end
%head
inputMatrix_ = textscan(fid, '%s %f32 %f32 %f32 %f32 %f32','delimiter', ','); fclose(fid);
for j = 2:length(inputMatrix_)
inputMatrix(:,j - 1) = double(inputMatrix_{:,j});
end
alpha = 0.5;
[n,m] = size(inputMatrix);
optimalMat = zeros(1,m);
for i = 1:m
%inputMatrix(:,i)
if isempty(cell2mat(strfind(head{i}(1), 'max'))) == 0
optimalMat(i) = max(inputMatrix(:,i));
elseif isempty(cell2mat(strfind(head{i}(1), 'min'))) == 0
optimalMat(i) = min(inputMatrix(:,i));
end
end
optimalMat;
D = [optimalMat;inputMatrix];
R = zeros(n+1,m);
for i = 1:m
if isempty(cell2mat(strfind(head{i}(1), 'max'))) == 0
R(:,i) = 1.0*(D(:,i) - min(D(:,i)))/(max(D(:,i)) - min(D(:,i)));
elseif isempty(cell2mat(strfind(head{i}(1), 'min'))) == 0
R(:,i) = 1.0*(max(D(:,i)) - D(:,i))/(max(D(:,i)) - min(D(:,i)));
end
end
clearvars D inputMatrix;
R;
F = zeros(n+1,m);
H = zeros(1,m);
W = zeros(1,m);
for i = 1:m
F(:,i) = R(:,i)/sum(R(:,i));
end
F;
F(F == 0) = 1;
for j = 1:m
H(j) = -1/log(n)*sum(F(:,j).*log(F(:,j)));
end
H;
W = (1 - H)/(m - sum(H));
%sum(W)
clearvars F H;
Eps = zeros(n,m);
for j = 1:m
Eps(:,j) = (min(abs(R(1,j) - R(2:n+1,j))) + alpha*max(abs(R(1,j) - R(2:n+1,j))))./(abs(R(1,j) - R(2:n+1,j)) + alpha*max(abs(R(1,j) - R(2:n+1,j))));
end
Eps;
FundsWeight = Eps*W';
fileId = fopen('weight.csv','w');
fprintf(fileId,'%s \n','FundsWeight');
fprintf(fileId,'%f \n',FundsWeight);
fclose(fileId);
end。