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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。