Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >灰色预测模型在matlab数据预测中的应用【编程算法】

灰色预测模型在matlab数据预测中的应用【编程算法】

作者头像
巴山学长
发布于 2021-04-22 07:12:28
发布于 2021-04-22 07:12:28
3.7K00
代码可运行
举报
文章被收录于专栏:巴山学长巴山学长
运行总次数:0
代码可运行

概述算法:灰色预测模型用于对原始数据(≥4个)做中短期预测,其中,GM(1,1)模型适用于具有较强的指数规律的序列,只能描述单调的变化过程,而GM(2,1)模型适用于非单调的摆动发展序列或具有饱和的S形序列。

GM(1,1)编程步骤:

1.建立时间序列

2.检验数据是否符合要求

3.计算一次累加生成序列

4.计算邻均值等权数列

5.构造矩阵B、Y

6.计算发展系数a和灰作用量b

7.计算模型拟合值

8.模型精度评定(后验差检验)

①计算残差

②计算标准差

③计算后验差比值、小误差概率

④查表定级

GM(2,1)编程步骤与GM(1,1)类似。

下面就一起来看看如何将优雅的数学语言转换成matlab语言吧。

GM(1,1)源代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clear;clc;
% 建立时间序列【输入】
x0 = [15.9 15.4 18.1 21.3 20.1 22.0 22.6 21.4]';
% 需要预测几期数据【输入】,预测数据见x0_hat变量
count = 2;
% 检验数据是否符合要求
n1 = length(x0);
lmd = x0(1:end-1)./x0(2:end);
flag = min(lmd)>exp(-2/(n1+1)) & max(lmd)<exp(2/(n1+1));
if ~flag
    error('数据级比不符合要求');
end
% 计算一次累加生成序列
x1 = cumsum(x0);
% 计算邻均值等权数列
z1 = 0.5 * ( x1(1:end-1) + x1(2:end) );
% 构造矩阵BY
B = [-z1,ones(n1-1,1)];
Y = x0(2:n1);
% 计算发展系数a和灰作用量b
u = (B'*B)\(B'*Y);
a = u(1);
b = u(2);
% 计算模型拟合值
k = (1:n1-1+count)';
x0_hat = [x0(1);(1-exp(a))*(x0(1)-b/a)*exp(-a*k)];
disp('预测数据:')
x0_hat(n1+1:end)
% 模型精度评定
e = x0(1:n1)-x0_hat(1:n1);
s1 = std(x0);
s2 = std(e);
c = s2/s1;
p = length(find(e-mean(e)<0.6745*s1))/n1;
if p>=0.95 && c<=0.35
    disp('精度等级:1级(好)');
elseif p>=0.80 && c<=0.5
    disp('精度等级:2级(合格)');
elseif p>=0.7 && c<=0.65
    disp('精度等级:3级(勉强)');
else
    disp('精度等级:4级(不合格)');
end
% 绘图说明
plot(1:n1,x0,'ro','LineWidth',2.5);
hold on
plot(1:n1+count,x0_hat,'bo','LineWidth',2.5);
plot(1:n1+count,x0_hat,'b-','LineWidth',2.5);
hold off
legend('实测值','预测值','FontSize',18);

GM(2,1)代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clear;clc;
% 建立时间序列【输入】
x0 = [5.6 4.2 3.3 2.5 3.1 4.4 5.8]';
n1 = length(x0);
% 需要预测几期数据【输入】,预测数据见x0_hat变量
count = 2;
% 计算一次累加生成序列
x1 = cumsum(x0);
% 计算一次累减生成序列
alpx0 = x0(2:end)-x0(1:end-1);
% 计算邻均值等权数列
z1 = 0.5 * ( x1(1:end-1) + x1(2:end) );
% 构造矩阵BY
B = [ -x0(2:end),-z1,ones(n1-1,1)];
Y = alpx0;
% 计算发展系数a和灰作用量b
u = (B'*B)\(B'*Y);
% 计算模型拟合值
syms x(t)
x=dsolve(diff(x,2)+u(1)*diff(x)+u(2)*x==u(3),x(0)==x1(1),x(n1-1)==x1(n1));
xt=vpa(x,2);
x1_hat=subs(x,t,0:n1-1+count);
x1_hat=(double(x1_hat))';
x0_hat = [x0(1);diff(x1_hat)];
disp('预测数据:')
x0_hat(n1+1:end)
% 模型精度评定
e = x0(1:n1)-x0_hat(1:n1);
s1 = std(x0);
s2 = std(e);
c = s2/s1;
p = length(find(e-mean(e)<0.6745*s1))/n1;
if p>=0.95 && c<=0.35
    disp('精度等级:1级(好)');
