03 经验累积分布 ecdf
用途
累积分布曲线,用于电压合格率、预测误差分位数这类统计判据。
示例(5 张)
03-1 各节点电压偏差的经验累积分布(含 ±7% 合格线)

03-2 不同季节日负荷率的累积分布

03-3 光伏功率预测误差的累积分布(含 P90 分位)

03-4 四种降损方案年线损率的累积分布

03-5 三个监测点谐波电压含有率的累积分布

代码
以下 5 个函数取自 code/第一批_分布与矩阵261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第一批_分布与矩阵261107.py
def ecdf_01():
"""各节点电压偏差的经验累积分布(含 ±7% 合格线)。"""
fig, ax = new_fig()
rng = np.random.default_rng(301)
ax.ecdf(rng.normal(0.6, 2.5, 3000), color=C1, lw=1.0, label="全部节点")
ax.ecdf(rng.normal(1.8, 1.6, 1200), color=C3, lw=1.0, label="末端节点")
ax.axvline(7, color=C2, lw=0.7, ls="--", label="上限 +7%")
ax.axvline(-7, color=C2, lw=0.7, ls=":", label="下限 -7%")
ax.set_xlabel("电压偏差 / %")
ax.set_ylabel("累积概率")
ax.set_ylim(0, 1.05)
legend(ax, "upper left", ncol=1)
save(fig, "03_累积分布", "03_累积分布_节点电压偏差")
def ecdf_02():
"""不同季节日负荷率的累积分布。"""
fig, ax = new_fig()
rng = np.random.default_rng(302)
for i, (mu, sd, nm) in enumerate([(0.72, 0.055, "春季"), (0.83, 0.042, "夏季"),
(0.75, 0.052, "冬季")]):
ax.ecdf(rng.normal(mu, sd, 900), color=COLORS[i], lw=1.0,
ls=["-", "--", "-."][i], label=nm)
ax.set_xlabel("日负荷率")
ax.set_ylabel("累积概率")
ax.set_ylim(0, 1.05)
legend(ax, "upper left", ncol=1)
save(fig, "03_累积分布", "03_累积分布_各季节日负荷率")
def ecdf_03():
"""光伏功率预测误差的累积分布(含 P90 分位)。"""
fig, ax = new_fig()
rng = np.random.default_rng(303)
e = rng.laplace(0, 3.8, 4000)
ax.ecdf(e, color=C1, lw=1.0, label="预测误差")
q90 = np.quantile(np.abs(e), 0.90)
ax.axvline(q90, color=C2, lw=0.7, ls="--",
label="|误差| 的 P90 = " + f"{q90:.1f}%")
ax.axvline(-q90, color=C2, lw=0.7, ls=":")
ax.set_xlabel("预测误差 / %")
ax.set_ylabel("累积概率")
ax.set_xlim(-16, 16)
ax.set_ylim(0, 1.05)
legend(ax, "upper left", ncol=1)
save(fig, "03_累积分布", "03_累积分布_光伏预测误差")
def ecdf_04():
"""四种降损方案年线损率的累积分布。"""
fig, ax = new_fig()
rng = np.random.default_rng(304)
for i, (mu, sd, nm) in enumerate([(4.62, 0.30, "原状"), (3.71, 0.26, "方案一"),
(3.24, 0.22, "方案二"), (2.86, 0.19, "方案三")]):
ax.ecdf(rng.normal(mu, sd, 800), color=COLORS[i], lw=1.0,
ls=LINES[i], label=nm)
ax.set_xlabel("年线损率 / %")
ax.set_ylabel("累积概率")
ax.set_ylim(0, 1.05)
legend(ax, "lower right", ncol=1)
save(fig, "03_累积分布", "03_累积分布_降损方案线损率")
def ecdf_05():
"""三个监测点谐波电压含有率的累积分布。"""
fig, ax = new_fig()
rng = np.random.default_rng(305)
for i, (k, th, nm) in enumerate([(2.4, 4.0, "监测点 A"), (2.8, 3.2, "监测点 B"),
(1.9, 3.6, "监测点 C")]):
ax.ecdf(rng.gamma(k, th, 1500), color=COLORS[i], lw=1.0,
ls=LINES[i], label=nm)
ax.axvline(4.0, color=C2, lw=0.7, ls="--", label="限值 4%")
ax.set_xlabel("谐波电压含有率 / %")
ax.set_ylabel("累积概率")
ax.set_xlim(0, 26)
ax.set_ylim(0, 1.05)
legend(ax, "lower right", ncol=1)
save(fig, "03_累积分布", "03_累积分布_谐波电压含有率")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号