zoukankan      html  css  js  c++  java
  • R语言ARIMA集成模型预测时间序列分析

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

    本文我们使用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")

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

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

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

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

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

    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.  

    对模型进行预测

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

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

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

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

    最后比较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.  

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

    我们使用前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.  

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

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

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

    在函数中,我们使用

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


    最受欢迎的见解

    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模型进行时间序列预测

  • 相关阅读:
    MJRefreshFooterView
    UIActionSheet
    UIAlertView带textField
    SIAlertView
    旋转 锚点
    centos7.2 Apache+PHP7.2+Mysql5.6环境搭建
    ubuntu16.04 mysql 开启远程连接
    Ubuntu16.04重新安装MySQL数据库
    Ubuntu16.04彻底卸载MySQL
    laravel框架基础(2)---laravel项目加载机制
  • 原文地址:https://www.cnblogs.com/tecdat/p/14184086.html
Copyright © 2011-2022 走看看