elseif p>=0.80 && c<=0.5
    disp('精度等级:2级(合格)');
elseif p>=0.7 && c<=0.65
    disp('精度等级:3级(勉强)');
else
    disp('精度等级:4级(不合格)');
end
% 绘图说明
plot(1:n1,x0,'ro','LineWidth',2.5);
hold on
plot(1:n1+count,x0_hat,'bo','LineWidth',2.5);
plot(1:n1+count,x0_hat,'b-','LineWidth',2.5);
hold off
legend('实测值','预测值','FontSize',18);

通过学习相关算法并将算法转变为实际的编程语言是练习编程的一种重要途径,这不仅可以提升理论认知,还能提高实践动手能力。鉴于此,matlab爱好者公众号计划推出【编程算法】系列,将逐一介绍各类算法在matlab中实现,与大家一起来在算法的海洋里畅游。

若您对算法感兴趣,并有一定的matlab编程基础,欢迎将所学算法整理成文推送给我们。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
灰色理论预测模型
灰色理论 通过对原始数据的处理挖掘系统变动规律,建立相应微分方程,从而预测事物未来发展状况。  优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小;  缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。 灰色预测模型 在多种因素共同影响且内部因素难以全部划定,因素间关系复杂隐蔽,可利用的数据情况少下可用,一般会加上修正因子使结果更准确。  灰色系统是指“部分信息已知,部分信息未知“的”小样本“,”贫信息“的不确定系统,以灰色模型(G,M)为核心的模型体系。 灰色预测模
Angel_Kitty
2018/04/08
2.1K0
灰色理论预测模型
数学建模学习笔记(二十二)灰色预测(下)Verhulst模型
GM(1,1)模型适用于具有较强指数规律的序列,只能描述单调的变化过程。 对于非单调的摆动发展序列或有饱和的 S 形序列,可以考虑建立 GM(2,1),DGM 和 Verhulst 模型
zstar
2022/06/14
8681
数学建模学习笔记(二十二)灰色预测(下)Verhulst模型
灰色系统预测GM(1,1)模型
预备知识 (1)灰色系统 白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。 (2)灰色预测 灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。 目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。
AI那点小事
2020/04/20
2.5K0
灰色系统预测GM(1,1)模型
R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化
以苏州商品房房价为研究对象,帮助客户建立了灰色预测模型 GM (1,1)、 BP神经网络房价预测模型,利用R语言分别实现了 GM (1,1)和 BP神经网络房价预测可视化。
拓端
2024/12/19
1450
R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化
数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型
人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断(点击文末“阅读原文”获取完整代码数据)。
拓端
2023/08/31
2980
数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型
数学建模学习笔记(十九)K-means聚类的matlab和python实现
在本专栏前面几篇中曾记录了一下K-means的matlab代码,这次使用时发现并不好用,因此又整理了其他的K-means代码,实测可行。
zstar
2022/06/14
4470
数学建模学习笔记(十九)K-means聚类的matlab和python实现
商业分析python实战(一):企业所得税预测
考虑数据的可得性和与实际情况的关联性,选取2004年-2015年某企业相关维度的数据,具体字段名及说明如下表:
三猫
2023/08/31
3730
商业分析python实战(一):企业所得税预测
R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化
以苏州商品房房价为研究对象,帮助客户建立了灰色预测模型 GM (1,1)、 BP神经网络房价预测模型,利用R语言分别实现了 GM (1,1)和 BP神经网络房价预测可视化。
拓端
2023/03/20
4920
分类判决界面---W-H、H-K算法
对于两类问题,设n+1维增广训练模式x1, x2, ...,xN已符号规范化。如果训练模式是线性可分的,则存在权矢量w使不等式组
不去幼儿园
2024/12/03
1200
分类判决界面---W-H、H-K算法
【视频】Python用GM(1,1)灰色模型预测模型对电力预测
负荷预测是电力系统的重要工作之一,对电力系统各个部门的工作都起着非常重要的作用(点击文末“阅读原文”获取完整代码数据)。
拓端
2023/08/31
4370
【视频】Python用GM(1,1)灰色模型预测模型对电力预测
灰色预测模型_用excel作灰色预测步骤
灰色预测是对灰色系统所做的预测。目前常用的一些预测方法(如回归分析等),需要较大的样本,若样本较小,常造成较大误差,使预测目标失效。灰色预测模型所需建模信息少,运算方便,建模精度高,是处理小样本预测问题的有效工具。
全栈程序员站长
2022/09/20
1.7K0
灰色预测模型_用excel作灰色预测步骤
数学建模学习笔记(二十二)灰色预测(中)GM(1,1)实例:SARS
SARS 疫情对某些经济指标影响问题: 问题: 2003 年的SARS 疫情对中国部分行业的经济发展产生了一定影响,特别是对部分疫情较严重的省市的相关行业所造成的影响是显著的,经济影响主要分为直接经济影响和间接影响。直接经济影响涉及商品零售业、旅游业、综合服务等行业。很多方面难以进行定量地评估,现仅就SARS 疫情较重的某市商品零售业、旅游业和综合服务业的影响进行定量的评估分析,究竟 SARS 疫情对商品零售业、旅游业和综合服务业的影响有多大。 已知某市从1997 年1 月到2003 年12 月的商品零售额、接待旅游人数和综合服务收入的统计数据如表8、表9 和表10。
zstar
2022/06/14
2870
数学建模学习笔记(二十二)灰色预测(中)GM(1,1)实例:SARS
数学建模学习笔记(二十二)灰色预测(下下)GM(2,1)
GM(2,1) 理论推导: 例子: matlab代码: clc,clear x0=[41,49,61,78,96,104]; n=length(x0); x1=cumsum(x0); a_x0=diff(x0); a_x0=[0,a_x0] for i=2:n z(i)=0.5*(x1(i)+x1(i-1)); end B=[-x0(2:end)',-z(2:end)',ones(n-1,1)]; Y=a_x0(2:end)'; u=B\Y x=dsolve
zstar
2022/06/14
9870
数学建模学习笔记(二十二)灰色预测(下下)GM(2,1)
数学建模学习GM(1,1)灰色预测模型
1.灰色系统的定义: 灰色系统指既含有已知信息又含有未知信息的系统。 2.灰色预测模型的定义: 对灰色系统进行预测的模型。 灰色模型(Grey Model,简称GM模型)一般表达方式为GM(n,x)模型,其含义是:用n阶微分方程对x个变量建立模型。 3.灰色预测模型的目的: 通过把分散在时间轴上的离散数据看成一组连续变化的序列,采用累加和累减的方式,将灰色系统中的未知因素弱化,强化已知因素的影响程度,最后构建一个以时间为变量的连续微分方程,通过数学方法确定方程中的参数,从而实现预测目的。 4.灰色系统预测模型的特点: 无需大量数据样本,短期预测效果好,运算过程简单。 5.灰色系统预测模型的不足: 对非线性数据样本预测效果差。
glm233
2020/09/28
2.9K0
数学建模学习GM(1,1)灰色预测模型
matlab批量灰色预测
----------------------------------我是快乐的分割线------------------------------------
机器学习和大数据挖掘
2019/07/02
1.1K0
matlab批量灰色预测
卡尔曼滤波应用及其matlab实现
房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。
全栈程序员站长
2022/09/07
1.2K0
卡尔曼滤波应用及其matlab实现
R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型
人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断。
拓端
2023/05/19
4160
数学建模学习笔记(二十二)灰色预测(上)GM(1,1)
灰色预测: 主要特点:模型使用的不是原始数据序列,而是生成的数据序列。 核心:灰色模型,即对原始数据作累加生成得到近似的指数规律再进行建模的方法。
zstar
2022/06/14
6710
数学建模学习笔记(二十二)灰色预测(上)GM(1,1)
MATLAB语音信号处理「建议收藏」
数字信号处理课设,我们使用MATLAB对语音信号进行了一系列处理,并将其所有功能集中于下图界面中:
全栈程序员站长
2022/09/01
4.2K0
MATLAB语音信号处理「建议收藏」
R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型|附代码数据
人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断。
拓端
2023/09/08
2880
推荐阅读
相关推荐
灰色理论预测模型
更多 >
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验