nlm
位于 stats
包(package)。 说明
该函数使用Newton-type 算法执行函数f
的最小化。详细信息请参阅引用。
用法
nlm(f, p, ..., hessian = FALSE, typsize = rep(1, length(p)),
fscale = 1, print.level = 0, ndigit = 12, gradtol = 1e-6,
stepmax = max(1000 * sqrt(sum((p/typsize)^2)), 1000),
steptol = 1e-6, iterlim = 100, check.analyticals = TRUE)
参数
f |
要最小化的函数,返回单个数值。这应该是一个函数,第一个参数是 如果函数值具有名为 |
p |
最小化的起始参数值。 |
... |
要传递给 |
hessian |
如果 |
typsize |
每个参数的最小大小的估计。 |
fscale |
|
print.level |
该参数决定了最小化过程中完成的打印级别。默认值 |
ndigit |
函数 |
gradtol |
一个正标量,给出了缩放梯度被认为足够接近零以终止算法的容差。缩放梯度是 |
stepmax |
给出最大允许缩放步长的正标量。 |
steptol |
提供最小允许相对步长的正标量。 |
iterlim |
一个正整数,指定程序终止之前要执行的最大迭代次数。 |
check.analyticals |
一个逻辑标量,指定是否应根据初始参数值处的数值导数检查解析梯度和 Hessians(如果提供)。这可以帮助检测错误制定的梯度或 Hessians。 |
细节
请注意,...
之后的参数必须完全匹配。
如果提供了渐变或粗麻布,但计算结果为错误的模式或长度,并且check.analyticals = TRUE
(默认值)带有警告,则它将被忽略。除非梯度存在并且通过健全性检查,否则甚至不会检查粗麻布。
“perturbed” cholesky 的 C 代码,choldc()
总共有一个错误R3.4.1之前的版本。
从原始来源中可用的三种方法中,我们始终使用方法“1”,即线搜索。
提供的函数应始终返回有限值(包括非 NA
和非 NaN
)值:对于函数值本身,非有限值将被最大正值替换,并带有警告。
值
包含以下组件的列表:
minimum |
|
estimate |
获得 |
gradient |
|
hessian |
估计最小值为 |
code |
一个整数,指示优化过程终止的原因。
|
iterations |
执行的迭代次数。 |
例子
f <- function(x) sum((x-1:length(x))^2)
nlm(f, c(10,10))
nlm(f, c(10,10), print.level = 2)
utils::str(nlm(f, c(5), hessian = TRUE))
f <- function(x, a) sum((x-a)^2)
nlm(f, c(10,10), a = c(3,5))
f <- function(x, a)
{
res <- sum((x-a)^2)
attr(res, "gradient") <- 2*(x-a)
res
}
nlm(f, c(10,10), a = c(3,5))
## more examples, including the use of derivatives.
## Not run: demo(nlm)
来源
当前代码由 Saikat DebRoy 和 R Core 团队编写,使用 Richard H. Jones 的 Fortran 代码的 C 翻译。
参考
Dennis, J. E. and Schnabel, R. B. (1983). Numerical Methods for Unconstrained Optimization and Nonlinear Equations. Prentice-Hall, Englewood Cliffs, NJ.
Schnabel, R. B., Koontz, J. E. and Weiss, B. E. (1985). A modular system of algorithms for unconstrained minimization. ACM Transactions on Mathematical Software, 11, 419-440. doi:10.1145/6187.6192.
也可以看看
constrOptim
用于约束优化,optimize
用于一维最小化,uniroot
用于求根。 deriv
计算解析导数。
对于非线性回归,nls
可能更好。
相关用法
- R nlminb 使用 PORT 例程进行优化
- R nls.control 控制 nls 中的迭代
- R nls 非线性最小二乘法
- R naprint 调整缺失值
- R na.fail 处理对象中的缺失值
- R na.contiguous 查找非 NA 的最长连续延伸
- R nobs 从拟合中提取观测值数量
- R nextn 查找高度复合的数字
- R numericDeriv 用数值方法评估导数
- R na.action 不适用行动
- R naresid 调整缺失值
- R stlmethods STL 对象的方法
- R medpolish 矩阵的中值波兰(稳健双向分解)
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
- R formula 模型公式
- R aggregate 计算数据子集的汇总统计
- R deriv 简单表达式的符号和算法导数
- R kruskal.test Kruskal-Wallis 秩和检验
- R quade.test 四方测试
- R decompose 移动平均线的经典季节性分解
- R plot.stepfun 绘制阶跃函数
- R alias 查找模型中的别名(依赖项)
- R qqnorm 分位数-分位数图
- R eff.aovlist 多层方差分析的计算效率
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Non-Linear Minimization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。