通过时间序列分析公共机构水表用量及趋势预测
通过时间序列分析公共机构水表用量及趋势预测
本文通过业务的角度利用时间序列的方式对水表使用量进行分析和预测,不涉及专业的算法知识,而是对一年内三百多条用水量数据分析,找寻其中的规律,在分析的过程中逐渐意识到自己使用的其实是时间序列的方式,因为用水量的改变与时间有着很紧密的关联,例如工作日、双休、节假日、调休、加班都会影响用水量,从而影响趋势预测数据的准确性。
数据预测方式
预测数据趋势一般有以下几种方式:
线性回归:适合平稳上升的数据类型,找到一条最佳拟合直线,来描述自变量和因变量之间的线性关系,进而预测趋势。
移动平均法:适合数据量基本不变的情况,通过计算一定窗口大小内数据的平均值,平滑数据序列,以此观察数据的大致走向。
多项式回归:当数据的趋势不是简单的直线关系时,多项式回归使用多项式函数拟合数据,捕捉更复杂的曲线趋势。
时间序列分析:自回归综合移动平均模型(ARIMA)常用于分析时间序列数据,通过对数据的自回归、差分和移动平均处理,预测未来值。
数据内容分析
由于数据未脱敏不能进行展示,通过观察日期/星期对应的使用量趋势,可以看出来在工作日的用水量明显较大,而双休日的用水量较少。
在下图中则可以看出来,同样是星期日的4月28号则用水量很高,是因为4月28号那天需要为五一放假调休补班,所以用水量和正常上班保持一致,从5月1号开始放假则用水量一致保持很低的状态,直到放假前一天的5月5号用水量有一定回升,这里也可以看出放假前的用水量会有一些下降,可能是请假的人员增加,而放假结束前用水量会增加,可能是提前回归岗位需要准备工作。
与上图类似的,可以看到国庆和中秋假期前,也会因为调休和放假的因素影响到当日用水量,综合这些情况在进行数据预测的同时要进行考虑。
所以综合以上内容,我们在做数据分析的时候,要将所有数据进行分组处理,按照星期的维度来划分,再将每个星期分组中的极值剔除,因为其可能是放假导致的用水量降低,或者是调休导致的用水量增加,这些数据会拉低/拉高整体平均值。再过滤极值时有两种情况:
星期一到星期五:工作日的用水量较大,这里只处理较低的值,可以取平均值的二分之一,如果判断该值小于平均值的二分之一,则予以剔除。
星期六到星期日:休息日的用水量较小,这里只处理较大的值,可以取平均值的二倍,如果该值大于平均值的两倍,则予以剔除。
数据内容预测
有了以上的数据分析组,我们可以将每个星期组计算出平均值,在做数据预测时,按照每天的维度来逐个处理。
判断当天为星期几:使用当前星期组里的平均值,然后再同步加减一定范围的随机数,保证每天的数据都有所差异,
判断调休与放假状态:这里是需要提前准备好当年度放假安排情况,所以不能预测的时间太长。此时处理当天的数据也有两种情况:如果当天为星期一到星期五,则只会出现放假的情况,使用休息日的平均值即可,如果当天为星期六或星期日,则只会出现调休的情况,使用工作日的平均值即可。
可以基于以上规律编写出统一的时间序列预测代码,这样针对公共机构不同区域的用水量都可以进行预测,而同理用电量也符合上述规律,但用电量会受到季节影响更大,尤其夏季空调会大幅增加耗电,而冬季日照时间缩短也会导致照明用电量增加。
做完这些工作,我们就可以对未来若干周期的水表用量进行预测,给出预测值与置信区间,通过图表直观呈现用水趋势走向,为公共机构短期用水规划、费用预算提供参考。