灰色预测(由过去预测未来)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%程序中的变量定义;alpha参数;ago是预测后累加值矩阵;var是预测值矩阵;
%error是残差矩阵,相对误差 残差=(实际值-预测值)/实际值;绝对误差=实际值-预测值
%c是后验差比值,残差序列均方差/实际值均方差,std()均方差函数
clc
clear
x=[0 1 2 3 4 5 6 7 8 9];
format long; %设置计算精度
if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换
x=x';
end
n=length(x); %取输入数据的样本量
x1=cumsum(x);%累加
B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)];
y=x(2:n);
alpha=B\y;
%预测数据的累加,共n+1个
for i=1:n+10
ago(i)=(x(1)-alpha(2)/alpha(1))*exp(-alpha(1)*(i-1))+alpha(2)/alpha(1);
end
%此处共预测n+1个值
%估计值第一个与实际值相同
var(1,:)=ago(1,:);
%开始第二个估计值
for i=1:n+9
var(i+1)=ago(i+1)-ago(i); %估计值
end
for i=1:n
error(i)=-var(i)+x(i);%计算残差,绝对误差
delta(i)=abs(error(i)/x(i));%相对误差
end
lamda=x(1:n-1)./x(2:n);%计算级比
range=minmax(lamda');%级比范围
rho=1-(1-0.5*alpha(1))/(1+0.5*alpha(1))*lamda;%计算级比偏差值,alpha(1)=a
c=std(error)/std(x); %调用统计工具箱的标准差函数计算后验差的比值c
fprintf('参数a=');alpha(1)
fprintf('参数u=');alpha(2)
fprintf('预测未来十年干流6类为');
for i=11:20
a(i-10,:)= var(:,i);
end
a