zoukankan      html  css  js  c++  java
  • 【大数据部落】R语言代写GAM(广义相加模型)对物业耗电量进行预测

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

    GAM模型

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

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

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

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

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

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

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

    结语

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

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

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

    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)")

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

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

    data = matrix_gam,

    family = gaussian)

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

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

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

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

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

    结语

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

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

    如果您有任何疑问,请在下面发表评论。   

  • 相关阅读:
    hmac模块和hashlib模块
    logging模块
    sys模块
    datetime模块
    time模块
    例题:100节楼梯,0-49节,分数等于节数。50节(包括50节)以后每节10分。输入节数,得出分数。这个题如果按照讲页来做是错误的,所以再写一遍,请大家指导
    C# .ToString() 格式化
    例题:判断平年还是闰年。理解使用异常语句try catch finally 和datetime 时间类
    SQL Server第一堂课:创建数据库,创建表,以及表中最基本的增,删,改
    例题:输入学生的各项资料,然后根据学生的分数,重新排序。重新复习结构体,集合,数组,for循环,冒泡排序,水平符的使用。
  • 原文地址:https://www.cnblogs.com/tecdat/p/11097006.html
Copyright © 2011-2022 走看看