灰色预测模型(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灰色预测模型的更多相关文章

  1. MATLAB灰色关联度分析

    目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...

  2. 灰色预测模型 c# 算法实现

     public class GrayModel    {        private double a0, a1, a2;        private int size;        priva ...

  3. 数学建模-灰色预测模型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 ...

  4. [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)

    灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...

  5. 灰色预测--matlab&python实现

    function SGrey X0 = input('请输入原始负荷数据:'); %输入原始数据 n = length(X0); %原始n年数据 %累加生成 X1 = zeros(1,n); for ...

  6. 【数学建模】灰色系统理论II-Verhulst建模-GM(1,N)-GM(2,1)建模

    灰色系统理论中,GM(1,1)建模很常用,但他是有一定适应范围的. GM(1,1)适合于指数规律较强的序列,只能描述单调变化过程.对于具有一定随机波动性的序列,我们考虑使用Verhulst预测模型,或 ...

  7. R实现灰色预测

    1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...

  8. 灰色预测原理及JAVA实现

    最近在做项目时,用户不想使用平均值来判断当前数据状态,想用其他的方式来分析数据的变化状态,在查找了一些资料后,想使用灰色预测来进行数据的预测.下面的内容是从网上综合下来的,java代码也做了一点改动, ...

  9. GM11灰色模型

    作者:桂. 时间:2017-08-12  08:34:06 链接:http://www.cnblogs.com/xingshansi/p/7348714.html 前言 灰色模型(Gray model ...

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

    来源公式推导连接 https://blog.csdn.net/qq_36387683/article/details/88554434 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模 ...

随机推荐

  1. Typora中markdown文件无法识别行内公式(内联公式)

    行内公式属于LaTeX扩展语法,而不属于Markdown的通用标准.为了使Typora予以解析,需要在Typora的"文件"-"偏好设置"中,勾选"内 ...

  2. JS中的Uncaught TypeError: Cannot set property 'innerHTML' of null

    问题: 这是JS中常见的一种错误,其错误在于在页面载入之前,JS中有代码提前调用了页面的元素,如以下就是今天碰到的问题,查找了半天才发现了这个简单的错误,做个记录: 可见页面上并没有任何内容,提示是U ...

  3. 我的Vue之旅(2)

    2020-10-22 仿照教程动手搞了一个Vue的组件化构建应用的Demo, 嗯,对,就是仿照,我一点都不觉得可耻.关于Vue组件化给我的感觉就是自己写一些 类似于HTML中的 h1, a, p这样的 ...

  4. JQuery元素滚动定位及获取元素的scrollTop,clientHeight,scrollHeight

    scrollHeight为滚动DIV的实际总体高度,获取方式为:$(obj)[0].scrollHeight clientHeight为滚动DIV的可见高度,获取方式为:$(obj)[0].clien ...

  5. Spring Boot 整合 JMS(Active MQ 实现)

          我们使用jms一般是使用spring-jms和activemq相结合,通过spring Boot为我们配置好的JmsTemplate发送消息到指定的目的地Destination.本文以点到 ...

  6. HashMap put方法源码解析|Java 17

      Put函数源码解析HashMap的put方法执行过程可以通过下图来理解(摘自某大厂的博客,推荐从参考文献的链接去查看原文),自己有兴趣可以去对比源码更清楚地研究学习.   欲了解更多HashMap ...

  7. git创建远程分支

    如果有个叫 serverfix 的分支需要和他人一起开发,有两种方式可以创建远程分支origin/serverfix 1.git push origin serverfix 2.git push or ...

  8. gitea服务的搭建

    gitea服务的搭建 gitea是一个轻量级的Git服务器,可以在Linux.Windows和MacOS等平台上运行.gitea提供了一个简洁的Web界面,方便用户管理代码仓库.团队协作和代码审查.g ...

  9. 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第三周作业

    [中文][吴恩达课后编程作业]Course 4 - 卷积神经网络 - 第三周作业 - 车辆识别 上一篇:[课程4 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 - 第四周测验] ...

  10. Doxygen基本使用教程

    前言 规范的注释是一个良好的编程习惯. Doxygen可以直接将注释提取为程序文档,便于开发人员使用 本文主要介绍了Doxygen的使用方法,更多细节请阅读官方文档 一.Doxygen是什么? dox ...