摘要:理解保证必须明确其总体
具有 90% 边际覆盖率的预测区间,并不承诺每个工况都有 90%。本文研究两种合成预测误差工况:常见且集中,以及稀有且分散程度为其六倍。混合分布分位数覆盖第一组全部情况、第二组仅一半,却仍达到总体 90%。分组校准在明确假设下可纠正差异,但组内数据少时可能产生无界区间。我们推导两种结果,并通过 2,000 次可复现校准检查。
示意背景是功率预测,误差单位 kW,并非电站测量或 EL-AI 模型成果。需要概率、累积分布及顺序统计量知识。实验假设数据独立;真实能源序列可能存在自相关与分布变化,因此不能未经条件检查就转移保证。
1. Split conformal 与正确的秩
先用独立训练数据固定预测器 f,再在 n 个新样本上计算 s_i=|y_i−f(x_i)|。排序后取第 k 项,k=ceil((n+1)(1−α)),新区间为 [f(x)−q,f(x)+q]。若 k=n+1,则 q=∞;强行取观测最大值会改变保证。n+1 修正不是软件细节,它包含新评分在校准评分中的位置。
在可交换且无同分条件下,新评分在 n+1 个值中的秩均匀分布。恰有 k 个秩被覆盖,概率为 k/(n+1),不低于 1−α。有同分时,≤ 比较可能使覆盖更保守。该概率同时平均校准随机性与新观察,并不意味着每次固定校准都恰好覆盖 90%,或每个输入都具有该条件概率。利用校准标签训练或选择评分可能破坏证明。
n=99、α=0.10 时秩为 90,连续评分的理论边际覆盖率为 90/100。n=4 时同一目标要求第 5 秩,即无界区间;四个评分的最大值平均只能覆盖 4/5=80%。代码用整数算术计算 90% 水平,避免舍入歧义,也不使用可能偏离所需顺序统计量的通用分位数插值。
2. 错误集中于稀有组的混合分布
A 工况占 80%,绝对残差 R 在 0 至 1 kW 均匀分布;B 占 20%,R 在 0 至 6 kW 均匀分布。可构造 f=100 kW,再加幅值 R、符号随机的误差;对称区间覆盖只需研究 R。预测时已知组别,且定义在校准前固定。尺度为便于透明计算而选,并非电站估计。
总体 90% 分位数为 q=3 kW,两组区间总宽度都为 6 kW,但 A 覆盖 100%,B 仅 50%。边际保证没有失效:加权平均正好 90%。实际问题“B 工况区间多可靠”与被保证的量不同。用总体覆盖回答前者,是解释错误。
3. 重复校准并解析计算测试覆盖
我们用种子 20260924 独立抽取 2,000 组、每组 99 个残差。每组求 q,再用已知 CDF 计算总体覆盖,无需模拟百万测试点:给定抽样 q 的覆盖概率可解析得到。跨校准平均则为蒙特卡洛估计。结果总体 90.0234%、A 组 99.9559%、B 组 50.2937%。不同校准间总体覆盖率标准差约 3.04 个百分点,不是均值标准误。
4. 分组校准:收益与数据代价
将同一批 99 个残差分组,分别用 n_A、n_B 及 n_g+1 修正求分位数。在组别预先定义、组内可交换的条件下,秩证明分别适用。它保证各组内部边际覆盖,而非每个可能 x 的条件覆盖。总体极限下 q_A=0.9、q_B=5.4 kW,总宽度 1.8 与 10.8 kW,加权平均 3.6 kW。困难工况终于获得更宽区间。
| 校准 | 总体 | A | B |
|---|---|---|---|
| Pooled | 0.900234 | 0.999559 | 0.502937 |
| Groupwise | 0.909190 | 0.905667 | 0.923283 |

分组模拟得到 A 90.5667%、B 92.3283%。额外覆盖与小组更粗的秩离散化一致。但三次校准中 B 少于九个观察,所需阈值为无穷,因此全部重复的平均宽度为无穷。3.66475 kW 只适用于 1,997 次有限区间重复,不能冒充总体平均。总体极限 3.6 kW 并未消除有限样本问题。
5. 限制与技术解读
不能悄悄用有限最大值替代无穷,否则失去已声明保证。已知物理响应界可限制集合,但属于必须记录的额外假设。其他选择包括增加数据、减少分组碎片化或修改覆盖目标。看过错误后才选择组别,或预测工况分类器测试时出错,都需要重新分析。工况频率变化也会改变固定统一阈值的覆盖。
Angelopoulos 与 Bates 的指南(2022 年 12 月 7 日 arXiv v6)是所读流程、诊断、分组校准和附录 D 证明的参考。本文混合分布、参数与模拟是独立教学实例,不复现作者基准。实际结论是:覆盖数字必须明确平均总体、校准方式和宽度代价。正确理解边际保证所证明的内容,它才真正有用。
from math import inf
def q90(scores):
n = len(scores)
k = (9*(n+1)+9)//10 # ceil(0.9*(n+1)), exact integer arithmetic
return sorted(scores)[k-1] if k <= n else inf
print(q90([1., 2., 3., 4.]))
q = 3.
print(.8*min(q,1.) + .2*min(q/6.,1.))
代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 9 月 24 日。

