使用“nlminb”进行优化

时间:2011-06-26 09:38:07

标签: r

我现在使用非参数平滑来执行位置模型来估计参数.....平滑的参数之一是我必须优化的lamdha ...

所以在这种情况下,我决定使用“nlminb函数”来实现它.....

然而,我的编程给了我相同的“$ par”值,即使它是150次迭代并进行200次评估(默认情况下).....这是它选择“起始值为$ par”(即是0.000001 ......我想,我的书面程序肯定有问题......

我的编程看起来像: - (注意:w是我想要优化的参数,而LOO是                               代表留一个人

BEGIN

Myfunc <- function(w, n1, n2, v1, v2, g)
{  ## open  loop for main function

## DATA generation
        # generate data from group 1 and 2
        # for each group: discretise the continuous to binary
        # newdata <- combine the groups 1 and 2

## MODEL construction
     countError <- 0
        n <- nrow(newdata)

       for (k in 1:n)
       {# open loop for leave-one-out
             # construct model based on n-1 object using smoothing method
                 # classify omitted object
                countError <- countError + countE
       }   # close loop for LOO process

          Error <- countError / n     # error rate counted from LOO procedure 

     return(Error)           # The Average ERROR Rate from LOO procedure 

}       # close loop for Myfunc

library(stats)
  nlminb(start=0.000001, Myfunc, lower=0.000001, upper=0.999999, 
                 control=list(eval.max=100, iter.max=100))

END

有人可以帮助我......

您的关注和指导得到高度赞赏,真的需要......

Hashibah, 统计博士生

1 个答案:

答案 0 :(得分:3)

在您的问题中,提供具有单变量起始值的nlminb。如果您正在进行单变量优化,则可能值得查看optimize。如果您的功能是多变量,那么您需要稍微区别地调用nlminb

您需要定义目标函数,以便提供参数以优化作为第一个参数的向量。目标函数的其他输入应作为后续参数提供。

例如(从nlminb帮助页面修改):

X <- rnbinom(100, mu = 10, size = 10)
hdev <- function(par, x) {
 -sum(dnbinom(x, mu = par[1], size = par[2], log = TRUE))
}
nlminb(start = c(9, 12), hdev, x = X)