R/entropy_d.R
entropy_d.Rd
This function calculates Demetrius' entropy from vectors of age-specific
survivorship (lx
) and fecundity (mx
). Users can choose between
the scaled (Caswell, 2001 eqns. 4.94-4.97) or unscaled (from Demetrius 1978)
method.
entropy_d(lx, mx, type = "scaled", ...)
Either a survivorship trajectory (a vector of monotonically-declining values in the interval [0,1]), or submatrix U from a matrix population model.
Either an age-specific fecundity trajectory (a vector of non-negative values), or submatrix F from a matrix population model.
Calculation type, either `scaled` (default) or `unscaled`.
Additional variables passed to `mpm_to_lx` and `mpm_to_mx` if the data are supplied as matrices. This could include the `start` argument to select a starting stage.
Demetrius' entropy.
The scaled version accounts for population growth or shrinkage by adjusting the contributions of survivorship and fecundity using the dominant eigenvalue (lambda). Specifically, each contribution is weighted by lambda raised to the negative power of age. Conversely, the unscaled version does not account for population growth. It calculates entropy directly from the proportional contributions of survivorship and fecundity without adjustment for population dynamics.
Note that this function may produce unexpected results if
used on partial survivorship and fecundity trajectories. In addition, it is
sensitive to the length of the these vectors. We direct users to the
functions `shape_surv
` and `shape_rep
` which
are relatively robust to these issues.
Demetrius, L. 1978. Adaptive value, entropy and survivorship curves. Nature, 275(5677), 213–214.
Caswell, H. 2001. Matrix Population Models: Construction, Analysis, and Interpretation. Sinauer Associates.
Other life history traits:
entropy_k()
,
entropy_k_age()
,
entropy_k_stage()
,
gen_time()
,
life_elas()
,
life_expect_mean()
,
longevity()
,
net_repro_rate()
,
repro_maturity
,
shape_rep()
,
shape_surv()
data(mpm1)
# derive trajectories of lx and mx, starting from stage 2
lx <- mpm_to_lx(mpm1$matU, start = 2)
mx <- mpm_to_mx(mpm1$matU, mpm1$matF, start = 2)
entropy_d(lx, mx, type = "unscaled")
#> [1] 2.062862
entropy_d(lx, mx, type = "scaled")
#> [1] 0.7735551
# calculate entropy directly from MPM
entropy_d(lx = mpm1$matU, mx = mpm1$matF, start = 2)
#> [1] 0.7735551