
Chen-Watanabe Natural Mortality (\(L_0\) Parameterization)
Source:R/M_chen_watanabe_L0.R
M_chen_watanabe_L0.RdComputes age-specific natural mortality using the Chen & Watanabe (1989) model with an \(L_0\) parameterization that eliminates dependence on the theoretical parameter \(t_0\).
Arguments
- age
Numeric vector of ages at which to compute mortality.
- Linf
Asymptotic length.
- L0
Length at birth.
- k
VB-equivalent growth coefficient (used as \(M_\infty\) in the CW formula). For VB fits, this is the native \(k\). For Gompertz or Logistic fits, use
compute_k_vb_equivalentor.derive_k_vb_derivative.- k_native
Growth coefficient native to the fitted model (used for \(L(t)\) prediction). Defaults to
k, which is correct for VB fits. For non-VB fits, pass the model-specific growth coefficient here.- growth_model
Character. Growth model for \(L(t)\) prediction:
"vb"(default),"gompertz", or"logistic".- tmax
Maximum age. If
NULL, estimated from growth parameters as age when \(L(t) = \)Linf_factor\(\times L_\infty\) (using the VB equation withkfor consistency with the CW theoretical framework).- Linf_factor
Numeric in (0, 1). Fraction of \(L_\infty\) used to estimate \(t_{max}\). Default 0.99.
- two_phase
Logical. If
TRUE, applies two-phase model with late-life senescence. DefaultTRUE.- tmat
Age at maturity. Required if
two_phase = TRUE.- late_model
Character. Senescence model:
"gompertz"(default) or"logistic".- tm_factor
Numeric. Fraction of \(t_{mat}\) at which transition to senescence begins. Default 2/3.
- M_mult
Numeric. Multiplier for senescence mortality plateau relative to mortality at \(t_m\). Default 2.
- smooth_factor
Numeric. Controls smoothness of transition between phases. Default 1/3.
Details
The standard Chen-Watanabe formulation expresses mortality as: $$M(t) = \frac{k}{1 - e^{-k(t - t_0)}}$$
where \(t_0\) is the theoretical age at length zero — a parameter with no direct biological interpretation that can take implausible values, particularly when growth data are sparse.
We reparameterize using the relationship between \(t_0\) and \(L_0\) (birth length) under von Bertalanffy dynamics: $$L_0 = L_\infty(1 - e^{kt_0})$$
After algebraic manipulation (see vignette), the \(L_0\)-parameterized form becomes: $$M(t) = \frac{k_{VB} \cdot L_\infty}{L(t)}$$
where \(k_{VB}\) is the von Bertalanffy growth coefficient (or VB-equivalent for non-VB fits) and \(L(t)\) is the predicted length at age \(t\) from the native growth model.
Two Roles of k
The Chen-Watanabe equation involves \(k\) in two conceptually distinct roles:
- Asymptotic mortality rate
The VB-specific constant \(M_\infty = k_{VB}\) that governs the theoretical minimum mortality as \(t \to \infty\). This enters the CW formula as the numerator. Because the derivation assumes VB dynamics, this must always be the VB growth coefficient (or VB-equivalent for non-VB fits). Passed via the
kargument.- Growth trajectory
The length-at-age prediction \(L(t)\) that determines how far an individual is from asymptotic size. For non-VB growth models, the native trajectory with native \(k\) produces more accurate body-size estimates than the VB approximation. Controlled by
k_nativeandgrowth_model.
For VB fits, both roles use the same \(k\), and the default
k_native = k preserves full backward compatibility.
Two-Phase Extension
The original CW model produces unrealistic mortality trajectories at old ages
(approaching zero asymptotically). When two_phase = TRUE, the model
adds a senescence component where mortality increases after maturity,
more realistically capturing late-life dynamics. Mortality follows the
standard CW model until age \(t_m\) (a fraction of \(t_{mat}\)), then
transitions to a senescence model (Gompertz or logistic) that increases
mortality toward \(t_{max}\).
References
Chen, S., & Watanabe, S. (1989). Age dependence of natural mortality coefficient in fish population dynamics. Nippon Suisan Gakkaishi, 55(2), 205-208.
See also
compute_k_vb_equivalent for deriving \(k_{VB}\) from
maturity milestones, get_stochastic_mortality for Monte Carlo
mortality estimation with uncertainty.
Examples
if (FALSE) { # \dontrun{
ages <- seq(0.1, 30, by = 0.5)
# VB fit (k serves both roles)
M_vb <- M_chen_watanabe_L0(
age = ages, Linf = 100, L0 = 25, k = 0.1,
two_phase = TRUE, tmat = 10
)
# Gompertz fit (separate k for each role)
M_gomp <- M_chen_watanabe_L0(
age = ages, Linf = 100, L0 = 25,
k = 0.08, # VB-equivalent k for M_inf
k_native = 0.12, # Native Gompertz k for L(t)
growth_model = "gompertz",
two_phase = TRUE, tmat = 10
)
} # }