Re: [問題] boot函數和optim函數搭配使用的問題

看板R_Language作者 (為什麼會流淚)時間7年前 (2017/01/10 16:07), 7年前編輯推噓3(303)
留言6則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《phil5566 (5566)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 新手 : [問題敘述]: : 就是關於在R上用bootstrap這個統計方法時, : 我會用boot這個function,而這個boot(), : 括弧裡我只要給 : 1.T(假設T是data所形成的矩陣資料形式), : 2.statistic(是自己定義的一個函數,用來計算原始dataT,bootstrapp後的資料,所要計算 : 出統計量的數學式子) : 3.R (要bootstrap的次數) : 假設上述的第2點statistic的部分 : 我是自己定義一個函數叫"theta.boot", : 這個函數運算過程會使用到optim()這個function, : 但optim()運算出的結果會有"$par"和"$convergence"的這兩部分 : 我希望convergence=0的情形時,此時$par的解才是我想要的 : 簡單說就是我希望算出的解"要收斂" : ...................問題來了........................, : 每bootstrap一次,當下那一次bootstrap過後的data是固定的,代入theta.boot運算, : 由於給optim()設的初始值也是固定的,所以算出最後的解也是固定的, : 然而這個解可能是收斂也可能不收斂,又我設定bootstrap1000次, : 勢必這1000個解中有收斂也有沒收斂的,我希望要有1000個收斂解,要怎麼做到? : 在程式範例中附上code : 求各位大大 高手 先進 解答~感激不盡~ : [程式範例]: : http://codepad.org/ongXCSxq : [環境敘述]: : win7, : R x64 3.3.1, : "boot"package : [關鍵字]: : boot,optim 你試試看這個 optimx optimx(par, fn, gr=NULL, hess=NULL, lower=-Inf, upper=Inf, method=c("Nelder-Mead","BFGS"), itnmax=NULL, hessian=FALSE, control=list(), ...) optim(par, fn, gr = NULL, ..., method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent"), lower = -Inf, upper = Inf, control = list(), hessian = FALSE) 看起來是一樣的 不過 optimx 有itnmax,你可以調最大迭代次數,調到你能收斂為止, 給他500 or 5000看看, 如果還是不行收斂,可能就要調整抽樣比例,或是你的data or model有問題 如果不收斂的情況下,結果差異不大,那其實就不太需要conv了 --------------------------------------------------------------- 最簡單的方法就是,你做2000次,取1000次有收斂的結果, 不過這有沒有問題,就不清楚了,這樣做其實並不算單純的抽樣, 這樣做,等於是把不好的抽樣結果捨棄,如果是寫文章,要稍微提一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 134.208.26.172 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1484035666.A.0DC.html ※ 編輯: f496328mm (134.208.26.172), 01/10/2017 16:11:21

01/10 20:40, , 1F
optim的control也可以maxit
01/10 20:40, 1F

01/10 20:41, , 2F
optimx應該只是提供的method比較多
01/10 20:41, 2F

01/11 13:07, , 3F
讚讚讚~我再來試試看
01/11 13:07, 3F

01/11 17:23, , 4F
謝謝f大提醒
01/11 17:23, 4F

01/11 17:25, , 5F
也謝謝celestialgod的幫忙,真的學到蠻多的
01/11 17:25, 5F

01/11 17:26, , 6F
^大大
01/11 17:26, 6F
文章代碼(AID): #1OT9PI3S (R_Language)
文章代碼(AID): #1OT9PI3S (R_Language)