【问题标题】:Looping over all models in r循环r中的所有模型
【发布时间】:2016-06-29 18:13:13
【问题描述】:

场景

我有一些数据说,我想实现 50 个 arima 模型并进行预测。我正在使用预测包来做到这一点。假设result 是一个维度为 3(列)和 50(行)的矩阵,其中第一列、第二列和第三列分别包含 p、d 和 q 的值。我想将 arima 适合所有这些并获得所有这些的预测。以下是我的尝试:

y <- ts(rnorm(1000),start = 1850, frequency=1)
fit <- vector(mode="list", length=50)

for (j in 1:50){
   p[j]<- result[j,1]
   d[j]<- result[j,2]
   q[j]<- result[j,3]
    
   fit[[j]]<- arima(y, order=c(p[j],d[j],q[j]))
   fcasts<- forecast(fit[[j]], h=1)$mean
            
}

运行时会给出以下消息:

Error in arima(y, order = c(p, d, q)) : 
  'order' must be a non-negative numeric vector of length 3

任何想法,如何做到这一点?

【问题讨论】:

  • 也许你想要fit[j]&lt;- arima(y, order=c(p[j],d[j],q[j]))
  • 是的,这就是我想做的。
  • 什么是class(fit)
  • 另外,您似乎没有保存预测。 fcasts 将在每次循环迭代时被覆盖。也许把它们放在一个列表中?在循环之前初始化fcast = list(),然后放入fcasts[[j]] &lt;- forecast(...)
  • @PierreLafortune。它显示为 ARIMA...

标签: r time-series


【解决方案1】:

我想知道这是否是你真正想做的:

y <- ts(rnorm(1000),start = 1850, frequency=1)
fcasts <- numeric(50)

for (j in 1:50){
   p <- result[j,1]
   d <- result[j,2]
   q <- result[j,3]

   fit <- arima(y, order=c(p, d, q))
   fcasts[j] <- forecast(fit, h=1)$mean  ## predicted mean of 1-day ahead forecast

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2019-06-16
    • 2017-05-19
    • 2016-09-03
    • 2020-12-21
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多