听起来你想计算一个置信带:一个包含整个 CDF 概率的区域1−α. 使用 Dvoretzky–Kiefer–Wolfowitz 不等式执行此操作涉及三个步骤:
生成 CDF(即,对您的值进行排序和计数——在 matlab 中很简单)
不等式本身表明
P(supx∣∣F(x)−F^(x)∣∣>ϵ)≤2exp(−2nϵ2)
在哪里
F(x)是“真实”的总体 CDF,F^(x)是您的示例 CDF,并且n是数据点的数量。将该不等式的右侧设置为α并重新安排产量:
ϵ=12nlog(2α−−−−−−−−−√)
- 您现在可以绘制置信带。置信带有一个上边缘U(x)和一个下边缘L(x):
L(x)=max{F^(x)U(x)=min{F^(x)−ϵ,0}+ϵ,1}
将其翻译成 matlab 非常简单:
function [low_edge, F_hat, hi_edge, x] = dkw_bounds(data, alpha)
[F_hat, x] = ecdf(data);
epsilon = sqrt(ln(2/alpha)/(2*length(data)));
low_edge = max(F_hat - epsilon, 0); %Does the right thing here, use pmax in R
hi_edge = min(F_hat + epsilon, 1);
end
然后,您可以绘制三条曲线,使用它们来形成 apatch等。