Calculates Mohn's rho (the average proportional retrospective bias) from a long-format data frame containing terminal and peeled estimates across retrospective runs.
Arguments
- data
A data frame with columns (e.g., data frames in
popoutput fromfit_retro()):year: integer or numeric assessment year of the estimate.
fold: integer or numeric label for the retrospective peel (typically the terminal year of the dataset used for that run).
est: numeric estimate (e.g., SSB, F, recruitment) on which Mohn's rho is calculated.
is_proj: logical;
TRUEfor projection rows,FALSEotherwise.
Value
A single numeric proportional difference. Returns NaN (a missing
numeric value) if there are no non-missing comparisons.
Details
Projection rows are excluded. The largest retained fold is the reference
assessment. Each earlier peel contributes its estimate at year == fold,
compared with the reference estimate for that same year:
$$\rho=\frac{1}{K}\sum_{k=1}^K
\frac{\widehat X^{(k)}_{t_k}-\widehat X^{(ref)}_{t_k}}
{\widehat X^{(ref)}_{t_k}}.$$
Positive values mean the peeled fits tend to estimate higher values than
the reference fit. Supply a single quantity and, for age-specific output,
one age at a time. fold must already identify terminal historical years;
no year shifting or relabeling is performed. Each matched peel has equal weight.
If failed fits were dropped, the reference is the latest retained fit.
Missing differences are omitted; zero reference estimates can yield infinite
or undefined differences.
References
Mohn, R. (1999). The retrospective problem in sequential population analysis: An investigation using cod fishery and simulated data. ICES Journal of Marine Science, 56(4), 473–488.
Examples
df <- data.frame(
year = rep(2010:2015, each = 3),
fold = rep(c(2013, 2014, 2015), times = 6),
est = c(
100, 105, 110, 90, 95, 100, 85, 92, 98,
80, 90, 95, 78, 88, 93, 76, 86, 91
),
is_proj = FALSE
)
compute_mohns_rho(df)
#> [1] -0.1058291