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。 |
- rgenoud包用於遺傳演算法[3]
- gaoptim包用於遺傳演算法[4]
- ga是一個通用的最佳化包,使用遺傳演算法。它提供了一套靈活的工具,用於在連續和離散情況下實現遺傳演算法搜尋,無論是否有約束。[5]
- ↑ 更新和改進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: http://cran.r-project.org/web/packages/gaoptim/index.html
- ↑ CRAN上的ga: http://cran.r-project.org/web/packages/GA/index.html/
- Venables和Ripley,第16章。
- Cameron和Trivedi,《微觀計量經濟學》,第10章。
- Braun和Murdoch,《使用R進行統計程式設計的第一門課程》(一本關於使用R進行最佳化的非常好的參考書),第7章。
