Matlab灰色预测模型
灰色预测模型(Grey Prediction Model)是一种处理少量、不完全信息的预测方法,尤其适用于数据量少(≥4个)且趋势不明显的场景。
核心模型:GM(1,1)
通过累加生成序列挖掘数据内在规律
核心模型原理

- 变量右上方的(0)和(1)是用来表示不同数据的不同生成阶次




创建一个文件名为gm11.m
function [pred, params] = gm11(x0, predict_step)
% GM(1,1)灰色预测模型
% 输入:
% x0 - 原始数据序列 (行向量,长度≥4)
% predict_step - 预测步数
% 输出:
% pred - 预测值(包括历史拟合值 + 未来预测值)
% params - 模型参数 [a, b]
n = length(x0);
if n < 4
error('数据量不足!至少需要4个数据点。');
end
% 1. 累加生成 (AGO)
x1 = cumsum(x0);
% 2. 构建矩阵B与Y
B = [-0.5*(x1(1:end-1) + x1(2:end))', ones(n-1,1)];
Y = x0(2:end)';
% 3. 最小二乘估计参数
params = (B' * B) \ (B' * Y);
a = params(1);
b = params(2);
% 4. 计算时间响应式
k = 0:n+predict_step-1;
x1_hat = (x0(1) - b/a) * exp(-a*k) + b/a;
% 5. 累减还原 (IAGO)
x0_hat = [x1_hat(1), diff(x1_hat)];
pred = x0_hat;
% 6. 可视化结果
figure;
plot(1:n, x0, 'ro-', 'LineWidth', 1.5, 'MarkerSize', 8); hold on;
plot(1:n+predict_step, pred, 'b--', 'LineWidth', 1.5);
legend('原始数据', '预测数据', 'Location', 'best');
title('GM(1,1)灰色预测');
xlabel('时间点'); ylabel('值');
grid on;
hold off;
end
再创建一个文件调用灰色预测模型
如下
% 示例数据:某产品年度销量
x0 = [71.1, 72.4, 72.4, 72.1, 71.4]; % 原始数据
predict_step = 3; % 预测未来3步
% 调用模型
[pred, params] = gm11(x0, predict_step);
% 显示结果
fprintf('发展系数 a = %.4f\n', params(1));
fprintf('灰色作用量 b = %.4f\n', params(2));
fprintf('未来%d步预测值: ', predict_step);
disp(pred(end-predict_step+1:end));


Matlab灰色预测模型的更多相关文章
- MATLAB灰色关联度分析
目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...
- 灰色预测模型 c# 算法实现
public class GrayModel { private double a0, a1, a2; private int size; priva ...
- 数学建模-灰色预测模型GM(1,1)_MATLAB
GM(1,1).m %建立符号变量a(发展系数)和b(灰作用量) syms a b; c = [a b]'; %原始数列 A A = [174, 179, 183, 189, 207, 234, 22 ...
- [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)
灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...
- 灰色预测--matlab&python实现
function SGrey X0 = input('请输入原始负荷数据:'); %输入原始数据 n = length(X0); %原始n年数据 %累加生成 X1 = zeros(1,n); for ...
- 【数学建模】灰色系统理论II-Verhulst建模-GM(1,N)-GM(2,1)建模
灰色系统理论中,GM(1,1)建模很常用,但他是有一定适应范围的. GM(1,1)适合于指数规律较强的序列,只能描述单调变化过程.对于具有一定随机波动性的序列,我们考虑使用Verhulst预测模型,或 ...
- R实现灰色预测
1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...
- 灰色预测原理及JAVA实现
最近在做项目时,用户不想使用平均值来判断当前数据状态,想用其他的方式来分析数据的变化状态,在查找了一些资料后,想使用灰色预测来进行数据的预测.下面的内容是从网上综合下来的,java代码也做了一点改动, ...
- GM11灰色模型
作者:桂. 时间:2017-08-12 08:34:06 链接:http://www.cnblogs.com/xingshansi/p/7348714.html 前言 灰色模型(Gray model ...
- python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导
来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...
随机推荐
- Typora中markdown文件无法识别行内公式(内联公式)
行内公式属于LaTeX扩展语法,而不属于Markdown的通用标准.为了使Typora予以解析,需要在Typora的"文件"-"偏好设置"中,勾选"内 ...
- JS中的Uncaught TypeError: Cannot set property 'innerHTML' of null
问题: 这是JS中常见的一种错误,其错误在于在页面载入之前,JS中有代码提前调用了页面的元素,如以下就是今天碰到的问题,查找了半天才发现了这个简单的错误,做个记录: 可见页面上并没有任何内容,提示是U ...
- 我的Vue之旅(2)
2020-10-22 仿照教程动手搞了一个Vue的组件化构建应用的Demo, 嗯,对,就是仿照,我一点都不觉得可耻.关于Vue组件化给我的感觉就是自己写一些 类似于HTML中的 h1, a, p这样的 ...
- JQuery元素滚动定位及获取元素的scrollTop,clientHeight,scrollHeight
scrollHeight为滚动DIV的实际总体高度,获取方式为:$(obj)[0].scrollHeight clientHeight为滚动DIV的可见高度,获取方式为:$(obj)[0].clien ...
- Spring Boot 整合 JMS(Active MQ 实现)
我们使用jms一般是使用spring-jms和activemq相结合,通过spring Boot为我们配置好的JmsTemplate发送消息到指定的目的地Destination.本文以点到 ...
- HashMap put方法源码解析|Java 17
Put函数源码解析HashMap的put方法执行过程可以通过下图来理解(摘自某大厂的博客,推荐从参考文献的链接去查看原文),自己有兴趣可以去对比源码更清楚地研究学习. 欲了解更多HashMap ...
- git创建远程分支
如果有个叫 serverfix 的分支需要和他人一起开发,有两种方式可以创建远程分支origin/serverfix 1.git push origin serverfix 2.git push or ...
- gitea服务的搭建
gitea服务的搭建 gitea是一个轻量级的Git服务器,可以在Linux.Windows和MacOS等平台上运行.gitea提供了一个简洁的Web界面,方便用户管理代码仓库.团队协作和代码审查.g ...
- 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第三周作业
[中文][吴恩达课后编程作业]Course 4 - 卷积神经网络 - 第三周作业 - 车辆识别 上一篇:[课程4 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 - 第四周测验] ...
- Doxygen基本使用教程
前言 规范的注释是一个良好的编程习惯. Doxygen可以直接将注释提取为程序文档,便于开发人员使用 本文主要介绍了Doxygen的使用方法,更多细节请阅读官方文档 一.Doxygen是什么? dox ...