灰色理论预测模型

简介: 灰色理论 通过对原始数据的处理挖掘系统变动规律,建立相应微分方程,从而预测事物未来发展状况。  优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小;  缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。

灰色理论

通过对原始数据的处理挖掘系统变动规律,建立相应微分方程,从而预测事物未来发展状况。 
优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小; 
缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。

灰色预测模型

在多种因素共同影响且内部因素难以全部划定,因素间关系复杂隐蔽,可利用的数据情况少下可用,一般会加上修正因子使结果更准确。 
灰色系统是指“部分信息已知,部分信息未知“的”小样本“,”贫信息“的不确定系统,以灰色模型(G,M)为核心的模型体系。

灰色预测模型建模机理

灰色系统理论是基于关联空间、光滑离散函数等概念,定义灰导数与会微分方程,进而用离散数据列建立微分方程形式的动态模型。

灰色预测模型实验

以sin(pi*x/20)函数为例,以单调性为区间检验灰色模型预测的精度 
这里写图片描述
这里写图片描述

通过实验可以明显地看出,灰色预测对于单调变化的序列预测精度较高,但是对波动变化明显的序列而言,灰色预测的误差相对比较大。究其原因,灰色预测模型通过AGO累加生成序列,在这个过程中会将不规则变动视为干扰,在累加运算中会过滤掉一部分变动,而且由累加生成灰指数律定理可知,当序列足够大时,存在级比为0.5的指数律,这就决定了灰色预测对单调变化预测具有很强的惯性,使得波动变化趋势不敏感。

