R Programming/Optimization

From Wikibooks, open books for an open world
Jump to: navigation, search

Contents

[edit] Numerical Methods

[edit] One dimensional problem

The one dimensional problem :

> 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

[edit] Newton-Raphson

  • nlm() provides a Newton algorithm.
  • maxLik package for maximization of a likelihood function. This package includes the Newton Raphson method.
  • newtonraphson() in the spuRs package.

[edit] 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)

[edit] Conjugate gradient method

  • optim() with method="cg".

[edit] Trust Region Method

  • "trust" package for trust region method


[edit] The Nelder-Mead simplex method

> 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)


  • The boot package includes another simplex method

[edit] Simulation methods

[edit] Simulated Annealing

  • The Simulated Annealing is an algorithm which is useful to maximise non-smooth functions. It is pre implemented in 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)

[edit] EM Algorithm

[edit] Genetic Algorithm

  • rgenoud package for genetic algorithm[3]

[edit] References

  • Venables and Ripley, Chapter 16.
  • Cameron and Trivedi, Microeconometrics, chapter 10
  • Braun and Murdoch (Chapter 7)[4] is a very good reference on optimization using R.
  1. Updating and improving optim(), Use R 2009 slides http://www.agrocampus-ouest.fr/math/useR-2009/slides/Nash+Varadhan.pdf
  2. R-forge optimizer http://optimizer.r-forge.r-project.org/
  3. Jasjeet Sekhon homepage : http://sekhon.berkeley.edu/rgenoud/
  4. A first course in statistical programming with R http://portal.acm.org/citation.cfm?id=1385416
Previous: Mathematics Index Next: Probability Distributions
Personal tools
Namespaces
Variants
Actions
Navigation
Community
Toolbox
Sister projects
Print/export