灰色预测模型matlab_灰色预测

2023-11-18

你好,我是goldsunC
让我们一起进步吧!

文章目录

灰色预测引言灰色预测的类型最简单的模型:GM(1,1)GM(1,1)模型实例原理及求解数据处理方法:1.累加生成2.累减生成3.均值生成求解步骤框图求解步骤小误差概率p及方差比检验标准(可在题目无要求精度时相对比较)The End : MATLAB求解代码

灰色预测

引言

古人说:“凡事预则立,不预则废。”办任何事情之前,必须先调查研究,摸清情况,深思熟虑,有科学的预见,周密的计划,这样才能达到预期的成功。

所谓预测,就是人们根据可获得的历史和现实数据,资料,运用一定的科学方法和手段,对人类社会、政治、军事、科学技术等发展趋势作出科学推测,以指导未来行动的方向,减少处理未来事件的盲目性。

灰色预测基于人们对系统演化不确定性特征的认识,运用序列算子对原始数据进行生成、处理,挖掘系统演化规律,建立灰色系统模型,对系统的未来状态作出科学的定量预测。同时,对于一个具体问题,究竟应该选择什么样的预测模型,应以充分的定性分析结论作为依据。模型的选择不是一成不变的,一个模型要经过多种检验才能判定其是否合理,是否有效。只有通过检验的模型才能用作预测模型。

灰色预测的类型

  • 时间序列预测

  • 灾变预测

  • 波形预测

  • 系统预测

本篇文章例子为时间序列预测,其他类型使用方面较少并且比较深入,大家可以去借鉴别人文章。

最简单的模型:GM(1,1)

GM(1,1)模型

G:Grey(灰色);M:模型;(1,1):只含有一个变量的一阶微分方程模型;

实例

年份 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
污水/亿吨 174 179 183 189 207 234 220.5 256 270 285

题目要求:根据给定表中数据预测未来10年的长江污水量

原理及求解

数据处理方法:

1.累加生成

原始序列为X(x=1 2 3…)
生成序列为Y(y=1 2 3…)
则:
Y(1)=X(1)
Y(2)=Y(1)+X(2)
Y(3)=Y(2)+X(3)

所谓的累加生成,就是将同一序列中的数据逐次相加以生成新的数据的一种手段,累加前的数列成为原始数列。累加后的数列称为原始数列。累加后的数列成为生成数列。累加生成是使灰色系统变白的一种方法,它在灰色系统理论中占有极其重要的地位。通过累加生成可以看出灰量累积过程的发展态势,使杂乱无章的原始数据中蕴含的积分特性或规律加以显化。

2.累减生成

原始序列为X(x=1 2 3…)
生成序列为Y(y=1 2 3…)
则:
Y(1)=X(1)
Y(2)=X(2)-X(1)
Y(3)=X(3)-X(2)

累减生成是在获取增量信息时常用的生成,多数情况下累减生成对累加生成起还原作用,即累减生成是累加生成的逆运算。

3.均值生成

原始序列为X(x=1 2 3…)
生成序列为Y(y=1 2 3…)
Y(1)=X(1)
Y(2)=aX(2)+(1-a)X(1)
Y(3)=aX(3)+(1-a)X(2)

在收集数据的时候,由于一些不易克服的困难导致数据序列出现空缺或无法使用的异常数据,需要在数据预处理中解决。均值生成是常用的构造新数据、填补老数据空穴、生成新数列的方法。

求解步骤框图

流程图:

90e7fb6b8fa6d9d3dec448b195587967.png

求解步骤

Step1:

首先建立时间序列如下:

  • X=(x(1),x(2),…x(n))

  • 求级比L(k):

  • L(k)=x(k-1)/x(k)

  • 当所有的L(k)落在【exp(-2/(n+1)),exp(2/(n+1))】区间之内,认为可以做比较满意的GM(1,1)建模。(并不是说有的数据没落入区间之内就不能建模,只是落在区间之内建模效果比较好)。