本文所用测试代码:

  1 clc
  2 clear all
  3 % 本程序主要用来计算根据灰色理论建立的模型的预测值。  4 % 应用的数学模型是 GM(1,1)。  5 % 原始数据的处理方法是一次累加法。  6 x=[0:1:10];  7 x1=[10:1:20];  8 x2=[0:1:20];  9 y=sin(pi*x/20);  10 n=length(y);  11 yy=ones(n,1);  12 yy(1)=y(1);  13 for i=2:n  14 yy(i)=yy(i-1)+y(i);  15 end  16 B=ones(n-1,2);  17 for i=1:(n-1)  18 B(i,1)=-(yy(i)+yy(i+1))/2;  19 B(i,2)=1;  20 end  21 BT=B';  22 for j=1:n-1  23  YN(j)=y(j+1);  24 end  25 YN=YN';  26 A=inv(BT*B)*BT*YN;  27 a=A(1);  28 u=A(2);  29 t=u/a;  30 t_test=5; %需要预测个数  31 i=1:t_test+n;  32 yys(i+1)=(y(1)-t).*exp(-a.*i)+t;  33 yys(1)=y(1);  34 for j=n+t_test:-1:2  35 ys(j)=yys(j)-yys(j-1);  36 end  37 x=1:n;  38 xs=2:n+t_test;  39 yn=ys(2:n+t_test);  40 det=0;  41 for i=2:n  42  det=det+abs(yn(i)-y(i));  43 end  44 det=det/(n-1);  45  46 subplot(2,2,1),plot(x,y,'^r-',xs,yn,'b-o'),title('单调递增' ),legend('实测值','预测值');  47 disp(['百分绝对误差为:',num2str(det),'%']);  48 disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);  49  50  51 %递减  52 y1=sin(pi*x1/20);  53 n1=length(y1);  54 yy1=ones(n1,1);  55 yy1(1)=y1(1);  56 for i=2:n1  57 yy1(i)=yy1(i-1)+y1(i);  58 end  59 B1=ones(n1-1,2);  60 for i=1:(n1-1)  61 B1(i,1)=-(yy1(i)+yy1(i+1))/2;  62 B1(i,2)=1;  63 end  64 BT1=B1';  65 for j=1:n1-1  66  YN1(j)=y1(j+1);  67 end  68 YN1=YN1';  69 A1=inv(BT1*B1)*BT1*YN1;  70 a1=A1(1);  71 u1=A1(2);  72 t1=u1/a1;  73 t_test1=5; %需要预测个数  74 i=1:t_test1+n1;  75 yys1(i+1)=(y1(1)-t1).*exp(-a1.*i)+t1;  76 yys1(1)=y1(1);  77 for j=n1+t_test1:-1:2  78 ys1(j)=yys1(j)-yys1(j-1);  79 end  80 x21=1:n1;  81 xs1=2:n1+t_test1;  82 yn1=ys1(2:n1+t_test1);  83 det1=0;  84 for i=2:n1  85  det1=det1+abs(yn1(i)-y1(i));  86 end  87 det1=det1/(n1-1);  88  89 subplot(2,2,2),plot(x1,y1,'^r-',xs1,yn1,'b-o'),title('单调递增' ),legend('实测值','预测值');  90 disp(['百分绝对误差为:',num2str(det1),'%']);  91 disp(['预测值为: ',num2str(ys1(n1+1:n1+t_test1))]);  92  93 %整个区间  94 y2=sin(pi*x2/20);  95 n2=length(y2);  96 yy2=ones(n2,1);  97 yy2(1)=y2(1);  98 for i=2:n2  99 yy2(i)=yy2(i-1)+y2(i); 100 end 101 B2=ones(n2-1,2); 102 for i=1:(n2-1) 103 B2(i,1)=-(yy2(i)+yy2(i+1))/2; 104 B2(i,2)=1; 105 end 106 BT2=B2'; 107 for j=1:n2-1 108  YN2(j)=y2(j+1); 109 end 110 YN2=YN2'; 111 A2=inv(BT2*B2)*BT2*YN2; 112 a2=A2(1); 113 u2=A2(2); 114 t2=u2/a2; 115 t_test2=5; %需要预测个数 116 i=1:t_test2+n2; 117 yys2(i+1)=(y2(1)-t2).*exp(-a2.*i)+t2; 118 yys2(1)=y2(1); 119 for j=n2+t_test2:-1:2 120 ys2(j)=yys2(j)-yys2(j-1); 121 end 122 x22=1:n2; 123 xs2=2:n2+t_test2; 124 yn2=ys2(2:n2+t_test2); 125 det2=0; 126 for i=2:n2 127  det2=det2+abs(yn2(i)-y2(i)); 128 end 129 det2=det2/(n2-1); 130 131 subplot(2,1,2),plot(x2,y2,'^r-',xs2,yn2,'b-o'),title('全区间' ),legend('实测值','预测值'); 132 disp(['百分绝对误差为:',num2str(det2),'%']); 133 disp(['预测值为: ',num2str(ys2(n2+1:n2+t_test2))]);
目录
相关文章
|
1月前
|
存储 机器学习/深度学习 搜索推荐
探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
47 1
|
1天前
R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图
R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图
10 0
|
1天前
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
|
7月前
|
机器学习/深度学习 传感器 算法
垂直腔表面发射激光器极化噪声的建模与分析论文复现
垂直腔表面发射激光器极化噪声的建模与分析论文复现
|
8月前
|
机器学习/深度学习 数据挖掘
基于灰色神经网络的订单需求预测代码(Matlab代码实现)
基于灰色神经网络的订单需求预测代码(Matlab代码实现)
148 0
|
9月前
|
机器学习/深度学习 数据挖掘
基于灰色神经网络的订单需求预测代码
基于灰色神经网络的订单需求预测代码
|
10月前
数学建模预测模型-灰色预测模型
数学建模预测模型-灰色预测模型
79 0
|
11月前
|
机器学习/深度学习 编解码 监控
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(一)
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(一)
85 0
|
11月前
|
机器学习/深度学习 固态存储
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(二)
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(二)
46 0
|
机器学习/深度学习 传感器 算法
【灰色预测】基于粒子群算法优化灰色预测模型GM(1,1)实现数据预测附matlab代码
【灰色预测】基于粒子群算法优化灰色预测模型GM(1,1)实现数据预测附matlab代码