文章目录

  • 引入
  • 1 GM (1, 1)模型
  • 2 程序框架

引入

  灰色模型,又称灰色理论,具有实用性强、预测结果较稳定的优点;用于大数据量的预测,数据量较小时 (多于3个)也能取得较准确的结果。
  灰色预测以灰色模型为基础,其中以单序列一阶线性微分方程模型,即GM (1, 1)最为常用。

1 GM (1, 1)模型

  设有原始数据序列x0=(x01,x02,⋯,x0,n)\boldsymbol{x}_0=\left(x_{01}, x_{02}, \cdots, x_{0, n}\right)x0​=(x01​,x02​,⋯,x0,n​),nnn为数据个数,则以GM (1, 1)模型进行预测的基本步骤如下:
  1)x0\boldsymbol{x}_0x0​累加,以降低原始序列的波动性和随机性,获得新序列x1=(x11,x12,⋯,x1,n)\boldsymbol{x}_1=\left(x_{11}, x_{12}, \cdots, x_{1, n}\right)x1​=(x11​,x12​,⋯,x1,n​),其中x1tx_{1t}x1t​的计算如下:
x1,t=∑k=1tx0,k,t=1,2,⋯,nx_{1, t} = \sum_{k = 1}^t x_{0, k},\ \ \ \ t = 1, 2, \cdots, n x1,t​=k=1∑t​x0,k​,    t=1,2,⋯,n  2)建立x1,tx_{1, t}x1,t​的一阶线性微分方程:
dx1dt+ax1=u\frac{\mathrm{d} \bm{x}_1}{\mathrm{d} t} + a \bm{x}_1 = u dtdx1​​+ax1​=u其中a∈[−2,2]a \in [-2, 2]a∈[−2,2]、uuu为待定系数,称为发展系数和灰色作用量,且将aaa、uuu构成的矩阵记作a^=(au)\bm{\hat{a}} = \left( \begin{array}{l}a\\u \end{array}\right)a^=(au​)
  3)按以下方式生成B\boldsymbol{B}B矩阵和Yn\boldsymbol{Y}_nYn​向量:
B=[0.5(x11+x12)0.5(x12+x13)⋯0.5(x1,(n−1)+x1,n)]Yn=(x02,x03,⋯,x0,n)T\begin{array}{l} \boldsymbol{B} = \left[ \begin{array}{c} 0.5(x_{11} + x_{12})\\ 0.5(x_{12} + x_{13})\\ \cdots\\ 0.5(x_{1, (n - 1)} + x_{1, n})\\ \end{array} \right]\\ \\ \boldsymbol{Y}_n = (x_{02}, x_{03}, \cdots, x_{0, n})^{\mathrm{T}} \end{array} B=⎣⎢⎢⎡​0.5(x11​+x12​)0.5(x12​+x13​)⋯0.5(x1,(n−1)​+x1,n​)​⎦⎥⎥⎤​Yn​=(x02​,x03​,⋯,x0,n​)T​  4)使用最小二乘法求a^\bm{\hat{a}}a^:
a^=(BTB)−1BTYn\bm{\hat{a}} = (\boldsymbol{B}^{\mathrm{T}}\boldsymbol{B})^{-1} \boldsymbol{B}^T \boldsymbol{Y}_n a^=(BTB)−1BTYn​  5)将a^\bm{\hat{a}}a^带入微分方程,求得:
x^1,(t+1)=(x11−ua)e−at+ua\hat{x}_{1, (t + 1)} = (x_{11} - \frac{u}{a}) e^{-at} + \frac{u}{a} x^1,(t+1)​=(x11​−au​)e−at+au​这里写作x^1,(t+1)\hat{x}_{1, (t + 1)}x^1,(t+1)​是因为该值是一个近似值。
  6)对函数表达式x^1,(t+1)\hat{x}_{1, (t + 1)}x^1,(t+1)​及x^1,t\hat{x}_{1, t}x^1,t​进行离散,并通过以下方式还原x0x_0x0​原序列:
x^0,(t+1)=x^1,(t+1)−x^1,t\hat{x}_{0, (t + 1)} = \hat{x}_{1, (t + 1)} - \hat{x}_{1, t} x^0,(t+1)​=x^1,(t+1)​−x^1,t​  7)对建立的灰色模型进行检验,步骤如下:
  7.1)计算x0,tx_{0, t}x0,t​与x^0,t\hat{x}_{0, t}x^0,t​之间的残差e0,te_{0, t}e0,t​和相对误差q(x)q (x)q(x):
e0,t=x0,t−x^0,tq(x)=e0,tx0,t\begin{array}{c} e_{0, t} = x_{0, t} - \hat{x}_{0, t}\\ q (x) = \frac{e_{0, t}}{x_{0, t}} \end{array} e0,t​=x0,t​−x^0,t​q(x)=x0,t​e0,t​​​
  7.2)求原始数据x0x_0x0​的均值和方差s1s_1s1​;
  7.3)求e0,te_{0, t}e0,t​的均值qˉ\bar{q}qˉ​以及方差s2s_2s2​;
  7.4)计算方差比C=s2s1C = \frac{s_2}{s_1}C=s1​s2​​
  7.5)求小误差概率P=P{∣e0,t∣<0.6745s1}P = P \{ |e_{0, t}| < 0.6745 s_1 \}P=P{∣e0,t​∣<0.6745s1​};
  7.6)灰色模型精度检验表如下:

等级 相对误差qqq 方差比CCC 小误差概率PPP
1级 <0.01<0.01<0.01 <0.35<0.35<0.35 >0.95>0.95>0.95
2级 <0.05<0.05<0.05 <0.50<0.50<0.50 >0.80> 0.80>0.80

  8)利用模型进行预测:

x^0=[x^01,x^02,⋯,x^0,n,⏟原数据的模拟x^0,(n+1),⋯,x^0,(n+m)⏟数据预测]\bm{\hat{x}}_0 = \left[ \underbrace{\hat{x}_{01}, \hat{x}_{02}, \cdots, \hat{x}_{0, n}, }_{_{_{\rm 原数据的模拟}}}\ \underbrace{\hat{x}_{0, (n + 1)}, \cdots, \hat{x}_{0, (n + m)} }_{_{_{\rm 数据预测}}}\right] x^0​=[原数据的模拟​​x^01​,x^02​,⋯,x^0,n​,​​ 数据预测​​x^0,(n+1)​,⋯,x^0,(n+m)​​​]

2 程序框架

  代码实现,使用时只需给定序列和待预测数据个数:

