X=[6529,7416,819,9903,10947,12115,13592,15038,16466,17898];
k=length(X);%输入原始数据
%判断是否含负值
fu=min(X);
if fu<0disp('含负值,要进行数据修正! ');
disp('原始数列变为:');X= X+abs(fu)+1;
else disp('原数列不含负值! '); X
end
Y=cumsum(X);%计算累加生成序列
%模型求解
A=X;A(1)=[];C=[];
for i=2:1:k;
C(i-1)=(-Y(i)-Y(i-1))/2;
end
E=cat(1,C,ones(1,k-1));B=inv(E*E')*E*A';
a=B(1,1),b=B(2,1)
%计算累加序列的估计及1期预测值
z2=[];
for i=1:k+1;
z2(i)=(X(1)-b/a)*exp(-a*(i-1))+b/a;
end
%还原序列的估计及预测值
y1=[];y1(1)=z2(1);
for i=1:k+4
y1(i+1)=z2(i+1)-z2(i);
end
%计算残差值
ep=zeros(1,k);e=zeros(1,k);q=zeros(1,k);
for i=1:k
ep(i)=X(i)-y1(i);e(i)=abs(X(i)-y1(i));q(i)=e(i)/X(i)*100;
end
q%相对误差
f=100-mean(abs(q))%精度
c=std(e)/std(X)%后验差比
p=0;%小误差概率的值
for i=1:k
if abs(e(i)-mean(e))<0.6745*std(X)p=p+1; end
end
p=p/k%小误差概率
%计算关联度
w1=min(abs(e));w2=max(abs(e));
for i=1:k
w(i)=(w1+0.5*w2)./(abs(e(i))+0.5*w2);
end
w=sum(w)/k %关联度
想问问哪里错了 谢谢了 ~