我现在使用非参数平滑来执行位置模型来估计参数.....平滑的参数之一是我必须优化的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, 统计博士生
答案 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)