[問題] 寫loop選最適ARIMA model碰到的問題

看板R_Language作者 (賈斯伯張)時間11年前 (2013/04/09 14:08), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢 [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 目前針對一筆3年的daily資料作建模(365*3筆daily count data),已利用過傳統 time-series建模方法,透過ACF, PACF等判斷去找model,也利用過auto.arima去找model ,現在希望透過手寫一個loop去run各種model的組合,再由最小AIC來選出較適的模型 當我run後,卻吐回一個error message給我,然後終止loop而沒有任何結果 "錯誤在stats:::arima(x, order = order, seasonal = seasonal, fixed = par[1:narma], : wrong length for 'fixed' " 如果不用loop, 而是一個一個MODEL慢慢try,就可以跑(如下) ex. fit<-arimax(x,order=c(3,1,3),seasonal=list(order=c(0,1,1),period=7),xreg=xreg) fit2<-arimax(x,order=c(3,1,3),seasonal=list(order=c(0,1,2),period=7),xreg=xreg) .. .. [程式範例]: count = 0 for(i in 0:5) { for(j in 0:2) { for(k in 0:1) { for(l in 0:1) { for(m in 0:2) { for(n in 0:1) { for(o in 0:2) { model = arimax(ed0710$ED, order=c(i,j,k), seasonal=list(order=c(l,m,n), period=7*o), xreg=xreg1) if (count == 0) { aicmin = model$aic bestmodel = model } if ((count != 0)&& (model$aic< aicmin)) { aicmin = model$aic bestmodel = model diff1 = j diff2 = m seas = o*7 } count = count+1 } } } } } } print(bestmodel) print(count) print(diff1) print(diff2) print(seas) } [關鍵字]: time-series, ARIMA, loop -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.65.71.253

04/09 16:06, , 1F
錯誤發生的時候,你回圈的指標分別是多少呢?
04/09 16:06, 1F

04/09 16:25, , 2F
W大你好,所以R也可以在錯誤時做break,然後trace他的指標?
04/09 16:25, 2F

04/09 16:26, , 3F
在這方便我很菜,麻煩W大開導^^"
04/09 16:26, 3F

04/09 16:26, , 4F
04/09 16:26, 4F

04/09 16:29, , 5F
在debug時,可在每層loop裡寫上cat(i,j)等以顯示其值
04/09 16:29, 5F

04/09 16:30, , 6F
要手動追蹤也可以, 但我不常用就忘了 XD
04/09 16:30, 6F

04/09 16:38, , 7F
手動就直接看i j的值就知道停在哪邊了
04/09 16:38, 7F

04/10 07:05, , 8F
可參考#1HP9v_dr來除錯,或是直接用例外處理把回圈跑完
04/10 07:05, 8F
文章代碼(AID): #1HOx1q6c (R_Language)
文章代碼(AID): #1HOx1q6c (R_Language)