区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测


目录

  • 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测
  • 效果一览
  • 基本介绍
  • 模型描述
  • 程序设计
  • 参考资料


效果一览

区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列


区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列_02


区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_03

基本介绍

MATLAB实现QGPR高斯过程分位数回归时间序列区间预测
1.基于高斯过程回归(QGPR)分位数时间序列区间预测,Matlab代码,单变量输入模型。
2.评价指标包括:R2、MAE、MSE、RMsE和区间覆盖率和区间平均宽度百分比等,代码质量极高,方便学习和替换数据。

高斯过程分位数回归是一种基于高斯过程的统计学习方法,用于对时间序列进行预测。在时间序列区间预测中,GPR可以用于预测一系列未来时间点的分位数,从而提供关于未来趋势的一些信息。
具体来说,GPR可以用于估计某个时间点的观测值在给定分位数水平下的概率分布。这个分布可以用来计算区间预测。GPR 的预测结果可以提供一些关于未来时间序列的不确定性信息,这对于决策者和风险管理者来说非常有用。

在应用 GPR进行时间序列区间预测时,需要首先选择合适的高斯过程模型,然后基于历史数据进行参数估计和模型训练。一旦模型训练完成,就可以用它来对时间序列进行预测和区间估计。

需要注意的是,GPR是一种复杂的统计学习方法,需要一定的数学和计算机技能才能进行有效的应用。此外,预测结果也受到历史数据的限制,因此在进行时间序列区间预测时需要谨慎选择样本数据,并且需要不断更新模型以反映新的数据和趋势。

模型描述

  • QGPR 的原理和基本思想与传统的高斯过程回归(GPR)类似,但是在预测分位数时,QGPR引入了一个分位数损失函数,来惩罚预测结果与真实观测值之间的偏差。QGPR 的预测结果是一个概率分布,可以用来计算区间预测。
  • 下面是 QGPR的主要公式:
  • 假设我们有一个时间序列数据集 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_04,其中 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列区间预测_05区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_06 的矩阵,表示 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列_07 个时间点的 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_08 个特征值,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列_09区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列区间预测_10 的向量,表示相应的观测值。我们的目标是预测未来时间点 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_11 的观测值在给定分位数水平 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列区间预测_12
  • QGPR 的预测结果是一个高斯分布,其均值和方差分别由以下公式给出:

区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_核函数_13

区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_14

  • 其中,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_15区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_16 与历史时间点的核函数向量,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_17 是历史时间点之间的核函数矩阵,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_18 是噪声方差,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列_19

区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_20

  • 其中,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_21 是核函数的方差,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_22
  • QGPR引入了一个分位数损失函数,来惩罚预测结果与真实观测值之间的偏差。假设 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_23 是真实观测值,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_24 是给定分位数水平 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列区间预测_12 下的累积分布函数,区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_高斯过程分位数回归_26 是给定分位数水平 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列区间预测_12

区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_核函数_28

  • 其中 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_QGPR_29 表示在给定分位数水平 区间预测 | MATLAB实现QGPR高斯过程分位数回归时间序列区间预测_时间序列_30

程序设计

%%  数据集分析
outdim = 1;                                  % 最后一列为输出
num_size = 0.7;                              % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度

%%  划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);

P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);

%%  数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);

%%  转置以适应模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';

%%  模型创建
alpha = 0.10;
net = fitrgp(p_train, t_train);

%%  仿真测试


%%  数据反归一化
L_sim1 = mapminmax('reverse', l_sim1, ps_output);
L_sim2 = mapminmax('reverse', l_sim2, ps_output);

T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);