3. 居民用户分时电价响应弹性系数测算
数据准备与弹性系数定义
弹性系数衡量用电量对电价的敏感程度。在分时电价场景下,我们关注峰段电价上调后,居民是否将用电转移至谷段。采用弧弹性公式,避免点弹性对基准点选择的敏感性:
E = [(Q2 - Q1) / ((Q1 + Q2)/2)] / [(P2 - P1) / ((P1 + P2)/2)]
其中:
Q1 = 分时电价实施前月均峰段用电量 (kWh)
Q2 = 分时电价实施后月均峰段用电量 (kWh)
P1 = 原统一电价 (元/kWh)
P2 = 分时电价峰段电价 (元/kWh)
E 为负值表示峰段用电随电价上升而减少
假设某小区 120 户居民,智能电表采集 15 分钟粒度数据。分时电价方案:峰段(08:00–22:00)0.62 元/kWh,谷段(22:00–08:00)0.32 元/kWh;原统一电价为 0.52 元/kWh。按收入分为三组:低收入(月收入 < 5000 元)、中等收入(5000–12000 元)、高收入(> 12000 元)。
分组弹性计算与结果判读
以低收入组为例,展示完整计算过程:
低收入组(40户):
实施前峰段月均用电 Q1 = 180 kWh
实施后峰段月均用电 Q2 = 135 kWh
价格 P1 = 0.52 元/kWh,P2 = 0.62 元/kWh
ΔQ% = (135 - 180) / ((180 + 135)/2) = -45 / 157.5 = -28.57%
ΔP% = (0.62 - 0.52) / ((0.52 + 0.62)/2) = 0.10 / 0.57 = +17.54%
E = -28.57% / 17.54% ≈ -1.63
中等收入组 E ≈ -0.78,高收入组 E ≈ -0.33。三组弹性系数均为负值,符合需求响应基本规律。低收入组 |E| 最大,说明其用电行为对价格变化最敏感,峰段用电削减幅度最大。
判读要点:|E| > 1 为富有弹性,峰段用电削减比例超过电价上涨比例;|E| < 1 为缺乏弹性,用电量变化相对温和。低收入组 |E| > 1,表明分时电价对该群体具有显著引导效果。
可复现的测算脚本
以下 Python 脚本读取 CSV 格式的智能电表数据,自动完成分组弹性计算:
import pandas as pd
import numpy as np
# 读取数据:列包含 user_id, income_group, period, month, kwh
df = pd.read_csv("smart_meter_data.csv")
# 筛选峰段数据(period == 'peak')
peak = df[df["period"] == "peak"].copy()
# 标记实施前后:假设实施月份为 2024-07
peak["phase"] = np.where(peak["month"] < "2024-07", "before", "after")
# 按用户和阶段聚合月均用电量
pivot = peak.pivot_table(
index=["user_id", "income_group"],
columns="phase",
values="kwh",
aggfunc="mean"
).reset_index()
# 弧弹性计算函数
def arc_elasticity(q1, q2, p1, p2):
dq_pct = (q2 - q1) / ((q1 + q2) / 2)
dp_pct = (p2 - p1) / ((p1 + p2) / 2)
return dq_pct / dp_pct
P1, P2 = 0.52, 0.62
pivot["E"] = arc_elasticity(pivot["before"], pivot["after"], P1, P2)
# 按收入组汇总平均弹性
result = pivot.groupby("income_group")["E"].agg(["mean", "std", "count"])
result.columns = ["平均弹性E", "标准差", "户数"]
print(result.round(3))
运行后输出各收入组的平均弹性系数、标准差和样本户数。标准差反映组内个体响应差异,若标准差过大,需检查是否存在异常用电模式(如长期空置、电采暖等)。
注意事项:弹性系数测算需控制气温、节假日等混杂因素。建议选取实施前后各 3 个月且气温相近的时段,或引入温度作为协变量进行回归校正,避免将季节性用电变化误判为价格响应。