function [hat_x] = test(x, n_pre)syms a u;  % 创建符号变量hat_a = [a, u]';  % 待定系数x1 = cumsum(x);  % 原始数据累加n = length(x);%% 生成B矩阵B = zeros(1, n - 1);for i = 1 : n - 1B(i) = (x1(i) + x1(i + 1)) / 2; endB = [-B; ones(1, n - 1)];%% 生成Y_n矩阵Y_n = x;Y_n(1) = [];Y_n = Y_n';%% 求解hat_ahat_a = inv(B * B') * B * Y_n;a = hat_a(1);u = hat_a(2);%% 预测hat_x1 = [];hat_x1(1) = x(1);for i = 2 : (n + n_pre)hat_x1(i) = (x(1) - u /a) / exp(a * (i - 1)) + u / a;endhat_x = [];hat_x(1) = x(1);for i = 2 : (n + n_pre)hat_x(i) = hat_x1(i) - hat_x1(i - 1);end
end

参考文献:
[1]:MATLAB在数学建模中的应用,卓金武等。

Matlab与灰色模型预测相关推荐

  1. 【电力预测】基于matlab GUI灰色模型电力负荷预测【含Matlab源码 769期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [电力负荷预测]基于matlab GUI灰色模型电力负荷预测[含Matlab源码 769期] 获取代码方式2: 通过订阅紫极神光博客付费专 ...

  2. 【Matlab优化预测】布谷鸟算法优化灰色模型预测【含源码 1244期】

    一.代码运行视频(哔哩哔哩) [Matlab优化预测]布谷鸟算法优化灰色模型预测[含源码 1244期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]屈迟文,傅 ...

  3. arma预测matlab讲解,MATLAB中ARMA模型预测差分问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我MATLAB预测风速的程序,程序不是我自己写的,我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解,我也不知道对不对. 程序1 X=lo ...

  4. arma matlab函数,MATLAB中ARMA模型预测差分问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我MATLAB预测风速的程序,程序不是我自己写的,我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解,我也不知道对不对. 程序1 X=lo ...

  5. 为什么MATLAB用ar模型预测误差很大,关于AR模型预测的参数问题

    本帖最后由 zhuyuanzhao 于 2017-4-19 09:27 编辑 问题1:最近利用AR模型仿真电力线背景噪声,利用示波器录制了一段波形,进行计算,已经求得AR模型的参数以及预测方差值,如何 ...

  6. Matlab/simulink MPC模型预测风电调频,风储调频,一次调频,频域模型。

    Mpc预测风电出力,进而使得风电参与一次调频,风电内部结构详细.风储联合调频.

  7. 基于灰色模型的端口短信预测和垃圾短信治理研究

    [摘  要]根据对近年来手机短信和垃圾短信有关数据进行分析,显示端口短信越来越活跃,通过对端口信息和垃圾短信最主要的构成部分商业广告短信息进行相关分析,得出两者具有明显的正相关性.以官方公布的2014 ...

  8. python灰色模型代码_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...

    来源公式推导连接 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰 ...

  9. python灰色预测_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...

    关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰色预测概述 灰色预 ...

  10. 灰色模型(GM)的局限浅谈

    灰色模型就是当有很多未知因素左右变量时,对变量进行预测的建模.以灰色系统中单序列一阶线性微分方程模型GM(1,1)模型最为常用,具体介绍看该论文. MATLAB封装好的gm11.m函数可在这里下载,已 ...

最新文章

  1. IDEA下使用Jetty进行Debug模式调试【含演示GIF图】
  2. 绝地求生现在服务器稳定吗,吃鸡服务器不稳定?《绝地求生》国服宣布将首次使用超性能服务器...
  3. Redis 管道技术
  4. 【瞎扯】我的OI之路
  5. Tengine HTTPS原理解析、实践与调试
  6. oracle xe gentoo,Oracle在gentoo下安装
  7. 前端学习(2009)vue之电商管理系统电商系统之渲染商品属性的结构
  8. 为什么我们一直赚不到钱?
  9. 计算机硬盘使用寿命,固态硬盘怎么测剩余寿命?SSD固态硬盘使用寿命检测方法...
  10. python qq模块_用python写一个QQ机器人
  11. 软件测试中报表测试用例设计方法总结
  12. 微信公众号开发C#系列-1、微信公众平台注册
  13. 微信小程序获取用户收货地址
  14. CS3825EO 2X25W D类功放芯片 耐压5V-26V 可替换AD52068
  15. 启动windows服务时出现“错误1053:服务没有及时响应启动或控制请求”的解决方法
  16. java坦克大战课设报告_java课程设计之坦克大战
  17. 【RPA自动化|提升办公效率|懒人必备】微信自动点赞
  18. 电脑电源功率不足会有什么影响
  19. 服务器绑定自己的域名-腾讯云(超详细)
  20. 框架设计原则(梁飞)

热门文章

  1. python海龟交易源码_海龟交易系统的Python完全版 | RiceQuant米筐量化社区 交易策略论坛...
  2. 关于Altium Designer PCB元器件的3D封装
  3. JAVA代码翻译更新(第五篇)
  4. RTF文件格式编码说明
  5. H3C如何配置raid1
  6. python做生物信息学分析_Python从零开始第五章生物信息学⑤生存分析(log-rank)
  7. 工业相机——点阵相机与线阵相机
  8. 【树莓派】简易LoRa网关搭建+服务器设置一条龙教程(the things network)
  9. mysql 2037年_Correct way to store MySQL date after year 2037
  10. 【CPRI】(1)CPRI基本概念和相关术语