You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未指定method参数时,R语言optim函数默认使用哪种优化算法?

R中optim函数未指定method参数时的默认算法

当调用R语言的optim()函数但不指定method参数时,默认算法会根据优化参数的维度自动选择:

  • 若优化参数是一维向量(par长度为1),默认使用Brent方法,这是一种结合黄金分割搜索与抛物线插值的单变量优化算法,无需梯度信息。
  • 若优化参数是多维向量(par长度≥2),默认使用Nelder-Mead方法,这是一种无导数的单纯形优化算法,适合无法计算目标函数梯度的场景,鲁棒性较强。

你提供的代码示例中,par = c(0, 1)是二维参数向量,因此这段代码里的optim()调用默认使用的是Nelder-Mead算法。

代码示例

set.seed(93420)                         # 创建随机数据
x <- rnorm(500)
y <- rnorm(500) + 0.7 * x
data <- data.frame(x, y)
head(data)                              # 打印数据前几行
#             x           y
# 1 -0.21492991 -0.06814474
# 2 -0.02217756 -0.84956484
# 3  0.55175788  0.11247758
# 4 -0.33581492 -0.86346317
# 5 -0.02489514  0.44307381
# 6 -1.44784931 -2.49701457

my_function <- function(data, par) {    # 自定义残差平方和函数
  with(data, sum((par[1] + par[2] * x - y)^2))
}
optim_output <- optim(par = c(0, 1),    # 调用optim函数
                      fn = my_function,
                      data = data)

这段代码通过生成模拟线性回归数据,调用optim()最小化自定义残差平方和函数,实现了线性回归的参数估计。

内容的提问来源于stack exchange,提问作者oliver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:40:36