
Best candidate per species, or an explicit refusal
growth_best_candidates.RdA species with no scorable reference series MUST NOT produce a
recommendation. Three of the six species here are in that position: amabilis
fir, subalpine fir and hybrid spruce have too few ground plots to bin, and
their SORTIE curves are marked available_unused in
the project's curve-selection table because that model is not well
parameterized for them
in the ICH. Ranking hundreds of indistinguishable all-NA rows would return
whichever combination happened to sort first, dressed up as a result.
Usage
growth_best_candidates(
scores,
growth_params,
windows,
scoring = NULL,
top_frac = 0.1,
level_frac_warn = 0.9
)Arguments
- scores
A tibble from
growth_score_fit()with anobjective_rmse.- growth_params
The parameters currently in use.
- windows
A tibble from
growth_fitting_windows().- scoring
A tibble from
read_growth_scoring(), orNULL.- top_frac
Numeric. Fraction of each species' ranking treated as indistinguishable from the winner, over which the level band is reported.
- level_frac_warn
Numeric. Warn when the selected candidate reached less than this fraction of its own asymptote, so its level is an extrapolation.
NAdisables the warning.
Details
Those species come back with fitted = FALSE, no parameters, and the values
currently in use carried through untouched. That is the honest answer, and it
names what would change it: more plots, or promoting a SORTIE curve to used.
Reading the level band
Ranking is on shape alone and the level is recovered afterwards, by dividing
the reference plateau by the fraction of its own asymptote the simulated
curve reached (see growth_inflation_factor()). That division is the whole
reason biomass_max_est is not simply read off the winner and trusted: its
leverage on any error in the simulated curve is 1 / achieved_frac. A
candidate that plateaued cleanly recovers its level almost exactly, while one
still climbing when the run ended is extrapolating, and two candidates a
fraction of a percent apart in shape error can then imply levels differing by
a factor of two or more.
So biomass_max_lo / biomass_max_hi report the range of biomass_max_est
across the candidates that cannot be told apart from the winner, and
level_extrapolated flags a winner that never approached its asymptote.
A wide band is not noise to be averaged away: it says the references do not
determine the level, and the fix is a longer run, a better-constrained
reference, or a wider sweep – not a different summary of the same surface.
Use growth_identifiability() to see which swept parameter is responsible.
See also
Other growth calibration helpers:
extract_landscape_cohort_structures(),
growth_add_objective(),
growth_auto_window(),
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_identifiability(),
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()