2014-12-02 141 views
0

我試圖在R中使用optimx函數,但不斷收到錯誤消息: optimx.check錯誤(par,optcfg $ ufn,optcfg $ ugr,optcfg $ uhess,lower,: 在初始參數R中的優化函數

我已經看過另一個計算器問題R- Optimx for exponential function with 2 parameters - cannot evaluate function at initial parameter values

但解決方案並沒有爲我工作無法計算功能

這裏是我的測試數據:

t <- seq(from=1,to=60,by=1) 
len <- 100*(1-exp(-0.2*(t-0))) 

t.data<-data.frame(t,len) 
在optimx功能下面

Age1 <- 1 #### a young age 
Age2 <- 50 #### an old age 

功能的功能

p <- as.vector(c(30,110,0.3,1.0)) 

年齡標準桿個

起始值被最小化

schnute_richards <- function(p,data) # which are Len1,Len2,K,R 
      { 
      zero <- p[1]^p[4]       # Len1^R 
      one <- p[2]^p[4]-p[1]^p[4]    # (Len2^R-Len1^R) 
      two <- 1-exp(-p[3]*(data$t-Age1))  # (1-EXP(-K*(ObsAge-Age1))) 
      three <- 1-exp(-p[3]*(Age2-Age1))   # (1-EXP(-K*(Age2-Age1))) 
      pred <- (zero + one*(two/three))^(1/p[4]) # final equation 
      sum((data$len-pred)^2) 
      } 

optimx代碼

temp <-optimx(p,function (x) schnute_richards(x[1],x[2])) 

我試過這段代碼的其他版本,但是我得到了同樣的錯誤信息。這個代碼被用在我之前提到的另一個stackoverflow消息中,那就是解決方案。

感謝您的任何幫助。

回答

3

研究help(optimx)

library(optimx) 
temp <- optimx(p, schnute_richards, data = t.data) 
#     p1  p2  p3  p4  value fevals gevals niter convcode kkt1 kkt2 xtimes 
#Nelder-Mead 18.12639 99.99589 0.1999604 1.0005907 7.282821e-05 475  NA NA  0 FALSE TRUE 0.03 
#BFGS  18.12844 99.99493 0.2000565 0.9993415 6.034452e-05  82  20 NA  0 FALSE TRUE 0.01