0
点赞
收藏
分享

微信扫一扫

拓端tecdat|R语言ARIMA集成模型预测时间序列分析

 

本文我们使用4个时间序列模型对每周的温度序列建模。第一个是通过auto.arima获得的,然后两个是SARIMA模型,最后一个是Buys-Ballot方法。

我们使用以下数据

  1.   
  2.  k=620
  3.  n=nrow(elec)
  4.  futu=(k+1):n
  5.  y=electricite$Load[1:k]
  6.  plot(y,type="l")

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重

我们开始对温度序列进行建模(温度序列对电力负荷的影响很大)

  1.  
  2.  y=Temp
  3.  plot(y,type="l")

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重_02

  1.   
  2.  abline(lm(y[ :k]~y[( :k)-52]),col="red")
  3.   
  4.   
  5.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_时间序列_03

 

时间序列是自相关的,在52阶

  1.  
  2.  acf(y,lag=120)
  3.   
  4.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重_04

 

  1.  
  2.  model1=auto.arima(Y)
  3.  acf(residuals(model1),120)
  4.   
  5.  

我们将这个模型保存在工作空间中,然后查看其预测。让我们在这里尝试一下SARIMA

  1.  
  2.  arima(Y,order = c(0,0,0),
  3.  seasonal = list(order = c(1,0,0)))
  4.   
  5.   
  6.  

然后让我们尝试使用季节性单位根

  1.  
  2.  Z=diff(Y,52)
  3.  arima(Z,order = c(0,0,1),
  4.  seasonal = list(order = c(0,0,1)))
  5.   
  6.  

然后,我们可以尝试Buys-Ballot模型

  1.  
  2.  lm(Temp~0+as.factor(NumWeek),
  3.   
  4.   
  5.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_r语言_05

对模型进行预测

  1.   
  2.  plot(y,type="l",xlim=c(0,n )
  3.  abline(v=k,col="red")
  4.  lines(pre4,col="blue")
  5.   
  6.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_r语言_06

  1.   
  2.  plot(y,type="l",xlim=c(0,n))
  3.  abline(v=k,col="red")
  4.   
  5.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_r语言_07

 

  1.  
  2.  plot(y,type="l",xlim=c(0,n))
  3.   
  4.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重_08

 

  1.  
  2.  plot(y,type="l",xlim=c(0,n))
  3.  abline(v=k,col="red")
  4.   
  5.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_时间序列_09

最后比较4个模型的结果

  1.   
  2.  lines( MODEL$y1,col="
  3.  lines( MODEL$y2,col="green")
  4.  lines( MODEL$y3,col="orange")
  5.  lines( MODEL$y4,col="blue")
  6.   
  7.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_r语言_10

然后,我们可以尝试加权平均值来优化模型,而不是找出四个中的哪一个模型是“最优”,y ^ T = ∑iωiy ^ t(i)其中ω=(ωi),ω1+ ... +ωk= 1。然后,我们想要找到“最佳”权重。我们将在第一个m值上校准我们的四个模型,然后比较下111个值(和真实值)的预测组合,

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_时间序列_11

 

我们使用前200个值。

然后,我们在这200个值上拟合4个模型

然后我们进行预测

  1.   
  2.  y1=predict(model1,n.ahead = 111)$pred,
  3.  y2=predict(model2,n.ahead = 111)$pred,
  4.  y3=predict(model3,n.ahead = 111)$pred,
  5.  y4=predict(model4,n.ahead = 111)$pred+
  6.   
  7.  

为了创建预测的线性组合,我们使用

  1.  
  2.  a=rep(1/4,4)
  3.  y_pr = as.matrix(DOS[,1:4]) %*% a
  4.   
  5.  

因此,我们可视化这4个预测,它们的线性组合(带有等权重)及其观察值

为了找到权重的“最佳”值,最小化误差平方和,我们使用以下代码

  1.  
  2.  function(a) sum( DONN[,1:4 %*% a-DONN[,5 )^2
  3.   
  4.   
  5.  

我们得到最优权重

  1.  
  2.  optim(par=c(0,0,0),erreur2)$par
  3.   
  4.   
  5.  

然后,我们需要确保两种算法的收敛性:SARIMA参数的估计算法和权重参数的研究算法。

  1.   
  2.  if(inherits(TRY, "try-error") arima(y,order = c(4,0,0)
  3.  seasonal = list(order = c(1,0,0)),method="CSS")
  4.   
  5.   
  6.   
  7.  

然后,我们查看权重随时间的变化。

获得下图,其中粉红色的是Buys-Ballot,粉红色的是SARIMA模型,绿色是季节性单位根,

  1.   
  2.  barplot(va,legend = rownames(counts)
  3.   
  4.  

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_时间序列_12

我们发现权重最大的模型是Buys Ballot模型。

可以更改损失函数,例如,我们使用90%的分位数,

  1.  
  2.  tau=.9
  3.  function(e) (tau-(e<=0))*e
  4.   
  5.  

在函数中,我们使用

 

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重_13

 

这次,权重最大的两个模型是SARIMA和Buys-Ballot。

拓端tecdat|R语言ARIMA集成模型预测时间序列分析_权重_14

举报

相关推荐

0 条评论