【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_R语言

人们对于电力的需求与依赖随着生活水平的提高而不断加深,用电负荷预测工作开始变得越来越重要,如果可以发现用电负荷的规律性,我们就可以合理安排用电负荷。我们使用某商业物业两个星期的电耗数据进行分析。

GAM模型

当因变量和自变量不呈线性关系时,可用广义相加模型(GAM)。GAM模型的优点,在于其解决响应变量与预测因子间的高度非线性和非单调关系方面的突出能力,是一种基于数据的模型(data-driven),数据决定着响应变量和预测因子之间的关系。电耗数据不是线性的,同时是一个有季节趋势的时间序列趋势。那么GAM模型是否可以用来预测时间序列呢?

首先绘制出用电量的时间序列图,看下趋势

ggplot(data_r, aes(date_time, value)) +

geom_line() +

theme(panel.border = element_blank(),

panel.background = element_blank(),

panel.grid.minor = element_line(colour = "grey90"),

panel.grid.major = element_line(colour = "grey90"),

panel.grid.major.x = element_line(colour = "grey90"),

axis.text = element_text(size = 10),

axis.title = element_text(size = 12, face = "bold")) +

labs(x = "日期", y = "用电量 (kW)")

【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_编程开发_02

gam_1 <- gam(Load ~ s(Daily, bs = "cr", k = period) +

s(Weekly, bs = "ps", k = 7),

data = matrix_gam,

family = gaussian)

绘制时间序列有两个主要自变量:天和周。我们的响应变量是电力负荷。我们来构建出GAM模型

【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_编程开发_03

我们可以看到时间变量对电力负荷的影响。在左图中,负荷的峰值是白天下午3点左右。同时我们可以看到,周末耗电量下降。

【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_R语言_04

然后我们绘制耗电量曲面图更直观的发现规律。

【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_编程开发_05

我们可以看到,最高峰是当“每日”变量的值接近(3点),“周”变量的值为1(这是星期一)。

【大数据部落】R语言GAM(广义相加模型)对物业耗电量进行预测_编程开发_06

最后,我们可以看到,电力负荷的最高值是星期一下午3点直到星期四,然后负载在周末减少。

结语

GAM模型的优点在于其解决高度非线性预测问题的突出能力。GAM模型是否可以应用在其他领域?

抛砖:logistic regression在credit risk里面用的很多,个人认为作为统计进入金融风控是个不错的切入点。

未完待续。。。