本章通过一个例题,来讲解灰色预测代码。由于笔者只是以学习者的身份,以做笔记为目的写这篇博客,因此欢迎大家学习交流,代码(非本人所写)会附在最后面
- 一、总述————如何处理预测题目?
- 1.画出时序图,分析趋势
- 2.检验与比较模型————训练与试验
- 3.得出结论————模型结果可视化
- 二、用EXCEL画出时序图
- 1.设置主次坐标轴
- 三、matlab代码实现
- 1.数据的输入与创造时序图
- (1)set(gca,'xtick',year(1:1:end))
- (2)xlabel('年份'); ylabel('排污总量')
- 2.判断数据是否符合要求
- 3.进行准指数规律检验
- (1)计算光滑度
- 1.数据的输入与创造时序图
一、总述————如何处理预测题目?
1.画出时序图,分析趋势
2.检验与比较模型————训练与试验
将数据分为训练组和试验组,尝试使用不同的模型对训练组进行建模,并利用试验组的数据判断哪种模型的预测效果最好(比如我们可以使用SSE这个指标来挑选模型,常见的模型有指数平滑、ARIMA、灰色预测、神经网络等)。
3.得出结论————模型结果可视化
选择上一步骤中得到的预测误差最小的那个模型,并利用全部数据来重新建模,并对未来的数据进行预测。
画出预测后的数据和原来数据的时序图,看看预测的未来趋势是否合理。
二、用EXCEL画出时序图
时期 | 原始数据 | 累加数据 | 紧邻均值生成序列 |
---|---|---|---|
1 | 12.2 | 12.2 | |
2 | 15.2 | 27.4 | 19.8 |
3 | 10.9 | 38.2 | 32.8 |
4 | 15.0 | 53.2 | 45.7 |
5 | 14.7 | 67.9 | 60.6 |
6 | 14.4 | 82.3 | 75.1 |
7 | 19.8 | 102.1 | 92.2 |
8 | 17.2 | 119.3 | 110.7 |
9 | 17.5 | 136.8 | 128.1 |
10 | 17.9 | 154.8 | 145.8 |
11 | 14.4 | 169.2 | 162.0 |
12 | 16.3 | 185.5 | 177.3 |
这是我们目前的数据,使用EXCEL画出散点图 | |||
1.设置主次坐标轴
可以看到,累加后的数据明显大于原始数据,如果我们需要将其制作在同一张图上,就要把数量级较小的数据放置在次坐标轴上,方法如下图所示
三、matlab代码实现
1.数据的输入与创造时序图
数据的输入不必多言,此处我们讲解一下创造时序图所设计的代码
(1)set(gca,'xtick',year(1:1:end))
set(gca,'xtick',year(1:1:end))
在画出图后,“gca”代表当前坐标区或图,单独gca会返回图的信,如横轴与纵轴的数据。
而用“set”函数可以对坐标轴进行设置。此处,我们对gac的'xtick'参数进行了设置,也就是对横坐标的刻度进行了设置,设置成了year的第一个数到最后一个数的间隔为1,保证时间序列的连续性
(2)xlabel('年份'); ylabel('排污总量')
xlabel('年份'); ylabel('排污总量')
为给x轴与y轴添加名称
2.判断数据是否符合要求
因为灰色预测模型对数据量有要求:一般要求>3,不然数据量太少,模型失效;<10,数据量多,可能有更适合的模型
此段代码还有把数据转化成列向量的作用
3.进行准指数规律检验
(1)计算光滑度
if ERROR == 0 % 如果上述错误均没有发生时,才能执行下面的操作步骤 disp('------------------------------------------------------------') disp('准指数规律检验') x1 = cumsum(x0); % 生成1-AGO序列,cumsum是累加函数哦~ 注意:1.0e+03 *0.1740的意思是科学计数法,即10^3*0.1740 = 174 rho = x0(2:end) ./ x1(1:end-1) ;