使用xreg的auto.arima在do.call中不起作用

时间:2019-02-22 22:10:05

标签: r time-series forecasting arima do.call

我正在将auto.arimaxregdo.call一起使用。我已经意识到,在某些时间序列上,它运作良好,但对于另一些时间序列,则会产生以下无法解决的错误:

dimnames(x)<-dn中的错误: 'dimnames'[2]的长度不等于数组范围

这是一个可重复的案例:

# packages needed
require(magrittr)
require(forecast) # version 8.5

# create argument list
args=list()
args$y<-ts(c(100:140,rep(200,4),380,250),start=c(2016,1),frequency = 52)
args$seasonal<-F
args$xreg<-(diag(length(args$y))%>%.[,-c(1:24)])

# this works well
fit1<-auto.arima(y=args$y,seasonal=args$seasonal,xreg=args$xreg)

# but this does NOT work, although everything is the same!
fit2<-do.call(auto.arima,args)

# however, if we change arguments slightly, do.call works well, as seen below:
args$y<-ts(10:20,start=c(2016,1),frequency = 52)
args$xreg<-(diag(length(args$y))%>%.[,-c(1:4)])

fit2<-do.call(auto.arima,args)

我不知道问题出在哪里,auto.arima或do.call函数。

编辑:我在将auto.arima参数作为...的函数中使用auto.arima。换句话说,我不确切知道将预先提供哪些参数。一个有效的答案应该适用于以下代码:

foo<-function(vec_ts,...){

  args = list(...)
  args$y<-vec_ts # time series vector

  fit<-do.call(auto.arima,args)

}

...可以包含xreg,也可以不包含xreg。如果没有xreg,则上面的功能就像一个超级按钮一样起作用。但是,当...包含xreg矩阵时,它有时不起作用(并非总是如此)。

0 个答案:

没有答案