我有下面的代碼創建一個矩陣,每個可能的3個參數組合,然後爲每組參數創建一個arima模型。有時候訓練模型的鉗工步驟會拋出錯誤並退出。我想修改代碼,這樣如果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))
更新:
## 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
包裹'Arima'在'tryCatch'可能工作。嘗試這裏的代碼(但用你的'Arima(dataTrain,order = c(a,b,c))'代替'expr':':https://stackoverflow.com/questions/36683031/trycatch-suppress-error-message/ 36683369#36683369 – jaimedash
@jaimedash謝謝!tryCatch訣竅。 – user3476463
很酷。我張貼了一個答案,但如果它沒有'寫作的工作,隨時編輯該答案或張貼自己的。歡呼 – jaimedash