This function creates a list of parameters, sets up TMB object and attempts to do fitting / estimation

fit(
  data_list,
  silent = FALSE,
  inits = NULL,
  control = list(eval.max = 2000, iter.max = 1000, rel.tol = 1e-10),
  limits = NULL,
  fit_model = TRUE
)

Arguments

data_list

A list of data, as output from create_data

silent

Boolean passed to TMB::MakeADFun, whether to be verbose or not (defaults to FALSE)

inits

Optional named list of parameters for starting values, defaults to NULL

control

Optional control list for stats::nlminb. For arguments see ?nlminb. Defaults to eval.max=2000, iter.max=1000, rel.tol=1e-10. For final model runs, the rel.tol should be even smaller

limits

Whether to include limits for stats::nlminb. Can be a list of (lower, upper), or TRUE to use suggested hardcoded limits. Defaults to NULL, where no limits used.

fit_model

Whether to fit the model. If not, returns a list including the data, parameters, and initial values. Defaults to TRUE

Examples

data(fishdist)

# example of fitting fixed effects, no trends, no random effects
set.seed(1)
datalist <- create_data(fishdist[which(fishdist$year > 1970), ],
  asymmetric_model = FALSE,
  est_mu_re = FALSE, est_sigma_re = FALSE
)
fit <- fit(datalist)
#> Order of parameters:
#>  [1] "theta"             "b_mu"              "log_sigma_mu_devs"
#>  [4] "mu_devs"           "b_sig1"            "b_sig2"           
#>  [7] "log_sigma1_sd"     "sigma1_devs"       "log_sigma2_sd"    
#> [10] "sigma2_devs"       "log_obs_sigma"     "log_tdf_1"        
#> [13] "log_tdf_2"         "log_beta_1"        "log_beta_2"       
#> Not matching template order:
#>  [1] "log_sigma1_sd"     "sigma1_devs"       "log_sigma2_sd"    
#>  [4] "sigma2_devs"       "theta"             "mu_devs"          
#>  [7] "log_sigma_mu_devs" "log_tdf_1"         "log_tdf_2"        
#> [10] "log_beta_1"        "log_beta_2"        "log_obs_sigma"    
#> [13] "b_mu"              "b_sig1"            "b_sig2"           
#> Your parameter list has been re-ordered.
#> (Disable this warning with checkParameterOrder=FALSE)
#> Constructing atomic D_lgamma
#> Constructing atomic qnorm1
#> outer mgc:  25034.62 
#> outer mgc:  2574.348 
#> outer mgc:  1978.553 
#> outer mgc:  200.0837 
#> outer mgc:  201.8165 
#> outer mgc:  165.3092 
#> outer mgc:  135.522 
#> outer mgc:  356.5337 
#> outer mgc:  120.1827 
#> outer mgc:  138.867 
#> outer mgc:  123.0076 
#> outer mgc:  72.46919 
#> outer mgc:  34.31654 
#> outer mgc:  42.47041 
#> outer mgc:  77.59186 
#> outer mgc:  15.58226 
#> outer mgc:  55.94099 
#> outer mgc:  18.16199 
#> outer mgc:  5.722491 
#> outer mgc:  30.59853 
#> outer mgc:  12.27546 
#> outer mgc:  23.85256 
#> outer mgc:  4.909127 
#> outer mgc:  16.05365 
#> outer mgc:  2.657193 
#> outer mgc:  5.044657 
#> outer mgc:  1.330298 
#> outer mgc:  5.259609 
#> outer mgc:  2.40497 
#> outer mgc:  1.914672 
#> outer mgc:  0.3580338 
#> outer mgc:  1.486636 
#> outer mgc:  0.4165588 
#> outer mgc:  0.243783 
#> outer mgc:  0.3935108 
#> outer mgc:  0.2062873 
#> outer mgc:  0.3560087 
#> outer mgc:  0.2509 
#> outer mgc:  0.2320703 
#> outer mgc:  0.2115966 
#> outer mgc:  0.1605053 
#> outer mgc:  0.5950958 
#> outer mgc:  0.1653233 
#> outer mgc:  0.2129569 
#> outer mgc:  0.4200267 
#> outer mgc:  0.153131 
#> outer mgc:  0.4769271 
#> outer mgc:  0.4690585 
#> outer mgc:  0.2463581 
#> outer mgc:  2.354513 
#> outer mgc:  0.5144498 
#> outer mgc:  0.3407818 
#> outer mgc:  0.7156203 
#> outer mgc:  0.2290494 
#> outer mgc:  0.3342214 
#> outer mgc:  0.1680087 
#> outer mgc:  0.05198574 
#> outer mgc:  0.07477491 
#> outer mgc:  0.01717437 
#> outer mgc:  0.02687706 
#> outer mgc:  0.007900119 
#> outer mgc:  0.008503209 
#> outer mgc:  0.002959148 
#> outer mgc:  0.002543861 
#> outer mgc:  0.0009483259 
#> outer mgc:  0.0007261544 
#> outer mgc:  0.000288091 
#> outer mgc:  0.0002083385 
#> outer mgc:  8.78474e-05 
#> outer mgc:  6.004225e-05 
#> outer mgc:  2.612294e-05 
#> outer mgc:  1.697649e-05 
#> outer mgc:  7.594411e-06 
#> outer mgc:  4.810276e-06 
#> outer mgc:  4.810276e-06 
#> outer mgc:  0.05355298 
#> outer mgc:  0.05355582 
#> outer mgc:  0.05127458 
#> outer mgc:  0.05127639 
#> outer mgc:  0.05241413 
#> outer mgc:  0.05241576 
#> outer mgc:  0.05583219 
#> outer mgc:  0.05583443 
#> outer mgc:  0.05241437 
#> outer mgc:  0.05241552 
#> outer mgc:  0.05697153 
#> outer mgc:  0.056974 
#> outer mgc:  0.05583182 
#> outer mgc:  0.0558348 
#> outer mgc:  0.06266844 
#> outer mgc:  0.06267164 
#> outer mgc:  0.05469277 
#> outer mgc:  0.05469494 
#> outer mgc:  0.05697135 
#> outer mgc:  0.05697418 
#> outer mgc:  4.814768e-06 
#> outer mgc:  4.80579e-06 
#> outer mgc:  0.9690304 
#> outer mgc:  0.9709709 
#> outer mgc:  0.01573754 
#> outer mgc:  0.01574038 
#> outer mgc:  0.04861318 
#> outer mgc:  0.0486681 
#> outer mgc:  6321.927 
#
# # example of model with random effects in means only, and symmetric distribution
# set.seed(1)
# datalist <- create_data(fishdist[which(fishdist$year > 1970),], asymmetric_model = FALSE,
#                      est_sigma_re = FALSE)
# fit <- fit(datalist)
# # example of model with random effects in variances
# set.seed(1)
# datalist <- create_data(fishdist[which(fishdist$year > 1970),], asymmetric_model = TRUE,
#                          est_mu_re = TRUE)
# fit <- fit(datalist)
#
# # example of model with poisson response
# set.seed(1)
# datalist <- create_data(fishdist[which(fishdist$year > 1970),], asymmetric_model = FALSE,
#                         est_sigma_trend=FALSE, est_mu_trend=FALSE, est_mu_re = TRUE,
#                         family="poisson")
# fit <- fit(datalist)