
Is a swept parameter actually determined by the references?
growth_identifiability.RdTaking an argmin over a factorial presumes the objective surface has a well-defined minimum. Often it does not, and the reported best combination is then whichever cell happened to sort first rather than a fitted value. Nothing in a ranked table distinguishes the two cases, so this reports the distinction directly: for each swept parameter, the range of values spanned by the best-scoring candidates and the error spread across them.
Usage
growth_identifiability(
scores,
params = c("growth_shp", "mort_shp", "anpp_prop"),
top_frac = 0.1,
identified_below = 0.5
)Arguments
- scores
A tibble from
growth_score_fit()with anobjective_rmse, as returned bygrowth_add_objective().- params
Character vector of swept parameter columns to assess.
- top_frac
Numeric. Fraction of each species' ranking treated as the set of candidates that cannot be told apart.
- identified_below
Numeric. A parameter is reported as identified when its top candidates span no more than this fraction of the swept grid.
Value
One row per species and parameter, with the argmin value, the range spanned by the top candidates, the fraction of the grid that range covers, whether the argmin sits on a grid boundary, and the relative spread in objective across the top candidates.
Details
A parameter whose top candidates span most of the swept grid while their errors differ by a few percent is not being estimated. Two patterns recur and both are worth naming in a calibration's own output:
Mortality shape is routinely unidentified. Once a curve has reached its level, the shape of the approach barely moves the residual, so the objective is nearly flat along that axis. This appears to be inherent to fitting a plateau rather than a property of any one data set.
An argmin on the edge of the swept grid means the optimum may lie outside it, and
boundaryflags this. It also makes any weighted average of the candidates biased inward by construction, which is the main reason to check identifiability before reaching for model averaging as the remedy.
Species with no scorable candidate are absent from the result; see
growth_best_candidates(), which reports them as an explicit refusal.
See also
Other growth calibration helpers:
extract_landscape_cohort_structures(),
growth_add_objective(),
growth_auto_window(),
growth_best_candidates(),
growth_bin_observations(),
growth_calibration_design(),
growth_calibration_partition(),
growth_calibration_work_root(),
growth_climatic_distance(),
growth_climatic_weight(),
growth_expand_over_pseudo_species(),
growth_factorial_ratio_grid(),
growth_fitting_windows(),
growth_inflation_factor(),
growth_mortality_onset_frac(),
growth_plot_palette(),
growth_pseudo_species_name(),
growth_reference_curves(),
growth_reference_inflection(),
growth_score_fit(),
growth_scoring_for(),
growth_smooth_observations(),
growth_structure_cell_curves(),
growth_structure_cohort_table(),
growth_structure_design(),
growth_structure_summary(),
growth_window_for(),
plot_growth_calibration(),
plot_growth_candidate(),
plot_growth_factorial_sensitivity(),
plot_growth_structures(),
read_growth_scoring(),
read_landscape_cohort_structures(),
scale_linetype_growth_reference(),
write_growth_review_bundle()