12.6 Test and Comparison between Routines
# Newton type method
= 5
i = 2*i
DimX = InitRosen(2*i)
x0 = Sys.time()
StartTime 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
= 5
i = 2*i
DimX = InitRosen(2*i)
x0 = Sys.time()
start 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
= 5
i = 2*i
DimX = InitRosen(2*i)
x0 = Sys.time()
start 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.