【数学建模】灰色预测法

这篇具有很好参考价值的文章主要介绍了【数学建模】灰色预测法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

灰色预测对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。


一、灰色预测是什么?

灰色预测是一种对含有不确定因素的系统进行预测的方法。 灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。 其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间

二、使用步骤

1.使用条件

这个应该是很清晰的,数据量少,四五个,然后类指数形式增长的,什么是类指数增长:就是一组数据累加后排列是否呈类指数增长,与且预测的时间不是很长,就可以用。 分为GM (1,1),GM (1,m),GM (n,m)分别用于一个自变量一个因变量,多个自变量一个因变量,多个自变量多个因变量。 灰色预测就是尽可能使用数据中含有的信息。 假设你有十组数据,需要预测接下来的三组数据,程序跑完,一般是有求残差的过程,看一看是不是小于0.1,如果每个数据点都是小于0.1,那这次灰色预测就是很好的。

注:

  1. 数据量较少的情况下使用;
  2. 数据呈类指数增长;
  3. 预测时间较短
  4. 要先进行级比值检验
  5. 后验差比检验
  6. 模型拟合检验
  7. 模型残差检验

2.以GM(1,1)为例

(1)级比值检验

【数学建模】灰色预测法
(注:级比值介于区间[0.982,1.0098]时说明数据适合模型构建。)

从上表可知,针对某数据进行GM(1,1)模型构建,结果显示:级比值的最大值为1.010,在适用范围区间[0.982,1.0098]之外,意味着本数据进行GM(1,1)可能得不到满意的模型。但从数据来看,1.01非常接近于1.0098,因此有理由接着进行建模。

如下代码所示为数据级比检验:

m = length(A);
JiBi = ones(1,m-1);
for i =2:m
    JiBi(i-1) = A(i-1)/A(i);
end
max1 = max(JiBi);
min1 = min(JiBi);
FanWei = exp(2/(n+2))-exp(-2/(n+1))
if max1 - min1<FanWei
    disp(['数据通过级别检验']);
else 
    disp(['数据不通过级比检验']);
end

(2)后验差比检验

【数学建模】灰色预测法
后验差比C值用于模型精度等级检验,该值越小越好,一般C值小于0.35则模型精度等级好,C值小于0.5说明模型精度合格,C值小于0.65说明模型精度基本合格,如果C值大于0.65,则说明模型精度等级不合格。

从上表可知,后验差比C值0.231 <=0.35,意味着模型精度等级非常好。

以下为发展系数、灰色作用量和C值代码:

 
%构造数据矩阵 
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';      %Y进行了转置,C的公式求法与百度文库 发生了一些变化
% 使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;          %核心公式  
c = c';
a = c(1); b = c(2);
disp(['发展系数:',num2str(a)]);
disp(['灰色作用量:',num2str(b)]);
%预测后续数据
F = []; F(1) = A(1);
%法二:方差比C检验
C = std(epsilon, 1)/std(A, 1);  %方差函数std   按照列分
disp(['方差比C检验:',num2str(C)]);

(3)模型拟合检验

【数学建模】灰色预测法
上表格展示出模型的拟合值,以及向后12期的拟合数据情况,当然也可通过图形直观查看如下图,下图明显可以看出,往后时会一直下降,这是GM(1,1)模型的特征,其仅适用于中短期预测,因此向后1期和向后2期的数据具有价值,更多的预测数据需要特别谨慎对待。

以下为模型拟合检验代码:

%模型检验
H = G(1:T1);
epsilon = A - H;               %计算残差序列
 disp(['残差检验:',num2str(epsilon)]);

画图展示:

%绘制曲线图
plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
grid on;

(4)模型残差检验

【数学建模】灰色预测法
模型残差检验,主要是查看相对误差值和级比偏差值,验证模型效果情况。

从上表可知,模型构建后可对相对误差和级比偏差值进行分析,验证模型效果情况;模型相对误差值最大值0.007<0.1,意味着模型拟合效果达到较高要求。

