optimx speed is not satisfied. So I_optim is present.

  • I_optim: Interface of unified optimization functions.

  • I_optimx: deprecated, which is about 10 times slower than I_optim.

I_optim(prior, FUN, y, t, method = "BFGS", fn = f_goal, ..., use.julia = FALSE)

I_optimx(prior, FUN, y, t, method, verbose = FALSE, ...)

Arguments

prior

A vector of initial values for the parameters for which optimal values are to be found. prior is suggested giving a column name.

FUN

Fine curve fitting function for goal function f_goal().

y

Numeric vector, vegetation index time-series

t

Numeric vector, Date variable

method

method can be some of 'BFGS','CG','Nelder-Mead', 'L-BFGS-B', 'nlm', 'nlminb', 'ucminf'.
For I_optimx, other methods are also supported, e.g. 'spg','Rcgmin','Rvmmin', 'newuoa','bobyqa','nmkb','hjkb'.

...

other parameters passed to I_optim() or I_optimx().

use.julia

whether use julia nlminb optimization?

verbose

If TRUE, all optimization methods in optimx::optimx() are used, and print optimization information of all methods.

Value

  • convcode: An integer code. 0 indicates successful convergence. Various methods may or may not return sufficient information to allow all the codes to be specified. An incomplete list of codes includes

    • 1: indicates that the iteration limit maxit had been reached.

    • 20: indicates that the initial set of parameters is inadmissible, that is, that the function cannot be computed or returns an infinite, NULL, or NA value.

    • 21: indicates that an intermediate set of parameters is inadmissible.

    • 10: indicates degeneracy of the Nelder--Mead simplex.

    • 51: indicates a warning from the "L-BFGS-B" method; see component message for further details.

    • 52: indicates an error from the "L-BFGS-B" method; see component message for further details.

    • 9999: error

  • value: The value of fn corresponding to par

  • par: The best parameter found

  • nitns: the number of iterations

  • fevals: The number of calls to objective.

See also

Examples

# simulate vegetation time-series FUN = doubleLog_Beck par = c( mn = 0.1 , mx = 0.7 , sos = 50 , rsp = 0.1 , eos = 250, rau = 0.1) par0 = c( mn = 0.15, mx = 0.65, sos = 100, rsp = 0.12, eos = 200, rau = 0.12) t <- seq(1, 365, 8) y <- FUN(par, t)
#> Error in doubleLogMain(`_phenofit_cdoubleLog_Beck`, par, t, pred): object '_phenofit_cdoubleLog_Beck' not found
methods = c("BFGS", "ucminf", "nlm", "nlminb") opt1 <- I_optim (par0, FUN, y, t, methods)
#> Error in I_optim(par0, FUN, y, t, methods): object 'y' not found
opt2 <- I_optimx(par0, FUN, y, t, methods)
#> Error in I_optimx(par0, FUN, y, t, methods): object 'y' not found
# \dontrun{ # microbenchmark::microbenchmark( # opt1 = I_optim (par0, FUN, y, t, methods), # opt2 = I_optimx(par0, FUN, y, t, methods), # times = 2 # ) # }