12.6 Test and Comparison between Routines

# Newton type method
i = 5
DimX = 2*i
x0 = InitRosen(2*i)
StartTime = Sys.time()
Optim0(x0, Rosenbrock)
## $par
##  [1] 1 1 1 1 1 1 1 1 1 1
## 
## $value
## [1] 2.965e-17
## 
## $FnCount
## [1] 7
## 
## $convergence
## [1] 5
## 
## $grad
##  [1]  1.952e-07 -9.757e-08 -7.479e-14  5.592e-15 -7.212e-14 -6.168e-15  9.669e-08
##  [8] -4.835e-08 -1.980e-14 -6.168e-15
## 
## $hessian
##             [,1]       [,2]       [,3]       [,4]       [,5]       [,6]       [,7]
##  [1,]  8.020e+02 -4.000e+02  1.957e-14  7.962e-14  2.643e-13  7.514e-14  1.466e-13
##  [2,] -4.000e+02  2.000e+02 -6.764e-14 -1.127e-13 -6.513e-14 -7.578e-14 -1.433e-13
##  [3,]  1.957e-14 -6.764e-14  8.020e+02 -4.000e+02  1.452e-13 -4.398e-14  2.758e-14
##  [4,]  7.962e-14 -1.127e-13 -4.000e+02  2.000e+02 -4.229e-14 -3.161e-14 -7.776e-14
##  [5,]  2.643e-13 -6.513e-14  1.452e-13 -4.229e-14  8.020e+02 -4.000e+02 -5.273e-14
##  [6,]  7.514e-14 -7.578e-14 -4.398e-14 -3.161e-14 -4.000e+02  2.000e+02 -3.954e-14
##  [7,]  1.466e-13 -1.433e-13  2.758e-14 -7.776e-14 -5.273e-14 -3.954e-14  8.020e+02
##  [8,]  7.962e-14 -1.328e-13 -1.248e-13 -6.858e-14 -1.248e-13 -3.161e-14 -4.000e+02
##  [9,] -1.619e-14 -1.410e-13 -1.353e-13 -2.005e-13 -1.353e-13 -1.623e-13 -8.850e-14
## [10,]  7.514e-14 -7.578e-14 -4.398e-14 -3.161e-14 -4.392e-14  2.668e-14  2.838e-15
##             [,8]       [,9]      [,10]
##  [1,]  7.962e-14 -1.619e-14  7.514e-14
##  [2,] -1.328e-13 -1.410e-13 -7.578e-14
##  [3,] -1.248e-13 -1.353e-13 -4.398e-14
##  [4,] -6.858e-14 -2.005e-13 -3.161e-14
##  [5,] -1.248e-13 -1.353e-13 -4.392e-14
##  [6,] -3.161e-14 -1.623e-13  2.668e-14
##  [7,] -4.000e+02 -8.850e-14  2.838e-15
##  [8,]  2.000e+02 -2.005e-13 -3.161e-14
##  [9,] -2.005e-13  8.020e+02 -4.000e+02
## [10,] -3.161e-14 -4.000e+02  2.000e+02
## 
## $RelGrad
## [1] 1.952e-07
## 
## $RelStep
## [1] 4.417e-05
## 
## $DelF
## [1] 7.296e-10
## 
## $f
## [1] 1.909e+03 9.077e+00 3.112e+03 3.198e-03 5.117e-04 7.296e-10 2.965e-17
## 
## $x
##       [,1]    [,2] [,3]   [,4]  [,5]     [,6]    [,7]    [,8] [,9]  [,10]
## [1,] -1.00  2.0000    1 -1.000 2.000 1.000000 -1.0000  2.0000    1 -1.000
## [2,] -1.01  1.0201    1  1.000 1.998 3.993341 -1.0101  1.0201    1  1.000
## [3,]  0.96 -2.9595    1  1.000 1.001 0.006405  0.9600 -2.9595    1  1.000
## [4,]  0.96  0.9216    1  1.001 1.001 1.001532  0.9600  0.9216    1  1.001
## [5,]  1.00  0.9986    1  1.000 1.000 0.999996  0.9999  0.9983    1  1.000
## [6,]  1.00  1.0000    1  1.000 1.000 1.000000  1.0000  1.0000    1  1.000
## [7,]  1.00  1.0000    1  1.000 1.000 1.000000  1.0000  1.0000    1  1.000
difftime(Sys.time(), StartTime)
## Time difference of 0.0297 secs
# Variable metric - BFGS method
i = 5
DimX = 2*i
x0 = InitRosen(2*i)
start = Sys.time()
VMmin(x0, Rosenbrock)
## $par
##  [1] 1 1 1 1 1 1 1 1 1 1
## 
## $value
## [1] 3.236e-21
## 
## $FnCount
## [1] 303
## 
## $GrCount
## [1] 119
## 
## $convergence
## [1] 0
## 
## $grad
##  [1]  1.609e-08 -8.473e-09  1.909e-08 -9.273e-09 -1.030e-08  5.537e-09 -1.086e-08
##  [8]  5.046e-09  2.723e-08 -1.339e-08
difftime(Sys.time(), start)
## Time difference of 0.03225 secs
# R built-in optim function
i = 5
DimX = 2*i
x0 = InitRosen(2*i)
start = Sys.time()
optim(x0, Rosenbrock, method="L-BFGS-B")
## $par
##  [1] 0.9996 0.9992 0.9999 0.9999 0.9998 0.9996 0.9996 0.9992 0.9999 0.9999
## 
## $value
## [1] 3.279e-07
## 
## $counts
## function gradient 
##      106      106 
## 
## $convergence
## [1] 0
## 
## $message
## [1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"
difftime(Sys.time(), start)
## Time difference of 0.00915 secs

See also

  • Rvmmin
  • optimx
  • Rcgmin

by the same author.

Caution: Levenberg-Marquadt and Cluster Gauss-Newton Method(CGNM) are not for maximum likelihood estimation (MLE) but only for least square method.