区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测
目录
- 区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
1.Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测(完整源码和数据)
2.GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测(点预测+概率预测+核密度估计) Matlab语言
3.多变量单输出,包括点预测+概率预测+核密度估计曲线,MatlabR2021a及以上版本运行,提供多种置信区间!评价指标包括R2、MAE、RMSE、MAPE、区间覆盖率picp、区间平均宽度百分比pinaw等。
4.算法新颖,对固定带宽核函数进行了改进。
5.直接替换Excel数据即可用,注释清晰,适合新手小白,直接运行main文件一键出图。
6.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
程序设计
- 完整程序和数据获取方式私信博主回复Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测。
%% 数据反归一化
T_sim1 = mapminmax('reverse', T_sim1, ps_output);
T_sim2 = mapminmax('reverse', T_sim2, ps_output);
%% *区间预测* (基于KDE)
z = [0.975;0.95;0.875;0.75;0.625;0.55;0.525]; %分位数
%% *值评估指标*
[Error] = PlotError(T_sim1,T_train,N,'#3D59AB');
%% *自适应带宽核密度估计
figure;
[y,t,optim_width,~,~,confb95] = ABKDE(Error);
hold on
window=fill([t,fliplr(t)],[confb95(1,:),fliplr(confb95(2,:))],[7 7 7]/8,'FaceAlpha',0.5);
window.EdgeColor = 'none';
plot(t,confb95(1,:),'Color',[7 7 7]/9,'LineWidth',1);
plot(t,confb95(2,:),'Color',[7 7 7]/9,'LineWidth',1);
plot(t,y,'Color',[0.9 0.2 0.2],'LineWidth',2);
[f0,xi0] = ksdensity(Error,'Function','pdf');
plot(xi0,f0,'LineWidth',1.5,'Color',"#7E2F8E");
xlim([min(t) max(t)]);
legend({'95%置信核密度估计曲线','','','优化自适应带宽核密度估计曲线','未优化固定带宽核密度估计曲线'});
grid on;
ylabel('概率密度');
xlabel('预测误差');
set(gca,'TickDir','out');
set(gcf,'color','w')
for m = 1:length(z)
Q1(m) = QuantSol_FUN(t,y,1-z(m)); % 下界
Q2(m) = QuantSol_FUN(t,y,z(m)); % 上界
end
for m = 1:length(z)
Lower(:,m) = T_sim2 + Q1(m);
Upper(:,m) = T_sim2 + Q2(m);
end
%% *绘图*
PlotProbability(T_sim2,T_test,numel(T_test),Lower,Upper,0,N,[0 100 0]/255); %概率绘图
%% *核密度估计*
time_index = [25;50;75;100]; %确定采样点,注意元素不要超过预测样本的个数!!
num_KD = numel(time_index);
PlotKernelDensity(Lower,Upper,time_index,T_test',num_KD);
set(gcf,'color','w')
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340