R 编程/优化
外观
< R 编程
- optimize()用于解决一维优化问题。
- optim(), nlm(), ucminf()(ucminf) 可用于多维优化问题。
- nlminb()用于约束优化。
- quadprog、minqa、rgenoud、trust包
- 在R中进行了一些工作来改进优化。参见更新和改进optim(),Use R 2009幻灯片[1],R-forge优化器页面[2]以及包含optimx在内的相关包。
一维问题
> func <- function(x){
+ return ( (x-2)^2 )
+ }
> (func(-2))
[1] 16
>
> # plot your function using the 'curve function'
> curve(func,-4,8)
>
> # Here is another way to plot the function
> # using a grid
> grid <- seq(-10,10,by=.1)
> func(grid)
> plot(grid,func(grid))
>
> # you can find the minimum using the optimize function
> optimize(f=func,interval=c(-10,10))
$minimum
[1] 2
$objective
[1] 0
- nlm()提供了一个牛顿算法。
- maxLik 包用于似然函数的最大化。此包包含牛顿-拉夫森方法。
- newtonraphson()在spuRs包中。
- BFGS方法
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("BFGS"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("L-BFGS-B"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
optim()
使用method="cg"
。
- "trust" 包用于置信域方法
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }
>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("Nelder-Mead"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
- boot包包含另一种单纯形方法
- 模拟退火是一种用于最大化非光滑函数的算法。它在以下方面得到了预先实现optim().
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("SANN"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
本节是一个存根。 您可以通过扩展它来帮助Wikibooks。 |
- ↑ 更新和改进optim(),Use R 2009幻灯片 http://www.agrocampus-ouest.fr/math/useR-2009/slides/Nash+Varadhan.pdf
- ↑ R-forge优化器 http://optimizer.r-forge.r-project.org/
- ↑ Jasjeet Sekhon主页: http://sekhon.berkeley.edu/rgenoud/
- ↑ CRAN上的gaoptim: https://cran.r-project.org.cn/web/packages/gaoptim/index.html
- ↑ CRAN上的ga: https://cran.r-project.org.cn/web/packages/GA/index.html/
- Venables和Ripley,第16章。
- Cameron和Trivedi,《微观计量经济学》,第10章。
- Braun和Murdoch,《使用R进行统计编程的第一门课程》(一本关于使用R进行优化的非常好的参考书),第7章。