灰色预测之GM(1,1)GM(1,1)GM(1,1),教你快速上手数学建模!

前言:在参加数学建模比赛时经常需要大家做预测,而我们常用的预测模型有回归分析预测模型、自回归移动平均模型、灰色系统预测模型、BPBPBP神经网络预测模型等。今天小编将为大家讲解最传统的灰色预测模型,让大家快速学会预测,上手数学建模。(内附Python完整代码!!)

一、灰色预测简介

小编先简单为大家介绍一下灰色系统理论:

灰色系统理论由中国学者邓聚龙教授于1982年创立,是一种专门用于研究“部分信息已知,部分信息未知”的不确定性系统问题的方法。目前灰色预测模型已经广泛应用于城市环境、交通管理、能源分析等众多领域。

二、GM(1,1)GM(1,1)GM(1,1)理论

接下来小编就给大家讲述最传统的灰色预测理论–GM(1,1)GM(1,1)GM(1,1),我们一起来看看叭!

(一)、灰色累加和累减生成

定义1(累加生成):

设原始序列X(0)={X(0)(1),X(0)(2),...,X(0)(r)}X^{(0)}=\{{X^{(0)}(1),X^{(0)}(2),...,X^{(0)}(r)}\}X(0)={X(0)(1),X(0)(2),...,X(0)(r)},经过一次累加过后的序列记为X(1)={X(1)(1),X(1)(2),...,X(1)(r)}X^{(1)}=\{{X^{(1)}(1),X^{(1)}(2),...,X^{(1)}(r)}\}X(1)={X(1)(1),X(1)(2),...,X(1)(r)},其中
X(1)(k)=∑j=1kX(0)(j),k=1,2,...,rX^{(1)}(k)=\sum_{j=1}^{k}{X^{(0)}(j) },k=1,2,...,r X(1)(k)=j=1∑k​X(0)(j),k=1,2,...,r
上述序列中,X(0)X^{(0)}X(0)称为X(1)X^{(1)}X(1)的一阶累加生成序列,上式称为一阶累加生成,简称1-AGO序列。

定义2(累减生成):

设原始序列的1-AGO序列为X(1)={X(1)(1),X(1)(2),...,X(1)(r)}X^{(1)}=\{{X^{(1)}(1),X^{(1)}(2),...,X^{(1)}(r)}\}X(1)={X(1)(1),X(1)(2),...,X(1)(r)},则
X(k)=X(1)(k)−X(1)(k−1)X^{(k)}=X^{(1)}(k)-X^{(1)}(k-1) X(k)=X(1)(k)−X(1)(k−1)
称为X(1)X^{(1)}X(1)的一阶累减生成序列。

上式可用于计算原始序列的预测值X(0)^\hat{X^{(0)}}X(0)^。

