[程式] R 迴圈因為 nlminb or lm function 發ꔠ…
[軟體程式類別]:
R
[程式問題]:
迴圈會因為迴圈中函式錯誤而中止
[軟體熟悉度]:
中(3個月到1年)
[問題敘述]:
我需要用non-linear的方式找某個函數的最小值 ( Residual Sum of Square )
這個函數不是線性的, 解沒有close form 所以我需要用 nlminb 這個函數
由於這類演算法都有選取初始值問題, 所以我寫了一個迴圈, 用不同的初始值去跑
但是有時候 nlminb 這個函數在跑到一半的時候, 就因為出現錯誤, 而把整個迴圈中止
ps. 錯誤內容為:
錯誤在lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
我希望能夠在錯誤出現的時候, 跳過(留下一個NA)值, 或是至少能找出錯誤發生的原因
[程式範例]:
L <- function(parameter) { # parameter 均是轉換過的
m <- logit.inv(parameter[1])
r <- exp(parameter[2])
if (length(y) > 26) sum(lm(y~trend(n,m,r)+add.x[1:n])$res^2) else
sum(lm(y~trend(n,m,r))$res^2)
}
#這個函數會回傳 Residual Sum of Square, 而算法我是用另一個函數 lm
for (repeat.nlminb in 1:10 ) {
start.value <- rnorm(2)
temp <- nlminb(objective=L,start=start.value)
result.parameter[repeat.nlminb,] <- c(temp$par,temp$objective)
}
#這裡我會利用 rnorm 隨機取 initial value 跑十次, 並紀錄十次的結果
-----------------------------------------------------------------------------
先謝謝了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.36.80
推
10/18 12:27, , 1F
10/18 12:27, 1F
→
10/18 12:28, , 2F
10/18 12:28, 2F
→
10/18 12:29, , 3F
10/18 12:29, 3F
→
10/18 13:32, , 4F
10/18 13:32, 4F