在R,optim命令使用Nelder-Mead方法来优化函数.一篇文章指出
Run Code Online (Sandbox Code Playgroud)The parameters to be estimated are optimized over initial values. As a result, different initial values will lead to different estimates.
它是什么意思the parameters to be estimated are optimized over initial values?
Ari*_*man 10
@ GavinSimpson要求引用您的消息来源是有充分根据的.
也就是说,这是一个基本的优化概念.通常,您必须为参数选择起始值(或者例程必须为您猜测它们).因为优化通常会找到局部最小值或最大值,如果您开始接近不是全局最小值的局部最小值,您可能会找到本地最小值,而不是全局最小值.
这是一个例子.首先,创建并绘制一个6阶多项式(具有多个局部最小值).然后从三个不同点开始优化.
f <- function(x) {
1/30 * (x+3.5)*(x+2)*(x+1)*(x-1)*(x-3)*(x-4) + 2
}
vec <- seq(-4,4, .01)
plot( f(vec) ~ vec, type="l" )
for( startX in c(-3.5,-.5,3) ) {
opt <- optim( list(x=startX), fn=f )
points( x=opt$par, y=opt$value, pch="x", col="red" )
}
Run Code Online (Sandbox Code Playgroud)
看看起始值如何重要?

NB我意识到Nelder-Mead并不适合单变量分布,但我在这里使用它是为了简单,因为它说明了这一点.