(二)、GM(1,1)模型

  1. 白化方程

    常微分方程
    dX(1)(t)dt+aX(1)(t)=b\dfrac{dX^{(1)}(t)}{dt}+aX^{(1)}(t)=b dtdX(1)(t)​+aX(1)(t)=b
    称为GM(1,1)模型的白化方程。

  2. 差分方程

    X(0)(k)+aZ(1)(k)=bX^{(0)}(k)+aZ^{(1)}(k)=b X(0)(k)+aZ(1)(k)=b

    称为GM(1,1)模型的基本形式。其中aaa称为发展系数,bbb称为灰作用量。Z(1)Z^{(1)}Z(1)称为X(1)X^{(1)}X(1)的紧邻均值序列(背景值序列),满足
    Z(1)(k)=12[X(1)(k)+X(1)(k−1)],k=2,3,...,rZ^{(1)}(k)=\dfrac{1}{2}[X^{(1)}(k)+X^{(1)}(k-1)],k=2,3,...,r Z(1)(k)=21​[X(1)(k)+X(1)(k−1)],k=2,3,...,r

  3. GM(1,1)差分方程的参数的最小二乘估计

    GM(1,1)差分方程的参数的最小二乘估计满足
    [a,b]T=(BTB)−1BTYR[a,b]^T=(B^TB)^{-1}B^TY_R [a,b]T=(BTB)−1BTYR​
    其中
    B=[−Z(1)(2)−Z(1)(3)...−Z(1)(r)11...1]TB = \left[ \begin{matrix} -Z^{(1)}(2) & -Z^{(1)}(3) & ... & -Z^{(1)}(r)\\ 1 & 1 & ... & 1 \end{matrix} \right]^T B=[−Z(1)(2)1​−Z(1)(3)1​......​−Z(1)(r)1​]T

    YR=[X(0)(2)X(0)(3)...X(0)(r)]TY_R = \left[ \begin{matrix} X^{(0)}(2) & X^{(0)}(3) & ... & X^{(0)}(r)\\ \end{matrix} \right]^T YR​=[X(0)(2)​X(0)(3)​...​X(0)(r)​]T

  4. 对GM(1,1)GM(1,1)GM(1,1)的白化方程求解

    求解可得
    X(1)^(t)=(X(0)(1)−ab)e−a(t−1)+ab\hat{X^{(1)}}(t)=(X^{(0)}(1)-\dfrac{a}{b})e^{-a(t-1)}+\dfrac{a}{b} X(1)^(t)=(X(0)(1)−ba​)e−a(t−1)+ba​
    其离散形式
    X(1)^(k+1)=(X(0)(1)−ab)e−a(k)+ab\hat{X^{(1)}}(k+1)=(X^{(0)}(1)-\dfrac{a}{b})e^{-a(k)}+\dfrac{a}{b} X(1)^(k+1)=(X(0)(1)−ba​)e−a(k)+ba​
    上式可用于计算原始序列预测值的1-AGO序列X(1)^\hat{X^{(1)}}X(1)^。

  5. 实例分析

    下面我们一起来看看实例吧!

    原始序列X(0)={4.1,4.05,4.09,4.05,4.02,3.9,3.8,3.62}X^{(0)}=\{{4.1,4.05,4.09,4.05,4.02, 3.9,3.8,3.62}\}X(0)={4.1,4.05,4.09,4.05,4.02,3.9,3.8,3.62}

    我们用前6个数据进行建模,后面的数据进行预测。并计算真实值和预测值的相对误差,具体代码如下:

    import numpy as np
    import matplotlib.pyplot as plt
    ####编写GM1_1函数
    def GM1_1(y,r)m = r+2 #m=r+rf(rf为预测的个数)####生成一次累加序列x11 = np.cumsum(y)####生成背景值序列z = 0.5 * x11[0:r - 1] + 0.5 * x11[1:r]z = z.reshape(-1, 1)####构造B,YE = np.ones(r - 1)E = E.reshape(-1, 1)B = np.hstack((-z, E))  # 矩阵的拼接Y = y[1: r]####参数求解get_parameteru = np.matmul(np.linalg.pinv(B), Y)  # 参数的最小二乘估计####求解x11_solve = np.zeros(m)y_solve = np.zeros(m)x11_solve[0] = y_solve[0] = y[0]for i in range(1, m):x11_solve[i] = (y[0]-u[1]/u[0])*np.exp(-u[0]*i)+u[1]/u[0]#白化方程的解####累减还原y_solve = np.diff(x11_solve)y_solve = np.r_[y[0], y_solve ]return y_solve, x11_solve, u####读取数据,运行函数
    y = np.array([4.1,4.05,4.09,4.05,4.02,
    3.9,3.8,3.62])
    r = 6 #用于建模的点数
    y_solve, x11_solve, u = GM1_1(y, r)
    print(f"预测值:{y_solve}")####误差估计
    error = np.zeros(len(y))
    for i in range(len(y)):error[i] = (y[i] - y_solve[i])/y[i]
    print("Errors: ", error####plot
    x = range(1, len(y)+1)
    plt.title('Result Analysis')
    plt.plot(x, y, color='green', label='training accuracy')
    plt.plot(x, y_solve, color='red', label='testing accuracy')
    plt.legend()  # 显示图例
    plt.show()
    

下表为参数求解的结果:

aaa bbb
0.00912861 4.15189105

下表为真实值和误差值的相对误差:

Errors(7)Errors(7)Errors(7) Errors(8)Errors(8)Errors(8)
−0.02973711-0.02973711−0.02973711 −0.07111693-0.07111693−0.07111693

下图为真实值和预测值的结果比较:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHPtJJBx-1611136166137)(灰色预测之GM(1,1)],教你快速上手数学建模!.assets/Figure_1.png)

以上这些就是关于GM(1,1)GM(1,1)GM(1,1)的介绍啦,你学会了吗?当你数学建模需要预测的时候,你就可以使用它喔,如果有任何问题可以联系我们,之后会为大家介绍灰色预测之DGM(1,1)DGM(1,1)DGM(1,1),敬请期待。

链图片转存中…(img-eHPtJJBx-1611136166137)],教你快速上手数学建模!.assets/Figure_1.png)

以上这些就是关于GM(1,1)GM(1,1)GM(1,1)的介绍啦,你学会了吗?当你数学建模需要预测的时候,你就可以使用它喔,如果有任何问题可以联系我们,之后会为大家介绍灰色预测之DGM(1,1)DGM(1,1)DGM(1,1),敬请期待。
更多请关注微信公众号:Python希望社

