基于熵权灰色关联的开放式基金综合评价模型Matlab程序

合集下载

(完整版)五种灰色关联度分析matlab代码

(完整版)五种灰色关联度分析matlab代码

(完整版)五种灰色关联度分析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实例

熵权法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灰色预测模型函数Matlab是一种广泛应用于科学计算和工程领域的软件工具,它提供了许多函数和工具箱,用于数据分析和建模。

其中一个重要的函数是灰色预测模型函数,它可以用来预测和分析时间序列数据。

本文将介绍灰色预测模型函数的原理和应用,并通过一个示例来演示其使用方法。

灰色预测模型是一种基于灰色系统理论的预测方法,它适用于样本数据较少、不完整或不规律的情况。

在灰色预测模型中,数据被分为两类:发展数据和规律数据。

发展数据是指拥有较完整信息的数据,规律数据是指缺乏完整信息的数据。

通过对规律数据进行处理和建模,可以预测未来数据的趋势和变化。

在Matlab中,可以使用灰色预测模型函数进行数据预测和分析。

该函数可以通过输入历史数据和需要预测的时间步长来生成预测结果。

具体的使用方法如下:1. 导入数据:首先需要导入需要预测的时间序列数据。

可以使用Matlab中的数据导入函数来读取数据文件或手动输入数据。

2. 数据预处理:对导入的数据进行预处理,包括去除异常值、平滑数据等。

可以使用Matlab中的数据处理函数来完成这些操作。

3. 构建灰色模型:使用灰色预测模型函数来构建灰色模型。

该函数需要输入历史数据和需要预测的时间步长。

4. 模型评估:对构建的灰色模型进行评估,包括计算预测误差、拟合度等指标。

可以使用Matlab中的统计函数来完成这些计算。

5. 预测结果:根据构建的灰色模型,可以生成未来数据的预测结果。

可以使用Matlab中的预测函数来完成这一步骤。

下面通过一个示例来演示灰色预测模型函数的使用方法。

假设我们有一个销售数据的时间序列,我们希望预测未来三个月的销售额。

首先,我们需要导入销售数据,并进行数据预处理。

然后,我们可以使用灰色预测模型函数来构建灰色模型。

最后,我们可以通过预测函数来生成未来三个月的销售额预测结果。

在实际操作中,我们可能还需要对模型进行参数调优和模型选择。

可以使用交叉验证等方法来选择最优的参数和模型。

MATLAB实现灰色预测程序很全,很强大,数学建模当中用到.

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代码

熵权法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中的应用

熵权法在matlab中的应用

熵权法在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提供了各种灰色系统建模工具和函数,可以快速、准确地进行系统建模和分析。

因此,掌握Matlab的使用,对于进行灰色系统建模具有重要意义。

二、数据预处理在进行灰色系统建模之前,需要对原始数据进行预处理,以提高后续建模的准确性和可靠性。

数据预处理包括数据清洗、数据平滑和数据归一化等步骤。

Matlab 提供了丰富的数据处理函数和工具,可以快速、灵活地完成这些操作。

1. 数据清洗数据清洗是指删除或修正含有噪声、异常值或缺失值的数据。

Matlab中可以使用滤波函数、插值函数和替换函数等方法对数据进行清洗。

例如,可以使用median函数对数据进行中值滤波,去除噪声干扰。

另外,使用interp1函数进行数据插值,可以填补缺失值,使数据更加完整。

2. 数据平滑数据平滑是指通过降低数据的波动性,使其更具有连续性和稳定性。

Matlab中常用的数据平滑方法包括移动平均法、指数平滑法和小波平滑法等。

移动平均法通过计算滑动窗口内数据的平均值,来平滑原始数据。

指数平滑法则采用指数加权平均的方式,对数据进行平滑处理。

小波平滑法则利用小波分析的方法,对数据进行平滑处理。

3. 数据归一化数据归一化是指将不同量纲或取值范围的数据,转换为统一的尺度。

常用的归一化方法包括最小-最大归一化和Z-score归一化等。

最小-最大归一化将数据线性映射到[0,1]的范围内,使数据具有统一的尺度和可比性。

Z-score归一化则通过计算数据与均值的偏差,除以标准差,将数据标准化为均值为0,标准差为1的分布。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于熵权灰色关联的开放式基金综合评价模型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。

相关文档
最新文档