灰色预测模型讲义
- 格式:pptx
- 大小:470.78 KB
- 文档页数:7
灰色预测模型GM (1,1)§1 预备知识灰色预测是就灰色系统所做的预测。
所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一系统就是灰箱系统。
一般地说,社会系统、经济系统、生态系统都是灰色系统。
例如物价系统,导致物价上涨的因素很多,但已知的却不多,因此对物价这一灰色系统的预测可以用灰色预测方法。
灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测,就是对在一定方位内变化的、与时间有关的灰色过程的预测。
尽管过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此这一数据集合具备潜在的规律,灰色预测就是利用这种规律建立灰色模型对灰色系统进行预测。
平面上有数据序列()()(){}n n y x y x y x ,,,,,,2211 ,大致分布在一条直线上。
设回归直线为:b ax y +=,要使所有点到直线的距离之和最小(最小二乘),即使误差平方和()∑=--=ni i i b ax y J 12最小。
J 是关于a , b的二元函数。
由()()()()⎪⎪⎩⎪⎪⎨⎧=-⋅--⋅=∂∂=-⋅--⋅=∂∂∑∑==0120211ni ii i ni i i i i b x a y b J x b x a y a J()()⎪⎪⎩⎪⎪⎨⎧=--=--⇒∑∑==00112ni i i n i i i i i b a y bx ax y x 则得使J 取极小的必要条件为:⎪⎩⎪⎨⎧=+=+⋅∑∑∑∑∑=i iii n i i i y nb x a y x x b x a 12(*)()()()()()()()⎪⎪⎩⎪⎪⎨⎧--=--=∑∑∑∑∑∑∑∑∑∑∑22222i i i i i i i i i i i i i x x n y x x x y b x x n y x y x n a (1) 以上是我们熟悉的最小二乘计算过程。
预测⽅法——灰⾊预测模型灰⾊预测模型主要特点是模型使⽤的不是原始数据序列,⽽是⽣成的数据序列,核⼼体系为灰⾊模型(GM),即对原始数据作做累加⽣成(累减⽣成,加权邻值⽣成)得到近似指数规律再进⾏建模。
优点:不需要很多数据;将⽆规律原始数据进⾏⽣成得到规律性较强的⽣成序列。
缺点:只适⽤于中短期预测,只适合指数增长的预测。
GM(1,1)预测模型GM(1,1)模型是⼀阶微分⽅程,且只含⼀个变量。
1. 模型预测⽅法2. 模型预测步骤1. 数据检验与处理为保证建模⽅法可⾏,需要对已知数据做必要的检验处理。
设原始数据列为x(0)=(x0(1),x0(2),….x0(n)),计算数列的级⽐λ(k)=x(0)(k−1)x(0)(k),k=2,3,...,n如果所有的级⽐都落在可容覆盖区间X=(e−2n+1,e2n+1)内,则数列可以建⽴GM(1,1)模型且可以进⾏灰⾊预测。
否则,对数据做适当的变换处理,如平移变换:y(0)(k)=x(0)(k)+c,k=1,2,...,n取c使得数据列的级⽐都落在可容覆盖内。
2. 建⽴模型根据1中⽅程的解,进⼀步推断出预测值ˆx(1)(k+1)=(x(0)(1)−ba)e−ak+ba,k=1,2,...,n−13. 检验预测值1. 残差检验ε(k)=x(0)(k)−ˆx(0)(k)x(0)(k),k=1,2,...,n如果对所有的|ε(k)|<0.1|ε(k)|<0.1,则认为到达较⾼的要求;否则,若对所有的|ε(k)|<0.2|ε(k)|<0.2,则认为达到⼀般要求。
2. 级⽐偏差值检验ρ(k)=1−1−0.5a1+0.5aλ(k)如果对所有的|ρ(k)|<0.1,则认为达到较⾼的要求;否则,若对于所有的|ρ(k)|<0.2,则认为达到⼀般要求。
4. 预测预报根据问题需要给出预测预报。
3. py实现import numpy as npimport pandas as pddata=[71.1,72.4,72.4,72.1,71.4,72.0,71.6] # 数据来源len=len(data) # 数据量# 数据检验lambdas=[]for i in range(1,len):lambdas.append(data[i-1]/data[i])X_Min=np.e**(-2/(len+1))X_Max=np.e**(2/(len+1))l_min,l_max=min(lambdas),max(lambdas)if l_min<X_Min or l_max> X_Max:print("该组数据为通过数据检验,不能建⽴GM模型!")else:print("改组数据通过检验")# 建⽴GM(1,1)模型data_1=[] # 累加数列z_1=[]data_1.append(data[0])for i in range(1,len):data_1.append(data[i]+data_1[i-1])z_1.append(-0.5*(data_1[i]+data_1[i-1]))B=np.array(z_1).reshape(len-1,1)one=np.ones(len-1)B=np.c_[B,one]Y=np.array(data[1:]).reshape(len-1,1)a,b=np.dot(np.dot(np.linalg.inv(np.dot(B.T,B)),B.T),Y)print('a='+str(a))print('b='+str(b))## 数据预测data_1_prd=[]data_1_prd.append(data[0])data_prd=[] # 预测datadata_prd.append(data[0])for i in range(1,len):data_1_prd.append((data[0]-b/a)*np.e**(-a*i)+b/a)data_prd.append(data_1_prd[i]-data_1_prd[i-1])# 模型检验## 残差检验e=[]for i in range(len):e.append((data[i]-data_prd[i])/data[i])e_max=max(e)if e_max<0.1:print("数据预测达到较⾼要求!")elif e_max<0.2:print("数据预测达到⼀般要求!")# 输出预测数据for i in range(len):print(data_prd[i])灰⾊Verhulst预测模型主要⽤于描述具有饱和状体的过程,即S型过程,常⽤于⼈⼝预测,⽣物⽣长,繁殖预测及产品经济寿命预测等。