摘要:文章讨论了多变量灰色预测模型的建模方法及其算法思想,得到了多变量灰色预测模型的检验方
法。为了简化模型求解,给出多变量灰色预测模型的MATLAB 程序实现。通过应用实例说明算法程序的应用和效果。
关键词:多变量;灰色预测模型;算法;MATLAB
引言
自从邓聚龙教授提出灰色系统理论以来,灰色预测模型在许多领域得到了广泛应用。许多的研究工作者对于动态微分方程模型GM(1,1)进行了广泛的研究,为了提高模型精度,提出了一些改进的 GM(1,1)模型。近年来,许多文献从不同的角度给出了非等间距灰色预测模型的改进’+,-),然而实际的社会、经济系统中往往包含多个变量,各变量相互影响、相互作用。为了解决多变量等间距原始数据的灰色预测问题,文献分别讨论了多量等间距和非等间距预测模型的建模方法和应用。多量灰色模型的参数估计、模型预测以及模型的精度检验都需要一些比较复杂的计算。本文的目的是给出多变量灰色预测模型的检验和算法的MATLAB程序,并通过一个应用实例加以说明
1、多变量灰色预测模型
假定非负原始数据向量序列为 } ,其一次累加生成向量序列为 },其中, ,(k=1,2,…,n),n为观测数据的个数,这里 (k) 是维列向量。如果记
A= B=
则多变量灰色模型9.,/)的动态微分方程组可表示为
=A (1)
如果规定初始条件为 = ,则动态微分方程组模型的连续时间响应函数为 。
为了得到模型参数的估计值,需要将上述微分方程组转化为离散形式,从而可得到参数的估计值,如果记D= ,如果 可逆,则利用最小二乘法可以得到D 的估计值为
= (2)
其中
L=
Y=
根据(2)式可得参数A和B 的辩识值 。有了参数估计就可以得到时间响应函数为
(3)
利用(3)式还原成原始数据序列有
,k=2,3,…
下面讨论模型的检验,设模型的残差为 ,残差的均值和方差分别为
= ,
=
同样,可得 的均值和方差 和 ,称C= 为均方差比值,对于给定的 当C< 时,称模型为均方差比合格模型。指标C越小越好。C 越小,表示 越大而 越小, 大,表明原始数据方差大,原始数据离散程度大。
2、多变量灰色预测模型算法的MATLAB实现
1、多变量灰色预测模型的算法步骤
根据多变量灰色预测模型的建模方法和机理,下面
给出多变量灰色预测模型的算法步骤:
(i )输入原始序列X0,对其进行累加生成序列X1。
(ii)计算数据矩阵L 及Y。
(iii)根据(2)式计算模型参数的估计值。
(iv)利用(3)式和(4)式,计算模型的拟合值或预测值。
2、多变量灰色模型的MATLAB程序实现
下面给出多变量灰色预测模型的MATLAB程序。
clear all
clc
%输入待预测时刻k及原始序列X0
k=23;%k取23,24,25,26
X0=[17.34,27.12,14.88,20.54,21.03,27.25,19.25,21.37,23.32,27.19,19.52,21.16,14.92,71.64,21.25,42.97,32.96,43.93,21.45,47.86,33.59,47.47];
[n,m]=size(X0);
for j=1:m c=0;
for i=1:n
c=X0(i,j)+c;
X1(i,j)=c;
end
end
%计算数据矩阵L
for j=1:m
for i=1:n-1
l(i,j)=(X1(i,j)+X1(i+1,j))/2;
end
end
L=[1 ones(n-1,1)];
%计算Y 及参数估计值
for j=i:m
Y(1:n-1,j)=X0(2:n,j);
a(:,j)=inv(L'*L)*L'*Y(1:n-1,j);
end
a=a';
A=a(1:end,1:end-1);
B=a(1:end,end);
%计算模型的拟合值或预测值
S=X1(1,1:end);
if k==1
Z=S'
elseif k>1
Z=expm2(A*(k-1))*S'+inv(A)*(expm2(A*(k-1)-eye(size(expm2(expm2(A*(k-1)))))*B-(expm2(A*(k-2))*S'+inv(A)*(expm2(A*(k-2)-eye(size(expm2(A*(k-2)))))*B)
else disp(' 输入错误!k不得小于1')
end
3、结束语
MATLAB 语言具有良好的运行环境、强大的函数资源,其编程效率远远高于其他高级语言。多变量灰色预测模型广泛的应用于许多领域。但该模型参数估计以及预测都需要经过比较复杂的计算,本文的多变量灰色预测模型的MATLAB程序能够方便的解决模型的计算问题。