@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" )
}
看看起始值有多重要?
NB 我意识到 Nelder-Mead 对于单变量分布并不理想,但为了简单起见,我在这里使用它,因为它说明了这一点。