matlab-评价和预测模型

一:评价模型
评价模型主要分为加权平均,层次分析,以及模糊综合评价
1.加权平均
顾名思义就是每个部分给与固定的权值
代码

Wi = [0.3 0.3 0.2 0.2];
Pi = [95  90  82  85  ;85  95  85  90 ];
P = Wi * Pi'

输出结果
P =

88.9000 89.0000

2.层次分析
简单可以分为,目标层(结果),准则层(评价标准),备选层(备选对象)
步骤:
(1):构造判断矩阵A
其中一个矩阵元素aij=Ci/Cj,其值越大,则分子越重要
注意:比较结果必须前后一致,不能出现矛盾
即a>b,b>c,则必有a>c
(2):一致性检验:即A>>C,且B>C,则有A>B
一般用CI表示一致性指标,CR表示一致性比例,RI表示平均随机一致性指标
(3):层次单排序
对于上一层某因素而言,本层次某因素重要性的排序
上一层次某因素相对重要性:A最大特征值对应的特征3向量(权值)
(4):层次总排序
代码

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];%(对象face之间两两比较)
[w1, CR1] = AHP(A1);%w1:对象face得分矩阵 

% 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);%计算特征值D和特征向量V:A*V=V*D

[lamda, i] = max(diag(D));%取最大特征值与位置
CI=(lamda-n)/(n-1);%一致性指标
CR = CI/RI(n);%一致性比例

W = V(:,i);%最大特征值的特征向量
w = W/sum(W);%归一化

使用需要自己构造判断矩阵A A1 A2 A3 A4以及平均随机一致性指标
3.模糊综合评价
啥是模糊:事物之间无明显界限,因此用程度来代替属于和不属于例他是好人的概率为0.8;
评价要素:
因素集U与评语集V
模糊合成:按照不同准则层对象权值W与对象评语集百分比矩阵R进行合成运算
(还是看图吧)
matlab-评价和预测模型_第1张图片
M(·,v)表示先乘再取大
代码

W = [0.4 0.2 0.1 0.3];
R = [0.38 0.34 0.17 0.11 0.00
     0.26 0.41 0.20 0.13 0.00
     0.27 0.23 0.21 0.15 0.14
     0.14 0.19 0.22 0.12 0.33];

B = max(R .* W')

注意:上面是对一个对象进行的操作
所得结果

B =

  0.1520    0.1360    0.0680    0.0440    0.0990

可以看出第一个评语元素对应的值最大,故该对象的评价为第一个评语元素
总结:
加权平均适用于每项权值与平均比较容易获得
层次分析适用于权重,评分不容易获得
模糊综合评价多用于问卷类分级别,但权值的获得可用层次分析
二:预测模型
主要有,拟合,时间序列,灰色预测
1.拟合是最基本的预测方法,主要用fit与polyfit函数
多适用于有明显规律,(线性,一阶,二阶等)、
2.时间序列
就是把预测对象按照时间顺序排列而成的序列(由以前数据推将来数据)
其变化形式有长期趋势变动(T),季节变动(S),循环变动(C),以及不规则变动(R)
模型常见(加法,乘法,混合)如加法模型即为多个函数的叠加
方法:
(1)移动平均法

matlab-评价和预测模型_第2张图片
cumsum:cumsum是matlab中一个函数,通常用于计算一个数组各行的累加值,函数用法是B = cumsum(A,dim),或B = cumsum(A)。
如果A是一个向量, cumsum(A) 返回一个向量,该向量中第m行的元素是A中第1行到第m行的所有元素累加和;
如果A是一个矩阵, cumsum(A) 返回一个和A同行同列的矩阵,矩阵中第m行第n列元素是A中第1行到第m行的所有第n列元素的累加和;
此外还有平滑法
3.灰度预测 GM
特点:使用生成数据,且数据不需很多,一般大于四个就行,只使用中短期和我指数增长的预测
表示形式GM(a,b),a阶微分方程,b个变量
步骤:
原始序列->可行性检验->数据平移(不满足可行性检验条件)->一次累加生成序列(cumsum)->均值生成序列->灰微分方程->白化微分方程->最小二乘估计->白化微分方程求解->模型还原->残差检验->级比偏差值检验

t0 = [1999:2003]';
X0 = [89, 99, 109, 120, 135]';%原始序列
n = length(X0);
lambda = X0(1:n-1)./X0(2:n);
range = minmax(lambda')%检验
exp([-2/(n+1), 2/(n+2)])
X1 = cumsum(X0);%累加生成序列
Z1 = (X1(1:n-1)+X1(2:n))%均值序列
%最小二乘估计
B = [-Z1, ones(n-1,1)];j
Y = X0(2:n);

u = B\Y; a = u(1); b = u(2);
k = 0:n+4;%向后预测4个
xhat1 = (X0(1) - b/a).*exp(-a*k) + b/a;%白化微分方程求解
xhat0 = [X0(1) diff(xhat1)]%还原
plot(t0,X0,'o',t0(1)+k, xhat0,'-+')

对于一些模型 后面的检验步骤可以通过图像看出

你可能感兴趣的:(数学建模)