【MATLAB】GM(1,1) 灰色预测模型及算法

一、灰色预测模型概念

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

二、使用步骤

1.使用条件


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

注:

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

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,因此有理由接着进行建模。

(2)后验差比检验

后验差比C值用于模型精度等级检验,该值越小越好,一般C值小于0.35则模型精度等级好,C值小于0.5说明模型精度合格,C值小于0.65说明模型精度基本合格,如果C值大于0.65,则说明模型精度等级不合格。

三、总结

 算法(1)

clc,clear
a = [2.874,3.278,3.337,3.39,3.679];%初始数据
n = length(a); %数据的长度
k=1:n;
k2=1:(n+2);  %【】要预测未来几年的或其他的,改这里,再只改下面b4和b5的n,改成一样的,b5存的就是预测的值%其他都不需要改%(n+2)意为预测未来2年的  
%进行累加
b=zeros(1,n);  %对存放累加的矩阵进行初始化
b(1)=a(1);   %累加的第一项
for i=2:nb(i)=b(i-1)+a(i);
end%计算光滑比
b1=zeros(1,n-1); %初始化
for i=1:(n-1)b1(i)=a(i+1)/b(i);  %即b1(1) = a(2)/a(1)  b1(2) = a(3)/(a(1)+a(2)) ....
endc = 0.7;%光滑阈值
count = 0; %计数
for i=1:(n-1)if b1(i)<0.6   %这里可以变count=count+1;end
end
if(count/(n-1))>0.7 %cdisp('数据是光滑的')
end%计算模型背景值
b2=zeros(1,n-1);
for i=2:nb2(i-1) = 0.5*b(i-1)+0.5*b(i);
end%计算最小二乘估计
A=[(-b2)',ones(n-1,1)];
Y=a(2:n)'  %a(2:5)指的是取原始数据第2到5个,再进行转置
b3=zeros(2,1);
b3=inv(A'*A)*(A'*Y)  %最终得到两个数a和b%计算一次累加的预测值
b4=zeros(1,n+2);
b4(1)=b(1);
for i=2:n+2b4(i)=(b(1)-b3(2)/b3(1))*exp(-b3(1)*(i-1))+b3(2)/b3(1)
end%最终计算预测值
b5=zeros(1,n+2);
b5(1)=b4(1);
for i=2:n+2b5(i)=b4(i)-b4(i-1)
endscatter(k,a,'r') %画散点图    初始数据
hold on %可使两个图在一个窗口上显示
scatter(k2,b5,'b')    %预测值

算法(2)

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:mJiBi(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<FanWeidisp(['数据通过级别检验']);
else disp(['数据不通过级比检验']);
end%对原始数列 A 做累加得到数列 B
B = cumsum(A);
%对数列 B 做紧邻均值生成
for i = 2:nC(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+T2F(i) = (A(1)-b/a)*exp(-a*(i-1))+ b/a;
end
%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:T1+T2G(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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python TypeError: unsupported operand type(s) for +: ‘int‘ and ‘str‘

在键入数值进行相加运算时&#xff0c;报了这样一个错误 类型错误&#xff1a;不支持操作类型为整数和字符串 错误分析&#xff1a;sumsuminput() 未被系统识别&#xff0c;导致程序错误 解决方法&#xff1a;给键入的数值定义&#xff0c;声明为整数 sumsumint(input()) 即…

【论文阅读】DEPIMPACT:反向传播系统依赖对攻击调查的影响(USENIX-2022)

Fang P, Gao P, Liu C, et al. Back-Propagating System Dependency Impact for Attack Investigation[C]//31st USENIX Security Symposium (USENIX Security 22). 2022: 2461-2478. 攻击调查、关键边、入口点 开源&#xff1a;GitHub - usenixsub/DepImpact 目录 1. 摘要2. 引…

前端学习——ajax (Day3)

AJAX原理 - XMLHttpRequest 使用 XMLHttpRequest <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

消息队列(一)-- RabbitMQ入门(1)

初识 RabbitMQ 核心思想&#xff1a;接收并转发消息。可以把它想象成一个邮局。 producer&#xff1a;生产者 queue&#xff1a;队列 consumer&#xff1a;消费者什么是消息队列 MQ&#xff08;Message Queue&#xff09;&#xff1a;本质是队列&#xff0c;FIFO先入先出&…

【【直流电机驱动PWN】】

直流电机驱动PWN 前面都是沙县小吃&#xff0c;这里才是满汉全席 直流电机是一种电能转化成机械能的装置 直流电机有两个电极 当电机正接 电机正转 当电机负接 电机倒转 电机还有步进电机 舵机 无刷电机 空心杯电机 因为电机是一个大功率器件并不太好直接接在IO端口上所以我…

脑电信号处理与特征提取——1. 脑电、诱发电位和事件相关电位(胡理)

目录 一、 脑电、诱发电位和事件相关电位 1.1 EEG基本知识 1.2 经典的ERPs成分及研究 1.2.1 ERPs命名规则及分类 1.2.2 常见的脑电成分 1.2.3 P300及Oddball范式 1.2.4 N400成分 一、 脑电、诱发电位和事件相关电位 1.1 EEG基本知识 EEG(Electroencephalogram)&#x…

【Mysql数据库面试01】内连接 左连接 右连接 全连接

【Mysql数据库】内连接 左连接 右连接 全连接 0.准备1.内连接1.1 SQL(不带where)1.2 SQL&#xff08;带where&#xff09;1.3总结 2.左连接2.1SQL&#xff08;不带where&#xff09;2.2SQL&#xff08;带where&#xff09;2.3总结 3.右连接3.1 SQL&#xff08;不带where&#x…

表单验证:输入的字符串以回车分隔并验证是否有

公司项目开发时&#xff0c;有一个需求&#xff0c;需要对输入的字符串按回车分隔并验证是否有重复项&#xff0c;效果如下&#xff1a; 表单代码&#xff1a; <el-form-item label"IP地址条目&#xff1a;" prop"ipAddressEntry"><el-inputtype&…

Vue中TodoList案例_静态

MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认"></div> </template><script> export default {name: "MyHeader"…

生产环境Session解决方案、Session服务器之Redis

目录 一、服务器配置 二、安装nginx 三、安装配置Tomcat&#xff1a; 四、配置session Session服务器之Redis Redis与Memcached的区别 安装部署redis 一、服务器配置 IP地址 主机名 软件包列表 192.168.100.131 huyang1 nginx 192.168.100.133 huyang3 JDK Tomca…

微信小程序上,实现图片右上角数字显示

微信小程序上&#xff0c;实现图片右上角数字显示 直接上代码&#xff1a; 样式代码index.wxss如下&#xff1a; .circle_rednum {position: absolute;color: white;font-size: 13px;background-color: #EC2F43;width: 23px;height: 23px;line-height: 23px;left: 80%;top: …

【docker】docker部署tomcat

目录 1.1 搜索tomcat镜像1.2 拉取tomcat镜像1.3 创建容器&#xff0c;设置端口映射、目录映射1.4 测试 1.1 搜索tomcat镜像 docker search tomcat1.2 拉取tomcat镜像 docker pull tomcat1.3 创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建tomcat目录用于存…

数据库备份还原-mysqldump、mydumper、xtrabackup、压缩

数据库备份&#xff0c;数据库为school&#xff0c;素材如下 一、创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARC…

Linux中常用的指令

ls ls [选项] [目录或文件] 功能&#xff1a;对于目录&#xff0c;列出该目录下所有的子目录和文件&#xff1b;对于文件&#xff0c;列出该文件的文件名和其他属性 常用选项&#xff1a; -a:列出目录下的所有文件&#xff0c;包括以.开头的隐藏文件 -l:列出文件的详细信息。…

单片机第一季:零基础11——实时时钟DS1302

目录 1&#xff0c;DS1302 时钟芯片介绍 2&#xff0c;BCD码介绍 3&#xff0c;涉及到的寄存器 3.1&#xff0c;控制寄存器 3.2&#xff0c;日历/时钟寄存器 3.3&#xff0c;DS1302 的读写时序 4&#xff0c;相关代码 这一章我们来学习DS1302 时钟芯片&#xff0c…

如何在Windows上恢复已删除的文件?

大多数人在无意中删除了一些重要文件后无法恢复。这些文件被暂时删除&#xff0c;直到我们清空回收站才会消失。你可以通过右键单击回收站中的文件并选择还原选项来轻松恢复这些文件。但是&#xff0c;如果你清理回收站删除了文件怎么办&#xff1f;或者不小心使用Shift Delet…

观察者模式(java)

目录 结构 案例 代码实现 抽象观察者 抽象主题类 具体观察者 具体主题类 测试类 优缺点 优点 缺点 结构 在观察者模式中有如下角色&#xff1a; Subject&#xff1a;抽象主题&#xff08;抽象被观察者&#xff09;&#xff0c;抽象主题角色把所有观察者对象保存在一个…

zabbix通过JMX监控tomcat运行情况

第三阶段基础 时 间&#xff1a;2023年7月20日 参加人&#xff1a;全班人员 内 容&#xff1a; zabbix通过JMX监控tomcat 目录 zabbix通过JMX监控tomcat 一、配置java网关 二、修改zabbix服务端配置文件 三、安装tomcat 四、Zabbix-web端配置 zabbix通过JMX监控tomc…

苹果11手机设置手机跟踪功能

苹果11手机设置手机跟踪功能&#xff0c;就算是手机丢了&#xff0c;也能通过查询手机定位在哪里。 第一步&#xff1a;点击Apple ID进入详情 第二步&#xff1a;点击“查找” 第三步&#xff1a; 第四步&#xff1a; 到了这步&#xff0c;就算是设置成功。 下面需要到官方查询…