针对级比偏差值,该值小于0.2说明达到要求,若小于0.1则说明达到较高要求;模型相对误差值最大值0.020<0.1,意味着模型拟合效果达到较高要求。

以下为残差值检验代码:

%法一:计算相对误差Q
delta = abs(epsilon./A);
Q = mean(delta);
disp(['相对残差Q检验:',num2str(Q)]);

%法二:方差比C检验
C = std(epsilon, 1)/std(A, 1);  %方差函数std   按照列分
disp(['方差比C检验:',num2str(C)]);

%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
P = length(tmp)/n;
disp(['小误差概率P检验:',num2str(P)])
 

(5)级比偏差检验

这是在(check.m)函数里的,需要调用

 % 预测
    p_d = zeros(n, 1);
    for i = 1 : n - 1
        p_d(i + 1) = (1-exp(a))*(d(1)-b/a)*exp(-a*i);
    end
    
    % 级比偏差
    u = abs(d(2:end)-p_d(2:end))./d(2:end);
    disp('均级比偏差为(通常小于0.1则说明适合灰色预测):');
    disp(mean(u));
    
    % 相对残差
    disp('均级相对残差为(通常小于0.1则说明适合灰色预测):');
    e = abs(1-(1-0.5*a)/(1+0.5*a)*(d(1:end-1)./d(2:end)));
    disp(mean(e));
end

三 、总结

1.代码总结

clc;clear;      %建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';    

A = [1 4 6 9 10 12 21 34






];    %输入需要预测的数据

T1=length(A);
T2=100;                             %输入需要预测数据个数 
t1=1:T1;
t2=1:T1+T2;
n = T1;

m = length(A);
JiBi = ones(1,m-1);
for i =2:m
    JiBi(i-1) = A(i-1)/A(i);
end
max1 = max(JiBi);
min1 = min(JiBi);
FanWei = exp(2/(n+2))-exp(-2/(n+1))
if max1 - min1<FanWei
    disp(['数据通过级别检验']);
else 
    disp(['数据不通过级比检验']);
end

 
%对原始数列 A 做累加得到数列 B
B = cumsum(A);
%对数列 B 做紧邻均值生成
for i = 2:n
    C(i) = (B(i) + B(i - 1))/2; 
end
C(1) = [];
 
%构造数据矩阵 
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';      %Y进行了转置,C的公式求法与百度文库 发生了一些变化
% 使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;          %核心公式  
c = c';
a = c(1); b = c(2);
disp(['发展系数:',num2str(a)]);
disp(['灰色作用量:',num2str(b)]);
%预测后续数据
F = []; F(1) = A(1);

for i = 2:T1+T2
    F(i) = (A(1)-b/a)*exp(-a*(i-1))+ b/a;
end
%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:T1+T2
    G(i) = F(i) - F(i-1); %得到预测出来的数据
end
disp(['预测数据为:',num2str(G)]);
 
%模型检验
H = G(1:T1);
epsilon = A - H;               %计算残差序列
 disp(['残差检验:',num2str(epsilon)]);
%法一:计算相对误差Q
delta = abs(epsilon./A);
Q = mean(delta);
disp(['相对残差Q检验:',num2str(Q)]);

%法二:方差比C检验
C = std(epsilon, 1)/std(A, 1);  %方差函数std   按照列分
disp(['方差比C检验:',num2str(C)]);

%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
P = length(tmp)/n;
disp(['小误差概率P检验:',num2str(P)])
%级比偏差和相对残差
check(A)

 
%绘制曲线图
plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
grid on;

2.公式总结

以上内容主要是针对如何使用灰色预测(GM(1,1))进行了一个概述,具体的公式讲解并没有列举出来,如若需要,再进行公式的细分和讲解。文章来源地址https://www.toymoban.com/news/detail-414234.html