灰色预测之GM(1,1),教你快速上手数学建模!相关推荐

  1. 短视频美食自媒体怎么做?5步教你快速上手

    短视频美食自媒体怎么做?如果在20年前,你告诉我可以一边吃一边把钱赚了,我肯定会以为你在异想天开白日做梦,但是在自媒体如何发达的今天,这件事却变得非常容易.今天就给大家介绍一下,短视频美食自媒体究竟应 ...

  2. 数学建模学习(64):2022美赛C题股票投资策略回顾讲解,教你正确打数学建模比赛

    比赛结束,所以我才正式发一下自己的思路,美赛国赛我不会发比赛思路.我们来聊一聊美赛C题到底在怎么理解? 一.读题,教你正确读题 首先说一下我也犯的大忌:大家都知道我们大多数数学建模都是英文版的,题目也 ...

  3. gif制作方法教学,教你快速上手制作gif动图

    一招手把手教你将照片制作成gif动态图! 无论是短视频或是有意思的表情包图片,现如今愈来愈多的人习惯个性化设计制作gif了,自己动手丰衣足食.若是个人有这样的技术本领的情况,或是独立自主着手的好,既不 ...

  4. 独立站引流渠道小妙招,教你快速上手站外推广

    近年来越来越多传统外贸.平台大卖家转战独立站电商运营,"站外引流"作为独立站运营的核心问题,依然困扰着大量的独立站卖家.独立站电商本身非常重视品牌推广及单品爆款打造,在做好站内基础 ...

  5. Python学习六大路线,教你快速上手

    最近几年随着互联网的发展学习Python人越来越多,Python的初学者总希望能够得到一份Python学习路线图,小编经过多方面汇总,总结出比较全套Python学习路线,快速上手.对于一个零基础的想学 ...

  6. 即插即打!教你快速上手数码复合机USB打印

    在复合机设备的诸多功能中,USB直连打印功能是一项不可忽视的便捷功能.在企业的日常办公中,常规的网络打印固然方便快捷,可是相应的网络故障或者电脑端的驱动异常都有可能造成无法打印的情况,在这种情况下,U ...

  7. 如何制作电子画册?教你快速上手 | 云展网

    电子画册是企业营销宣传的重要途径之一 .它是一种集图文.声音.视频.动画等元素综合而成的数字杂志,支持在线传播,只要网络所及之处,就能实现营销宣传. 如何制作电子画册?其实,电子画册制作不难,只需确定 ...

  8. iphone11文件连接服务器教程,新入手iPhone 11?手把手教你快速上手熟悉IOS系统

    iPhone 11全系列三款新手机已经正式开售,近几天在各大旗舰店门市也可观察到店员几乎都是手把手教学,因为今年的三款iPhone 11手机没有Home键,全部都要用Face ID面部识别技术跟手势操 ...

  9. 业务流程图怎么画?3步+8张案例,5分钟教你快速上手!

    业务流程图能很好地帮助我们梳理业务,高效表达需求.尤其是产品经理在梳理业务时,经常会用到业务流程图,业务流程图会在产品经理画原型图前,帮助梳理产品业务流程,避免做无用功. 今天从业务历程图的基本介绍. ...

最新文章

  1. mysql 主从 MySQLroute_mysql主从复制
  2. 企业数据中心夏季冷却散热的十二大技巧
  3. SpringBoot笔记:SpringBoot集成MinIO分布式文件系统
  4. Android 设置界面的圆角选项
  5. 妈妈培养天才的13绝招
  6. 数据湖 数据仓库 数据集市_还原数据仓库/数据集市环境的两种方法
  7. mybatis关联查询之一对多,多对一,以及多对多
  8. python能做什么excel-python处理excel的优势是什么
  9. JavaScript文档,JQuery文档,CSS中文文档下载
  10. 微信扫码登陆(1)---扫码登录流程讲解、获取授权登陆二维码
  11. windows kafka安装
  12. 手机上有哪些不错的c语言编程软件?
  13. PHP 使用rabbitmq 入门教程
  14. php产品管理系统,企业商品进销存管理系统
  15. 机器学习期末考试判断题
  16. 是香蕉还是芭蕉,芭蕉和香蕉的区别
  17. 满减活动基础算法-java-类似淘宝满200减30
  18. linux+记账软件下载,快速记账软件下载-快速记账appv3.11.0-Linux公社
  19. Unity3D C#数学系列之矩阵基础
  20. 动态规划经典问题--TSP问题

热门文章

  1. 郑州大学计算机系王院长,郑州大学徐明亮教授、北京航天航空大学牛建伟教授来校开展学术交流...
  2. struts2标签的使用(一)
  3. 顺时针打印矩阵(旋转矩阵)
  4. 硬盘的主流技术,最新的硬盘技术
  5. 面试(hardware)
  6. 千里之行,始于足下——有感于平安林伟丹的分享
  7. android studio 下拉菜单,android studio 的下拉菜单Spinner使用详解
  8. 解决word目录右侧页码大小不一致和不对齐的问题
  9. iphone竖屏视频旋转_如何在iPhone上旋转视频
  10. 如何用PS做出一张海报