红莲业火 发表于 2014-7-8 22:38

灰色预测的小误差概率怎么算呢?

哪位大神来帮帮我吧,那个灰色预测中在检验的时候会有一个小误差概率的计算,就是这个P=P{|ε(i)-ε拔|<0.674S平方},怎么用matlab实现呢?

平凡之不凡 发表于 2014-7-8 23:44

很多帖子有,你看一下

红莲业火 发表于 2014-7-17 23:16

平凡之不凡 发表于 2014-7-8 23:44 static/image/common/back.gif
很多帖子有,你看一下

谢谢!!!十分感谢!!!!我又找到了一份。

%附:预测精度等级 P C
% 好 >0.95 <0.35
% 合格 >0.80 <0.45
% 勉强 >0.70 <0.50
% 不合格 ≤0.70 ≥0.65

disp('请输入初始序列x (例 )');
x=input('x=');
j=length(x);
disp('请输入要预测的年份数k');
k=input('k=');
z(1)=x(1);
for i=2:j
z(i)=z(i-1)+x(i);
end
for i=1:(j-1)
b(i,1)=-0.5*(z(i)+z(i+1));b(i,2)=1;
end
for i=1:(j-1)
y(i,1)=x(i+1);
end
g=inv(b'*b)*b'*y;
a=g(1,1);u=g(2,1);
for i=1:(j+k)
t(i)=(z(1)-u/a)*exp((-a)*(i-1))+u/a;
end
ans(1)=t(1);
for i=2:j
ans(i)=t(i)-t(i-1);
end
for i=(j+1):(j+k)
ansf(i-j)=t(i)-t(i-1);
end
for i=1:j
E(i)=x(i)-ans(i);
end
e=E./x;
xj=sum(x)/j;
S1=sqrt(sum((x-xj).^2)/j);
Ej=sum(E)/j;
S2=sqrt(sum((E-Ej).^2)/j);
C=S2/S1;
Index=abs(E-Ej)<0.6745*S1;
P=length(find(Index>0.5))/length(Index);

disp('原始数列x=');disp(x);
disp('拟合数列ans=');disp(ans);
disp('预测数列ansf=');disp(ansf);
disp('后验差比值C=');disp(C);
disp('小误差概率P=');disp(P);
if C<0.35&&P>0.95
disp('此模型的预测精度为:好!')
else if C<0.45&&P>0.80
disp('此模型的预测精度为:合格')
else if C<0.50&&P>0.70
disp('此模型的预测精度为:勉强')
else disp('此模型的预测精度为:不合格,请尝试其他方法!')
end
end
end

平凡之不凡 发表于 2014-7-18 17:18

红莲业火 发表于 2014-7-17 23:16 static/image/common/back.gif
谢谢!!!十分感谢!!!!我又找到了一份。

%附:预测精度等级 P C


下次粘代码,进入高级回复,这样代码就可用了,你这里面还出现了笑脸,哈哈
页: [1]
查看完整版本: 灰色预测的小误差概率怎么算呢?