R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据

最近我们被客户要求撰写关于电力负荷预测的研究报告。根据我们对温度的预测,我们可以预测电力消耗。

由Kaizong Ye,Liao Bao撰写

绘制电力消耗序列图:

我们可以尝试一个非常简单的模型,其中日期Y_t的消耗量是时间,温度(多项式形式表示)以及工业生产指数IPI_t的函数。


plot(elect,type="l")

 lm(Load~1+Time+as.factor(Week)+poly(Temp,3)+Temp+IPI,data=elect )

温度影响的多项式函数来自下图(去除线性趋势后的消耗序列)

我们还可以假设自回归形式,其中Y_ {t} 是Y_ {t-1} 的函数

lm(Load~1+Load1+Time+as.factor(Week)+
poly(Temp,3)+Temp1+IPI,data=elect

然后,我们可以尝试进行预测。第二个模型的问题是自回归部分。要预测Y_ {t + h} ,我们必须使用在t + h-1,Y ^ t + h − 1中所作的预测。


视频

R语言广义相加模型(GAM)在电力负荷预测中的应用

探索见解

去bilibili观看

探索更多视频

 
 
IPI = elect[futur,"IPI"])
for(t in 1:110){ 
 base_prevision[t+1,"Load1"] = p}

然后,我们可以预测 Y ^ t与观察值 Yt进行比较。

 

我们在夏季估计良好(我们预测了8月上半月的高峰),但我们低估了冬季的消耗量。

最后,我们可以忽略解释变量,而直接尝试建立时间序列模型。

 

经典(简单)的解决方案是取对数

plot(elect
plot(z,type="l")
B = data.frame(z=z,t=1:length

然后,我们必须消除线性趋势,以平稳序列

z = residuals(lm(z~t,data=B))
 
 
arima(Z,order = c(4,0,0), 
seasonal = list(order = c(1 

第一个模型是稳定的,没有单位根。我们可以尝试引入季节性单位根

 arima(Z,order = c(0,0,0), 
seasonal = list(order = c(0,1, 

最后,最后一个要简单一些

arima(Z,order = c(1,0,0), seasonal = list(order = c(2,0,0)))

然后,我们将所有预测存储在数据库中

然后将线性趋势添加到残差的预测中

reg = lm(z~t,data=B)

在这里,我们在 logY上建立了线性模型,即 logY〜N(μ,σ2),因此 E [Y] = exp(μ+σ2/ 2)

sqrt(predict(modelz1,n.ahead = 111)$se^2+sigma^2),
  

我们在这里假设两个模型(线性趋势和自回归模型的线性)的预测估计量是独立的,因此我们可以对方差项求和。另外,Y的预测是

 exp(DOz$z1+1/2*DONNseu$seu1^2),

我们比较三个模型的预测(与观察值)

我们与之前的预测进行比较,

lines(futur,base_previ
col="orange")

夏季预测会有所偏差,而冬季预测我们有所改善。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds