里用gam使用_在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

本文介绍了如何在R语言中使用广义相加模型(GAM)进行电力负荷时间序列分析。通过对每日和每周季节性的平滑函数建模,观察到明显的每日和周内季节性模式。通过不同交互项的尝试,如张量积和平滑项,以提高模型的拟合度,并利用GCV分数和AIC进行模型选择,最终得出最佳模型,揭示了电力负荷的峰值时间与工作日之间的关系。
摘要由CSDN通过智能技术生成

原文链接:

http://tecdat.cn/?p=9024​tecdat.cn

用GAM进行建模时间序列

我已经准备了一个文件,其中包含四个用电时间序列以进行分析。数据操作将由data.table程序包完成。

将提及的智能电表数据读到data.table

DT <- as.data.table(read_feather("DT_4_ind"))

使用GAM回归模型。将工作日的字符转换为整数,并使用recode包中的函数car重新编码工作日,以适应一周中出现的情况:1.星期一,…,7星期日。


  1. DT[, week_num := as.integer(car::recode(week,

  2. "'Monday'='1';'Tuesday'='2';'Wednesday'='3';'Thursday'='4';

  3. 'Friday'='5';'Saturday'='6';'Sunday'='7'"))]

将信息存储在日期变量中,以简化工作。


  1. n_type <- unique(DT[, type])

  2. n_date <- unique(DT[, date])

  3. n_weekdays <- unique(DT[, week])

  4. period <- 48

让我们看一下用电量的一些数据并对其进行分析。


  1. data_r <- DT[(type == n_type[1] & date %in% n_date[57:70])]

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

  3. geom_line() +

  4. theme(panel.border = element_blank(),

  5. panel.background = element_blank(),

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

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

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

  9. axis.text = element_text(size = 10),

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

  11. labs(x = "Date", y = "Load (kW)")

eae5a5a3e23f4ec4ca41f25e1c7fda4a.png

在绘制的时间序列中可以看到两个主要的季节性:每日和每周。我们在一天中有48个测量值,在一周中有7天,因此这将是我们用来对响应变量进行建模的自变量–电力负荷。

训练我们的第一个GAM。通过平滑函数s对自变量建模,对于每日季节性,使用三次回归样条,对于每周季节性,使用P样条。


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

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

  3. data = matrix_gam,

  4. fami
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值