matlab2021 灰色预测模型残差检测 判断模型是否合格 未来5年代码
时间: 2023-12-06 16:42:39 浏览: 81
以下是MATLAB 2021中灰色预测模型残差检测的代码,可以用来判断模型是否合格并进行未来5年的预测:
```matlab
% 输入数据
x = [1:10];
y = [15.3 17.3 20.0 22.4 25.2 27.8 31.6 34.8 38.6 42.0];
% 灰色预测模型
GM(1,1)=y(1);
for i=2:length(y)
X(i-1,1)=-0.5*(y(i)+y(i-1));
Y(i-1,1)=y(i);
end
a = X\Y;
u = Y-X*a;
for i=2:length(y)+1
GM(i,1)=(y(1)-u(1)/a)*exp(-a*(i-1))+u(1)/a;
for j=2:i
GM(i,j)=(y(j)-u(j)/a)*exp(-a*(i-j))-u(j)/a;
end
end
% 残差检测
e = y - GM(2:end,1)';
sigma = std(e);
Q = abs(e) / sigma;
% 判断模型是否合格
if max(Q) < 0.35
fprintf('模型合格\n');
else
fprintf('模型不合格\n');
end
% 预测未来5年
x_new = [11:15];
for i=1:length(x_new)
GM_new(i,1)=(y(1)-u(1)/a)*exp(-a*(length(y)+i))+u(1)/a;
for j=2:length(y)+i
GM_new(i,j)=(y(j-1)-u(j-1)/a)*exp(-a*(length(y)+i-j+1))-u(j-1)/a;
end
end
y_pred = GM_new(:,1)';
% 绘图
figure;
plot(x,y,'o-',x_new,y_pred,'*-');
xlabel('x');
ylabel('y');
legend('原始数据','预测数据');
```
以上代码中,首先输入数据 `x` 和 `y`,然后使用灰色预测模型进行预测,并计算出残差 `e`。接着根据残差计算出 `Q` 值,并判断模型是否合格。如果最大的 `Q` 值小于0.35,则认为模型合格。最后,使用预测模型预测未来5年的数据,并绘制出原始数据和预测数据的曲线。
阅读全文