Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测

发布于:2025-03-20 ⋅ 阅读:(22) ⋅ 点赞:(0)

基本介绍

适用于matlab2020及以上。可任意选择置信区间,区间覆盖率picp、区间平均宽度百分比等等,可用于预测不确定性,效果如图所示,采用KDE,4种分布进行预测,有对比,可以替换成自己的数据。

完整代码私信回复Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测

代码详细解释如下:

int_val.m 文件功能详解
int_val.m 是一个用于风电功率预测区间可视化的 MATLAB 脚本,主要功能是通过核密度估计(Kernel Distribution)对预测误差建模,并基于不同置信度生成多层次的预测区间。以下是具体实现步骤:

数据读取与预处理

脚本从 Excel 文件(如“晴天.xlsx”“多云.xlsx”“雷阵雨.xlsx”)中读取实际风电功率数据(actually)和预测值(forcast),数据范围为 a1:a10000 和 b1:b10000。

计算预测误差 x = forcast - actually,表示预测值与实际值的偏差。

核密度估计拟合

使用 fitdist(x, ‘Kernel’) 对误差分布进行非参数拟合,生成概率分布对象 pd。核密度估计无需假设数据分布形式,适合复杂误差模式。

置信区间优化计算

对四个置信度(0.95、0.9、0.85、0.8),通过 fmincon 优化函数求解置信区间。目标函数为最小化 icdf(pd, t) - icdf(pd, t-zz),确保区间宽度在给定置信度下最优。

计算上下限:up = forcast + icdf(pd, t) 和 down = forcast + icdf(pd, t-zz),并将负值截断为0(因功率非负)。多层级区间可视化

使用 fill 函数绘制多个置信区间(如红色、绿色、蓝色、黄色),覆盖不同置信水平。通过叠加填充区域,形成从高置信度(窄区间)到低置信度(宽区间)的渐变效果。
在三个子图(subplot(3,1,1) 至 subplot(3,1,3))中分别展示“晴天”“多云”“雷阵雨”三种天气下的预测区间与实际功率曲线对比,横轴为时间(1-48小时),纵轴为功率(MW)。
技术亮点:

通过非参数方法适应复杂误差分布,避免参数假设偏差。
优化置信区间宽度,平衡覆盖概率与区间精度。
多层颜色填充直观展示不同置信水平,增强结果可解释性。
nihe.m 文件功能详解
nihe.m 是一个用于风电功率预测误差分布拟合与评价的 MATLAB 脚本,核心功能是通过多种概率分布模型拟合误差,并基于统计指标(相对熵、SSE)评估模型优劣。以下是具体实现步骤:

数据读取与误差计算

从 Excel 文件读取实际值与预测值,计算误差 x = forcast - actually。

多分布拟合与可视化

使用五种分布模型拟合误差:

参数模型:正态分布(Normal)、Logistic 分布、t 位置尺度分布(tLocationScale)、极值分布(ExtremeValue)。

非参数模型:核密度估计(Kernel)。

绘制经验分布直方图(ecdfhist)与各分布的概率密度函数(PDF)、累积分布函数(CDF),直观比较拟合效果。

统计评价指标计算

相对熵(Kullback-Leibler Divergence):衡量经验分布与拟合分布间的差异,值越小表示拟合越好。

SSE(误差平方和):计算经验概率与拟合概率的平方差,值越小表示拟合越优。

区间覆盖率(PICP):统计实际值落在预测区间内的比例,评估区间预测的可靠性。

多天气类型对比分析

对“晴天”“多云”“雷阵雨”数据分别重复上述步骤,生成子图展示不同天气下的拟合效果和评价结果。

技术亮点:

综合参数与非参数方法,全面探索误差分布特性。

通过相对熵和 SSE 定量比较模型,避免主观判断偏差。

多天气场景分析揭示气象条件对预测误差的影响,增强模型适用性。

总结
int_val.m 侧重于预测区间的生成与可视化,适用于工程应用中的不确定性展示。

nihe.m 侧重于统计建模与模型评价,为算法改进提供理论依据。两者结合,完整覆盖了从误差分析到区间预测的全流程。

数据集

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分源码

.rtcContent { padding: 30px; } .lineNode {font-size: 10pt; font-family: Menlo, Monaco, Consolas, “Courier New”, monospace; font-style: normal; font-weight: normal; }
%% 画图
%% 概率密度函数
plot(x_values,y1,‘LineWidth’,2)
hold on
plot(x_values,y2,‘LineWidth’,2)
hold on
plot(x_values,y3,‘LineWidth’,2)
hold on
plot(x_values,y4,‘LineWidth’,2)
hold on
plot(x_values,y5,‘LineWidth’,2)
hold on
legend(‘频率直方图’,‘正态分布’,‘Logistic’,‘t分布’,‘ExtremeValue’)%,‘非参数核密度估计’ 第五个未知
xlabel(‘预测误差(MW)’),ylabel(‘概率密度’)
%% 累计分布函数
figure(15)
subplot(3,1,1)
cdfplot(x);hold on
plot(x_value,p1,‘LineWidth’,2)
hold on
plot(x_value,p2,‘LineWidth’,2)
hold on
plot(x_value,p3,‘LineWidth’,2)
hold on
% plot(x_value,p4,‘LineWidth’,2)
% hold on
plot(x_value,p5,‘LineWidth’,2)
hold on
legend(‘正态分布’,‘Logistic’,‘t分布’,‘非参数核密度估计’,‘ExtremeValue’)
xlabel(‘预测误差(MW)’),ylabel(‘累计概率’)