У меня есть следующий код, который создает матрицу с любой возможной комбинацией из 3 параметров, а затем создает модель аримы для каждого набора параметров. Иногда шаг слесаря, где он обучает модели, выдает ошибку и уходит. Я хотел бы изменить код так, чтобы, если fitter выдает ошибку вместо того, чтобы уходить, он просто пропускает эту комбинацию параметров и переходит к следующей строке в матрице. Любые советы будут очень признательны.Обработка ошибок с do.call
Код:
library("fpp")
dataTrain <- window(hsales,end=1989.99)
p1<-1:10
d1<-1:2
q1<-1:7
paramtrix<-expand.grid(p1,d1,q1)
modbuilder <- function(a,b,c) {Arima(dataTrain, order=c(a,b,c))}
fitter <- do.call(Vectorize(modbuilder, SIMPLIFY=FALSE), unname(paramtrix))
Update:
## Forecasting/Accuracy of models
funcCast<-function(x){forecast(x,h=20)$mean}
ModCast<-lapply(fitter,funcCast)
ModAcc<-function(x){accuracy(x,tsTest)[1,5]}
TestAcc<-lapply(ModCast,ModAcc)
##Find Model that minimizes mape
Acc_res<-do.call(rbind,TestAcc)
res_num <- which(Acc_res==min(Acc_res))
res_model<-fitter[[res_num]] ## Error being introduced by NAN
обертывание 'Ari ma' в 'tryCatch' может работать. попробуйте код здесь (но замените 'expr' своим' Arima (dataTrain, order = c (a, b, c)) ': https://stackoverflow.com/questions/36683031/trycatch-suppress-error-message/ 36683369 # 36683369 – jaimedash
@jaimedash Спасибо! TryCatch сделал трюк. – user3476463
классный. Я отправил это как ответ, но если он не работал так, как написано, не стесняйтесь редактировать этот ответ или публиковать свои собственные. Cheers – jaimedash