flimoptim {flimo}R Documentation

Main function to use flimo inference

Description

Computes several parameter inferences with R optimizer or Julia optimizer in a full Julia mode. In R mode (default) : L-BFGS-B optimization or other methods available for the base::optim function. In Julia mode : either IPNewton with or without Automatic Differentiation, Nelder-Mead or Brent optimization. Argument ndraw is mandatory. You need either to provide data, dsumstats AND simulatorQ OR obj.

Usage

flimoptim(
  ndraw,
  data = NULL,
  dsumstats = NULL,
  simulatorQ = NULL,
  obj = NULL,
  nsim = 10,
  ninfer = 1,
  lower = 0,
  upper = 1,
  Theta0 = (lower + upper)/2,
  randomTheta0 = FALSE,
  mode = c("R", "Julia"),
  AD = TRUE,
  method = "",
  obj_threshold = Inf,
  number_tries = 1,
  maxit = 1000,
  time_limit = NaN,
  factr = 1e+07,
  pgtol = 0,
  xtol = 0,
  ftol = 0,
  gtol = 1e-08,
  reltol = sqrt(.Machine$double.eps),
  abstol = .Machine$double.eps,
  show_trace = FALSE,
  store_trace = FALSE,
  store_quantiles = FALSE,
  par_names = NULL,
  load_julia = FALSE
)

Arguments

ndraw

Integer. Number of random variables to draw for one simulation of the model.

data

1D array containing the observations.

dsumstats

Summary statistics to measure distance between simulations and data. In R mode : R function of type dsumstats(simulations, data) where simulations : 2D array and data : 1D array. ncol(simulations) = length(data) mandatory. In Julia mode : a string containing the script of the Julia function dsumstats(simulations, data). The name "dsumstats" is mandatory.

simulatorQ

Simulator of the stochastic process with fixed quantiles (see README). or a string (in mode "Julia") containing the script of the Julia function simulatorQ(Theta, quantiles). In Julia mode, the name "simulatorQ" is mandatory. Theta is the parameter set for the simulations and quantiles are drawn in U(0,1).

obj

Objective function to minimize. Default : is directly computed from dsumstats and simulatorQ. Either an R function of type objective(Theta, quantiles) (in mode "R") or a string (in mode "Julia") containing the script of the Julia function julia_obj(Theta, quantiles). Warning : could be tricky if mode = "Julia" to call data. In Julia mode, the name "julia_obj" is mandatory.

nsim

Integer. Number of simulations to run for each step of the optimization algorithm. Computation time grows linearly with this number. Default to 10.

ninfer

Integer. Number of independent inferences to run. Default to 1.

lower

1D array. Lower bounds for parameters. Same length as upper. With Nelder-Mead in Julia mode: only used for starting point.

upper

1D array. Upper bounds for parameters. Same length as lower. With Nelder-Mead in Julia mode: only used for starting point.

Theta0

1D array. Initial values of the parameters. Default : mean(lower, upper).

randomTheta0

Boolean. If True, Theta0 is randomly drawn between lower and upper bounds.

mode

String. "R" (default) or "Julia". See README.

Boolean. Only in Julia mode, uses Automatic Differentiation with IPNewton method. Default to true.

method

String. In Julia mode, allows to choose the optimization method : "IPNewton", "Brent" or "NelderMead". Default : IPNewton. In R mode, allows to choose any of the optimization methods used by base::optim. Default is L-BFGS-B. Random methods do not work with flimo. Bounded methods are L-BFGS-B and Brent.

obj_threshold

Float. Threshold score. If final value of objective is bigger, relaunch the inference if number_tries is not reached. The purpose is to avoid local minima. Default to Inf (no threshold).

number_tries

Integer. Number of tries (inferences) for the objective value to reach a point lower than obj_threshold. Default to 1.

maxit

Integer. Max number of iterations during optimization. Default to 1000.

time_limit

Float. Time limit in second for each inference. Default to no limit. Not available for R mode and Brent method in Julia mode.

factr

Float. In R-mode : control parameter for L-BFGS-B method in stats::optim. Default to 1e7.

pgtol

Float. In R-mode : control parameter for L-BFGS-B method in stats::optim. Default to 0.

xtol

Float. In Julia mode with IPNewton method : xtol option in Optim.Options. Default to 0.

ftol

Float. In Julia mode with IPNewton method : ftol option in Optim.Options.

gtol

Float. In Julia mode with IPNewton method : gtol option in Optim.Options. Default to 1e-8.

reltol

Float. In Julia mode with Brent method : reltol of Optim.optimize. Default is sqrt(.Machine$double.eps), about 1e-8.

abstol

Float. In Julia mode with Brent method : abstol of Optim.optimize. Default is .Machine$double.eps, about 1e-16.

show_trace

Boolean. If true, shows standard trace. Default to false.

store_trace

Boolean. If true, stores standard trace as an array of strings. Default to false. Not available for R mode.

store_quantiles

Boolean. If true, stores every quantiles used for inference, to reproduce the results. Default to false.

par_names

vector of names for parameters. Default is "par1", ..., "parn".

load_julia

Boolean. If true, run julia_load. It can take few seconds. Default to False.

Value

Object of class flimo_result (list) (converted from Julia object in Julia mode) containing every information about convergence results.

Examples

data <- rep(100, 5)

simulatorQ <- function(Theta, quantiles){
qpois(quantiles, lambda = Theta)
}
dsumstats <- function(simulations, data){
mean_simu <- mean(rowMeans(simulations))
mean_data <- mean(data)
(mean_simu-mean_data)^2
}

flimoptim(5, data, dsumstats, simulatorQ,
lower = 50,
upper = 150)


[Package flimo version 0.1.5 Index]