如何去除燃气用量时间序列中与温度信号相关的波动分量?
你的计算错误的核心原因
你把无量纲的皮尔逊相关系数当成了带量纲的线性回归斜率使用,这是导致结果单位异常的根源:
- 皮尔逊相关系数
corr_coef的取值范围是[-1,1],没有任何物理单位,只反映两个变量线性相关的方向和紧密程度 - 你直接用
corr_coef * TMIN计算得到的数值单位是温度单位(度),和燃气用量的单位(therms)完全不属于同一量纲,直接相减没有物理意义,自然得不到你要的结果,这和数据是否缩放没有关系。
正确方法的原理说明
你想从总燃气用量中分离温度相关波动、得到基线用量的思路是完全成立的,用线性回归就可以实现:
我们可以先基于你的场景做合理假设:
每日总燃气用量 = 温度相关的采暖用量 + 温度无关的基线用量(热水器等) + 随机误差
对应可以构建线性回归模型:USAGE = k * TMIN + b + ε
其中:
k是回归斜率,单位为therms/度,你的场景下k为负数,代表温度每下降1度,采暖导致的燃气用量上升|k|thermsb是回归截距,单位为therms,代表全量数据下的平均基线用量ε是无法被温度解释的随机误差
你要的每日基线用量,就是总用量减去温度相关的采暖部分,计算公式为:基线用量 = USAGE - k * TMIN
这里的斜率k和相关系数corr_coef的关系为:k = corr_coef * (USAGE的标准差 / TMIN的标准差)
这样计算出来的k*TMIN单位和燃气用量完全一致,相减后的结果也符合预期。
实际场景的优化建议
实际家庭采暖存在启动临界温度:当每日最低温度高于某个值(比如18℃,可根据你家的采暖习惯调整)时,你完全不会开启采暖炉,这一温度区间内燃气用量和温度几乎没有相关性。你可以用分段线性回归替代全局线性回归:
- 温度低于临界温度时,按上述线性模型扣减温度相关的采暖用量
- 温度高于临界温度时,所有燃气用量都直接计为基线用量
这样得到的基线数据会更贴合实际使用情况,你也可以用夏天(不需要采暖的时间段)的燃气用量直接验证基线计算的合理性。
内容的提问来源于stack exchange,提问作者Claire Andrews
相关产品推荐
相关产品推荐

