Я использую auto.arima
с xreg
и do.call
.Я понял, что для некоторых временных рядов это работает хорошо, но для некоторых других он выдает следующую ошибку, которую я не могу решить:
Ошибка в dimnames (x) <- dn: length of '[2] dimnames не равен экстенту массива </em>
Вот воспроизводимый случай:
# 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.вызов функции.
Редактировать: я использую 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, иногда не работает (не всегда).