小言_互联网的博客

R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测

434人阅读  评论(0)

原文链接:http://tecdat.cn/?p=18359 

 

电力负荷预测是电网规划的基础,其水平的高低将直接影响电网规划质量的优劣。为了准确预测电力负荷,有必要进行建模。本文在R语言中使用分位数回归、GAM样条曲线、指数平滑和SARIMA模型对电力负荷时间序列预测并比较。

用电量

本文使用的数据是1996年至2010年之间的每周用电量数据,序列


  
  1. load ( "Load.RData")
  2. plot ( ts( data = Load , start= 1996 , frequency = 52) )

用电量变量及其影响因素:
•星期几(离散)
•时间小时(离散或非参数)
•年(连续)

交互影响:
•日期和时间

•年份和时间

活动
•公共假期

温度对模型的影响:高温、低温和极冷温度
 

模型:
分段线性函数,
GAM模型中的样条曲线
 

数据探索

时间对电力负荷的影响

> plot ( NumWeek , Load )

温度对电力负荷的影响,(Tt,Yt)

> plot ( Temp , Load )



负荷序列(Yt)的自相关的影响,

> acf (Load )


 

OLS与 中位数回归
 

中位数回归通过单调变换是稳定的。

 


  
  1. lm(y˜x, data =df)
  2. lm(y˜x, data =df , tau =.5)

现在,中位数回归将始终有两个观察结果。


  
  1. which ( predict ( fit ))
  2. 21 46


 

分位数回归和指数平滑

简单的指数平滑:

经典地,我们寻找使预测误差最小的α,即

 


  
  1. X= as. numeric ( Nile )
  2. SimpleSmooth = function (a){
  3. for (t in 2:T{L[t=a*X[t+(1 -a)*L[t -1
  4. } lines ( SimpleSmooth (.2) , col =" red ")


  
  1. V= function (a){
  2. for (t in 2 :T){
  3. L[t]=a*X[t]+(1 -a)*L[t -1 ]
  4. erreur [ t] =X[t]-L[t -1 ] }
  5. return ( sum ( erreur ˆ2) )
  6. optim (.5 ,V)$ par
  7. [ 1] 0.2464844
  8. hw= HoltWinters (X, beta =FALSE
  9. hw$ alpha
  10. [ 1] 0.2465579

我们可以考虑分位数误差


  
  1. HWtau = function ( tau ){
  2. loss = function (e) e*(tau -(e< ;=0) *1)
  3. V= function ( a){
  4. for (t in 2:T){
  5. L[t]=a*X[t+( 1 -a)*L[t -1
  6. erreur [t=X[t-L[t -1
  7. return ( sum ( loss ( erreur
  8. optim ( .5 ,V)$ par


  
  1. plot ( X, type = "b",cex =. 6
  2. lines ( SimpleSmooth ( HWtau (. 8,col= " blue ",
  3. lwd =2)


 

双指数平滑

我们考虑分位数误差

其中


  
  1. hw= HoltWinters (X, gamma =FALSE ,l. start =X[ 1])
  2. hw$ alpha
  3. alpha
  4. 0. 4223241
  5. hw$ beta
  6. beta
  7. 0. 05233389
  8. DouSmo = function (a,b){
  9. for (t in 2:T){
  10. L[t]=a*X[t+( 1 -a*(L[t - 1]+ B[t - 1]
  11. B[t]=b*(L[t]-L[t - 1]) +( 1 -b*B[t - 1]
  12. return (L+B)


 

预测

数理统计建立在对概率模型参数的估计和假设检验的基础上。
统计中的预测:当模型拟合观测值时,它会提供良好的预测。
相反,我们使用没有出现过的场景,它使我们能够评估未来的主要趋势,而不是预测极端事件的能力。


 

预测变量的构造
 


  
  1. plot (ts( data = Load $ Load , start =
  2. 1996 , frequency = 52) , col = " white "

回归


  
  1. plot ( ts( data = Temp , start =
  2. 1996 , frequency = 52) ,
  3. lines ( ts( data = train $Temp , start =
  4. 1996 , frequency = 52) )
  5. lines ( ts( data = test $Temp , start =
  6. 1996 +620 /52, frequency = 52)

 


 


SARIMA模型,s = 52


  
  1. ARIMA = arima (z, order =c( 1 , 0 , 0 ,seasonal =list ( order =c( 0 , 1 , 0 ,period = 52
  2. plot ( forecast (ARIMA ,h = 112 )


最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测


转载:https://blog.csdn.net/qq_19600291/article/details/105623322
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场