Step2:

将原始数据时间序列进行累加生成

  • 设累加生成之后的序列为X'Step3:

对累加生成之后的序列进行邻均值生成。
邻均值生成是对等时距数列,用相邻数据的平均值构造生成新的数据。
设新生成的邻均值序列为Z,则:

Z(k)=(X'(k)+X'(k+1))/2    ,k=1,2,…n

Step4:

构造数据矩阵B及数据向量Y

80c0194dd7d91d75adb505317bc30040.png
Step5:

计算发展系数a及灰作用量b

计算方法如下:

ab6697060071fcabffbf2c51f78fcc19.png

Step6:

建立模型求解时间响应函数并进行预测

  • GM(1,1)模型X(k)+aZ(k)=b的白化方程:

7dfea169e70f197a9a8f46cb2e4de278.png

的时间响应函数为:
855206dd47ed06189f0f785007013346.png

Step7:精确度检验

相对残差检验

方差比检验

小误差概率检验

相对残差检验法:
设实际数据序列为X(k)
设模拟数据序列为X’(k)
则残差&为:
&(k)=X(k)-X‘(k)
相对误差*k=|&(k)|/X(k)

方差比检验法:
设残差序列为&(k),其序列标准差为A。
原始序列为X(k),其序列标准差为B。
则方差比C=A/B。

小误差概率检验法:
设小误差概率为p,残差序列平均值为&:P={|&(k)-&|<0.6745B}
则p=P/原始数据序列长度

小误差概率p及方差比检验标准(可在题目无要求精度时相对比较)

预测精度等级 p(小误差概率) C(方差比)
一级 >0.95 <0.35
二级 >0.8 <0.5
三级 >0.7 <0.65
四级 >0.6 >=0.65(不合格)

一般用作模型预测的话,精度等级要达到二级以上。

The End : MATLAB求解代码

clc;clear;
%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';
%原始数列
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];
%级比检验
n = length(A);
min=exp(-2/(n+1));
max=exp(2/(n+1));
for i=2:n
    ans(i)=A(i-1)/A(i);
end
ans(1)=[];
for i=1:(n-1)
    if ans(i)min
    else
        fprintf('第%d个级比不在标准区间内',i)
        disp(' ');
    end
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';

%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1);
b = c(2);

%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+10)
    F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end

%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+10)
    G(i) = F(i) - F(i-1); %得到预测出来的数据
enddisp('预测数据为:');
G

%模型检验

H = G(1:n);
%计算残差序列
epsilon = A - H;

%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差平均值Qdisp('相对残差Q检验:')
Q = mean(delta)

%法二:方差比C检验
disp('方差比C检验:')
C = std(epsilon, 1)/std(A, 1)

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

%绘制曲线图
t1 = 1995:2004;
t2 = 1995:2014;

plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
xlabel('年份'); ylabel('污水量/亿吨');
legend('实际污水排放量','预测污水排放量');
title('长江污水排放量增长曲线');
grid on;

 • end • 

走在路上

goldsunC

59cbb52f955d28e6176c5d811852eaaf.png
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

灰色预测模型matlab_灰色预测 的相关文章

  • Javascript模块化规范之CommonJs,AMD,CMD

    Javascript模块化编程规范 一 模块化编程背景 1 什么是模块化编程 2 Javascript模块化编程有哪些规范 二 Javascript模块化编程 1 CommonJs 2 AMD异步模块定义 3 CMD 通用模块定义 4 ES
  • printf()函数

    printf函数对输出表中各量求值的顺序是自右至左进行的 也即程序执行的过程中参数的压栈顺序是从右至左的 并且压栈时压入的是值 因为参数的压栈是在程序的执行过程中 所以即使参数列表中有函数调用则在压栈时也即计算出来 即调用此函数去执行 把得
  • MathType改变字体大小

    目录 一 MathType中的公式字体 二 临时自定义字体大小 三 更改默认字体大小 四 总结 一 MathType中的公式字体 MathType中默认的字体大小为12pt 在word中即小四 word字体对应MathType的字体大小如下
  • Android Studio开发环境的搭建

    Android Studio开发环境的搭建 一 实验目的及任务 Windows下掌握Android Studio的安装和配置 模拟器的创建 Activity的创建和注册 二 实验环境 Jdk Android Studio 三 实验步骤 An
  • 7 种提升SpringBoot 吞吐量神技

    架构师专栏 2022 04 11 08 44 大家好 我是磊哥 一 异步执行 实现方式二种 1 使用异步注解 aysnc 启动类 添加 EnableAsync注解 2 JDK 8本身有一个非常好用的Future类 CompletableFu
  • 计算两个数之和,不能用+ = 运算符

    在lintcode的一个简单的算法题 计算两数的和 不能用 运算符 对于这个题 我是一点思路都没有 不用 那能用什么计算呢 于是在网上找了找答案 答案其实很简单 主要是涉及到运算 我是觉得应该记一下 所以才将这个题写下来 具体代码 异或 运
  • centos 6.5 连接MySQL 提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:

    centos 6 5 连接MySQL 提示 ERROR 1045 28000 Access denied for user root localhost using password NO CentOs 第一次登入MySQL 默认超级用户
  • 深度学习中的优化算法之AdaGrad

    之前在https blog csdn net fengbingchun article details 123955067 介绍过SGD Mini Batch Gradient Descent MBGD 有时提到SGD的时候 其实指的是MB
  • 链表和线性表的优缺点

    链表和线性表的优缺点 作为我们最先接触的两个数据结构 链表和线性表的优缺点都较为明显 并且二者互相补足 文章目录 链表和线性表的优缺点 线性表 线性表的组成 线性表的缺点 线性表的优点 链表 链表的组成 链表的优点 链表的缺点 总结 线性表
  • Spring系列之BeanFactory扩展(BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor)

    先来看几个问题 BeanFactoryPostProcessor是做什么的 BeanDefinitionRegistryPostProcessor是干什么的 BeanFactoryPostProcessor和BeanDefinitionRe
  • Uni-app 之uParse 富文本 样式

    富文本如果内容过多 会导致有些列不出现在屏幕内 如果只被挡的只有一两列 显示出来也不拥挤 可以修改样式使其全部展示出来 增加tag style
  • 什么是项目管理?项目经理应该如何进行管理?

    项目管理 一是指一种管理活动 一种有意识地按照项目的特点和规律 对项目进行组织管理的活动 二是指一种管理学科 以项目管理活动为研究对象的一门学科 它是探求项目活动科学组织管理的理论与方法 就是把各种知识 技能 手段和技术应用于项目活动之中
  • unity2D横版游戏教程10-场景控制

    我们让角色掉出地图时重置游戏 我们在Hierarchy那里创建一个一个空项目 命名为DeathLine 也就是死亡线 我们给它添加一个盒体碰撞器 调整一下碰撞器 我们要把这个碰撞器当做触发器使用 所以我们勾选Is Trigger 我们既然用
  • DevOps初识

    博主入职了 正在学习一些在学校没有接触过的东西 在此进行记录 背景 随着软件发布迭代的频率越来越高 传统的 瀑布型 开发 测试 发布 模式已经不能满足快速交付的需求 打破开发和运维的壁垒 聪明的大佬创造出一套模式 就是devops 当我们提
  • qt中treeView的使用

    参考博客 1 https blog csdn net CSND Ayo article details 71106067 utm medium distribute pc relevant none task blog BlogCommen
  • CSS学习总结

    CSS学习视频 狂神说 CSS 目录 简介 什么是CSS 什么是CSS CSS发展史 快速入门 CSS的3种导入方式 选择器 基本选择器 层次选择器 结构伪类选择器 属性选择器 美化网页元素 为什么要美化网页 字体样式 文本样式 阴影 超链
  • sonarqube代码规则配置

    sonarqube做代码检测 可以自定义配置规则库的规则和绑定项目 方法如下 1 进入sonarqube质量配置页面 选择某一语言 点击右侧设置按钮 选择复制 2 输入名称后 点击复制 进入配置页面 3 点击修改项目 可以选择当前已存在的项
  • 谷歌浏览器崩溃之错误代码:RESULT_CODE_MISSING_DATA

    打开谷歌 突然页面崩溃了 所有插件提示也用不了了 页面显示崩溃的错误代码是 RESULT CODE MISSING DATA 我在网上找到一个大神的解决方法 亲测有限 解决方法 首先在谷歌浏览器右键打开属性 在箭头所指的位置复制粘贴 no
  • 用远见超越未见

    2022年是极不平凡的一年 外部的世界局势逐步恶化 内部的新冠疫情转段迈向新阶段 2022年也是伟大的一年 党的二十大胜利召开 党的二十大报告就 推进国家安全体系和能力现代化 坚决维护国家安全和社会稳定 作出专章部署 明确指出 国家安全是民

