灰色预测模型学习

灰色预测模型是通过少量、不完全信息,建立的一种预测方法。灰色预测模型所需建模信息少,运算方便,建模精度高,在各种预测领域都有着广泛的应用,是处理小样本预测问题的有效工具。我们把既有已知信息又含有未知信息的系统称为灰色系统。一般表达方式GM(n,x)模型,其含义是:用n阶微分方程对x个变量建立模型。

灰色系统特点

1.用灰色数学处理不确定量,使之量;
2.充分利用已知信息寻求系统运动规律(灰色生成)
3.灰色系统理论能处理贫信息系统

灰色生成

将原始数据列中的数据,按某种要求作数据处理称为生成。对原始数据的生成就是企图从杂乱无章的现象中去发现内在规律。常用的灰色系统生成方式有:累加生成,累减生成,均值生成,级比生成等。
公式推导——https://blog.csdn.net/weixin_39212776/article/details/82221230
我的理解是假设该值和前后累计项存在固定的关系,利用最小二乘求出参数来表征这种关系。

Matlab代码

例题和数据来源——添加链接描述
灰色预测模型学习_第1张图片

1.级比检验

data = [174 179 183 189 207 234 220.5 256 270 285]; data_divide = data(1,2:end)./data(1,1:end-1); % 计算级比
在这里插入图片描述
由于结果属于(0.8338 1.1994),故可以将数据用作满意的GM(1,1)建模。

2.GM(1,1)建模

data = [174 179 183 189 207 234 220.5 256 270 285];
data_sum = cumsum(data)% 计算累加
data_neighbour = 0.5*data_sum(1:end-1)+0.5*data_sum(2:end)% 等权邻值生成
Y = data(2:end)';
B =[-data_neighbour', ones(size(data_neighbour'))];
U = inv(B'*B)*B'*Y;% 得到a为-1.0568,b为-6.2618
a=U(1);b=U(2);
%通过其白化型公式求解(非齐次线性微分方程求解,高数知识)
i=1:20; %20年
F =exp((1-i).*a).*(data(1)-b/a)+ b/a;
[data(1) F(2:end)-F(1:end-1)] %得到的预测值

3.模型检验

C =[data(1) F(2:end)-F(1:end-1)]; %得到的预测值
E =data - C(1:10) %残差
X = abs(E)./data %相对误差

4.绘制图表

hold on;
plot(i, C,'g-'); 
plot(1:10, data, 'bo');
xlabel('年份'); ylabel('污水量/亿吨');
legend('预测污水排放量','实际污水排放量');
title('长江污水排放量增长曲线');

你可能感兴趣的:(小白的建模学习)