Interface of optimization functions for double logistics and other parametric curve fitting functions.

optim_pheno(
  prior,
  sFUN,
  y,
  t,
  tout,
  method,
  w,
  nptperyear,
  ylu,
  iters = 2,
  wFUN = wTSM,
  lower = -Inf,
  upper = Inf,
  constrain = TRUE,
  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.

sFUN

The name of fine curve fitting functions, can be one of 'FitAG', 'FitDL.Beck', 'FitDL.Elmore', 'FitDL.Gu' and 'FitDL.Klos', 'FitDL.Zhang'.

y

Numeric vector, vegetation index time-series

t

Numeric vector, Date variable

tout

Corresponding doy of prediction.

method

The name of optimization method to solve fine fitting, one of 'BFGS','CG','Nelder-Mead', 'L-BFGS-B', 'nlm', 'nlminb', 'ucminf' and 'spg','Rcgmin','Rvmmin', 'newuoa','bobyqa','nmkb','hjkb'.

w

(optional) Numeric vector, weights of y. If not specified, weights of all NA values will be wmin, the others will be 1.0.

nptperyear

Integer, number of images per year, passed to wFUN. Only wTSM() needs nptperyear. If not specified, nptperyear will be calculated based on t.

ylu

ymin, ymax, which is used to force ypred in the range of ylu.

iters

How many times curve fitting is implemented.

wFUN

weights updating function, can be one of 'wTSM', 'wChen' and 'wBisquare'.

lower

vectors of lower and upper bounds, replicated to be as long as start. If unspecified, all parameters are assumed to be unconstrained.

upper

vectors of lower and upper bounds, replicated to be as long as start. If unspecified, all parameters are assumed to be unconstrained.

constrain

boolean, whether to use parameter constrain

verbose

Whether to display intermediate variables?

...

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

Value

fFIT object, see fFIT() for details.

See also

Examples

# library(magrittr) # library(purrr) # 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) tout <- seq(1, 365, 1) 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, doubleLog_Beck, y, t, methods) # "BFGS", "ucminf", "nlm",
#> Error in I_optim(par0, doubleLog_Beck, y, t, methods): object 'y' not found
# opt2 <- I_optimx(prior, fFUN, y, t, tout, ) sFUN = "doubleLog.Beck" # doubleLog.Beck r <- optim_pheno(par0, sFUN, y, t, tout, method = methods[4], nptperyear = 46, iters = 2, wFUN = wTSM, verbose = FALSE, use.julia = FALSE)
#> Error in optim_pheno(par0, sFUN, y, t, tout, method = methods[4], nptperyear = 46, iters = 2, wFUN = wTSM, verbose = FALSE, use.julia = FALSE): object 'y' not found