随机推荐

  • AD16出现your licence is already used on computer的解决办法

    AD16出现报错警告如何解决 AD16持续出现报错警告 AD为什么会报错 如何解决报错 AD16持续出现报错警告 AD为什么会报错 在使用破解版AD的时候 你用的注册表跟别人的注册表一样 也就是说你两用的是同一个安装包 用的是相同的注册码
  • 【第一天】Linux基础命令1

    聊一聊 Hello 好久不见 好久没更新了 因为小编现在是一名大三专科生 正在准备升本 所以正在全力进行备考 备考的过程中 也算是属于没怎么碰过电脑的那种 以前学的知识都忘的差不多了 于是 我决定每天抽出两到三个小时 来写一篇知识总结 这样
  • VUE3 + TS + MapboxGL + 拖拽定位

    VUE3 TS MapboxGL 拖拽定位 mapbox的拖拽定位 相对于其他api来说还是相对容易实现的 只需要在中心创建图层 之后在地图移动时候一直更改图层的中心即可 首先 安装部分不过多描述 官网安装地址 之后 要使用mapboxGL
  • Linux启动网卡时出现RTNETLINK answers: File exists错误解决方法

    一 问题描述 VMware中克隆虚拟机是经常的事情 虽然如此 用到虚拟机时 本人还是喜欢新安装一个操作系统 针对服务器的应用 在安装操作系统时 一并安装好 并且也花不了多少时间 但最近需要大量的配置一样的虚拟机进行测试 故安装了一个模板虚拟
  • 几种基本放大电路详解

    可提前了解的文章 运算放大器 运放 介绍 注意 此处我们采用的是Multisim软件仿真 链接中有详细安装教程 注意 仿真只是数学运算 实际情况的话 就不是数学运算那么简单 有很多复杂的因数在里面 所以具体情况要参照实际电路搭建 比如说 之
  • C++模板-33-类模板和函数模板的区别

    这篇开始学习类模板相关知识 本篇主要学习什么是类模板 还有类模板和函数模板的区别 1 类模板语法 template
  • Java调试的变迁:从System.out.println到log4j

    jungleford如是说 用惯了VC的人刚接触Java大概很不习惯代码的调试 的确 在M 的大部分IDE都做得相当出色 包括像VJ 这样一直被Java程序员称为是 垃圾 的类库 记得以前在瀚海星云的Java版提有关VJ问题的人是有可能被封
  • linux下python第三库(setuptools)的安装

    rpm源的下载网址 http rpm pbone net http www rpmfind net linux RPM index html python第三方模块的下载网址 https pypi python org pypi setup
  • amd 皓龙 服务器 芯片,全面解读 关于AMD皓龙6000平台的那些事

    今年3月30日 AMD面向全球发布了代号 Magny Cours 的AMD皓龙6100处理器 在4月19日 AMD在上海召开AMD皓龙6000系列平台发布会 标志着AMD皓龙6000平台正式登录中国 在x86服务器处理器中 AMD皓龙堪称一
  • java中的静态方法是什么

    静态方法是使用公共内存空间的 就是说所有对象都可以直接引用 不需要创建对象再使用该方法 然后在含有main方法的类中使用这个类时 对与以上非静态和静态方法的引用方式是不同的 如下 public class mainClass int sum
  • vscode可以调试c但是无法调试c++程序的

    安装Vscode后调试c程序正常 但是调试c 程序出现问题 出现launch program xxxxxx does not exist的问题 我发现是无法正常生成exe文件导致的问题 当我们对c程序进行调试时 可以正常生成exe文件 但是
  • 太牛逼了!从Python入门到入魔

    总被读者问到 我看完了python入门的书 后面就不知道要学什么了 今天就给你们整理全套入门到进阶的教程 这套教程非常全面而且详细 从Python入门到Python进阶 Django Flask等Web框架以及爬虫 数据库 算法与数据结构等
  • 计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。

    分类ip地址中 保留地址有哪些 具体点说说 作业 以下文字资料是由 历史新知网www lishixinzhi com 小编为大家搜集整理后发布的内容 让我们赶快一起来看一下吧 分类ip地址中 保留地址有哪些 具体点说说 作业 A类地址中的私
  • Vue开发组件库

    Vue开发组件库 1 创建项目 npm install g vue cli vue create 项目名 针对于vue脚手架生成的项目需要做出一些调整 将src重命名为examples 防止第三方开发者产生的歧义 添加examples同级目
  • MySQL CRUD (带样例)

    目录 1 Create 创建 1 1 单行数据 全列插入 1 2 多行数据 指定列插入 1 3 插入否则更新 1 4 替换 2 Retrieve 读取 2 1 SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结
  • 螺旋式排列数组

    文章目录 前言 解题思路 上代码 总结 前言 螺旋式排列数组在letcode中属于中等难度的题型 但是对于俺这种道行浅的人再次重新拾起正吃灰的C语言的菜鸟来说确实不容易 其实思路不难 按主要是卡在了二维数组空间的分配问题上 最后调试才将代码
  • 【软件测试】selenium3

    自动化测试的概念 自动化测试指软件测试的自动化 在预设状态下运行应用程序或者系统 预设条件包括正常和异常 最 后评估运行结果 将人为驱动的测试行为转化为机器执行的过程 自动化测试就相当于将人工测试手段进行转换 让代码去执行 提高测试效率 保
  • python中的groupby()函数

    1 groupby 函数介绍 groupby 函数扫描整个序列并且查找连续相同值 或者根据指定key函数返回值相同 的元素序列 在每次迭代的时候 它会返回一个值和一个迭代器对象 这个迭代器对象可以生成元素值全部等于上面那个值的组中所有对象
  • 【深度学习】经典的卷积神经网络模型介绍(LeNet、AlexNet、VGGNet、GoogLeNet、ResNet和MobileNet)

    经典的卷积神经网络模型介绍 卷积神经网络简介 一 LeNet 1 INPUT层 输入层 2 C1层 卷积层 3 S2层 池化层 下采样层 4 C3层 卷积层 5 S4层 池化层 下采样层 6 C5层 卷积层 7 F6层 全连接层 二 Ale
  • 灰色预测模型matlab_灰色预测

    你好 我是goldsunC让我们一起进步吧 文章目录 灰色预测引言灰色预测的类型最简单的模型 GM 1 1 GM 1 1 模型实例原理及求解数据处理方法 1 累加生成2 累减生成3 均值生成求解步骤框图求解步骤小误差概率p及方差比检验标准