Skip to contents

Alternate cfp_pfres() / cfp_fgres() models for sensitivity analysis and more.

Usage

alternate(
  x,
  f,
  run_map,
  return_raw = TRUE,
  error_funs = NULL,
  error_args = NULL
)

alternate_model(run_map, x, f)

Arguments

x

A cfp_pfres or cfp_fgres model result.

f

A function taking in a soilphys object and recalculates the relevant columns. See complete_soilphys().

run_map

A data.frame created by run_map() with the necessary information how the data is to be changed with each distinct run_id.

return_raw

Should the models be returned as is, or after applying any error_funs. Default is TRUE - exporting the models.

error_funs

A list of functions to be applied after flux calculation if return_raw == FALSE. This can be used to output not the models but quality parameters instead. Output must contain the column RMSE.

error_args

A list of additional function arguments to be passed to any of the error_funs. Must match the length of error_funs

Value

A list of type cfp_altres(), each entry an updated model.

Details

alternate_model() is used internally to change and rerun one model, but can also be used to update a model with a given unique run_map, e.g. by filtering the best run_id from the original run_map.

Examples

PROFLUX <- ConFluxPro::base_dat |>
  filter(site == "site_a") |> # use only 'site_a' for example
  pro_flux()

# Create a cfp_run_map where TPS is changed between 90 % and 110 %
# of the original value for 2 runs.
my_run_map <-
cfp_run_map(
  PROFLUX,
  list("TPS" = c(0.9, 1.1)),
  "factor",
  n_runs = 2)

# run the new models by providing a function `f`
# that updates the soilphys data.frame.
alternate(
  x = PROFLUX,
  f = \(x) complete_soilphys(x, "a+AFPS^b", quiet = TRUE),
  run_map = my_run_map)
#> 
#> A cfp_altres model result list. 
#> number of runs:  2 
#> original model: 
#> 
#> A cfp_pfres pro_flux model result. 
#> mean RMSE achieved:  0.031767 
#> number of failed fits:  0 
#> 
#> A cfp_pfmod pro_flux model. 
#> zero_flux: TRUE  
#> zero_limits:  -Inf Inf  
#> DSD0_optim:  FALSE  
#> evenness_factor:  0  
#> known_flux_factor:  0  
#> 
#> A cfp_dat object to be used as input in ConFluxPro models. 
#> id_cols: site Date gas 
#> number of profiles:  12 
#> number of groups:  1 
#>