到了这里,关于【数学建模】灰色预测法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模】灰色预测法

    灰色预测对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。 灰色预测是一种对含有 不确定因素 的系统进行预测的方法。 灰色预测通过鉴别系统因素之间发展趋势的相异程度

    2023年04月15日
    浏览(31)
  • 【数学建模】 灰色预测模型

    https://www.cnblogs.com/somedayLi/p/9542835.html https://blog.csdn.net/qq_39798423/article/details/89283000?ops_request_misc=request_id=biz_id=102utm_term=%E7%81%B0%E8%89%B2%E9%A2%84%E6%B5%8B%E6%A8%A1%E5%9E%8Butm_medium=distribute.pc_search_result.none-task-blog-2 all sobaiduweb~default-2-89283000.142 v88 control_2,239 v2 insert_chatgptspm=1018.2226.3001.418

    2024年02月12日
    浏览(39)
  • 数学建模之“灰色预测”模型

    1、CUMCM2003A SARS的传播问题 2、CUMCM2005A长江水质的评价和预测CUMCM2006A出版社的资源配置 3、CUMCM2006B艾滋病疗法的评价及疗效的预测问题 4、CUMCM2007A 中国人口增长预测   灰色系统的应用范畴大致分为以下几方面: (1)灰色关联分析。 (2)灰色预测:人口预测;灾变预测....等等。

    2024年02月12日
    浏览(32)
  • 数学建模之灰色预测方法

    关联系数 计算关联系数公式 步骤 第一步 第二步 求参考数列和待比较数列矩阵数值做差之后的最小值和最大值 第三步利用公式计算关联度系数,其中将最大值最小值耦合到关联系数中,可以保证关联系数位于[0,1]之间,同时上下对称的结构可以消除量纲不同和数值量级悬殊

    2024年02月13日
    浏览(29)
  • 数学建模系列-预测模型(一)灰色预测模型

    目录 1 灰色预测模型 1.1 灰色系统的定义与特点 1.2 灰色预测模型优缺点 1.3 灰色生成数列 1.4 灰色模型GM(1,1)实操步骤 1 数据检验 2 构建灰色模型 3 检验预测值 4 灰色预测模型实例代码 目前我们学习预测模型的第一类: 灰色预测模型 。         Gray Forecast Model 是通过 少量

    2024年02月02日
    浏览(28)
  • 数学建模常用模型(一):灰色预测法

    灰色预测法是一种用于处理少量数据、数据质量较差或者缺乏历史数据的预测方法。它适用于一些非线性、非平稳的系统,尤其在短期预测和趋势分析方面有着广泛的应用。灰色预测法作为一种强大的数学建模工具,通过利用有限的信息,能够在不完备的条件下进行准确的预

    2024年02月09日
    浏览(35)
  • 数学建模 | 灰色预测原理及python实现

    目录 一、灰色预测的原理 二、灰色预测的应用及python实现 灰色预测是以灰色模型为基础,灰色模型GM(n,h)是微分方程模型,可用于描述对象做 长期、连续、动态 的反应。其中,n代表微分方程式的阶数,h代表微分方程式的变化数目。在诸多的灰色模型中,以灰色系统中 单序

    2024年01月16日
    浏览(34)
  • 数学建模之灰色预测模型代码(matlab版)

    灰色关联分析步骤 【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理,见下面例题的表格数据)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况) 【2】确定各个指标权重,可用层次分析确定 【3】计算灰色关联系数 【4】

    2024年02月09日
    浏览(32)
  • 【数学建模】--灰色关联分析

    系统分析: 一般的抽象系统,如社会系统,经济系统,农业系统,生态系统,教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中,哪些是主要因素,哪些是次要因素;哪些因素对系统发展影响大,哪些因素

    2024年02月13日
    浏览(27)
  • 数学建模:灰色关联分析

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 建立一个m行 n列的矩阵 X X X ,其中 m 表示评价对象, n表示评价指标 首先进行矩阵的 归一化 ,得到归一化后的矩阵 d a t a data d a t a 获取参考向量,即获取归一化后的矩阵的 最大参考指标行 ,假设为 Y Y Y ,即得到所有n个指

    2024年02月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包