Re: [問題] boot函數和optim函數搭配使用的問題
※ 引述《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
01/10 20:40, 1F
→
01/10 20:41, , 2F
01/10 20:41, 2F
推
01/11 13:07, , 3F
01/11 13:07, 3F
推
01/11 17:23, , 4F
01/11 17:23, 4F
推
01/11 17:25, , 5F
01/11 17:25, 5F
→
01/11 17:26, , 6F
01/11 17:26, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):