hoenig: Age-Length Key by the Hoening _et al._ (1993, 1994) method

Description Usage Arguments Details Value References See Also Examples


Generation of Age-Length Keys (ALK) using incomplete data, by the method proposed by Hoenig et al. (1993, 1994).


hoenig(Ak, fik, fiz, threshold = 1, maxiter = 2000,
  age_classes = colnames(Ak[[1]]), length_classes = rownames(Ak[[1]]),
  name = "", description = "")



A list of k equally dimensioned matrices, so that A[[k]][i, j] is the count of individuals of length i and age j on sample k.


A list of k vectors of equal length (i), so that fik[[k]][i] is the total number of fish in the length-class i on the population from which Ak[[k]] was sampled.


A list of vectors of equal length (i) where fiz[[z]][i] is the number of fish in the length-class i on population z, for which no age data is available.


A vector with the name of each age class.


A vector with the name of each age class.


The value at which convergence is considered to be achieved: see ‘details’.


The maximum number of iterations of the EM algorithm: see ‘details’.


A string with the name of the ALK.


A string describing the ALK.


Calculates an ALK using the generalized method proposed by Hoenig et al. (1993, 1994), which uses an undefined number of data sets with known and unknown age information.

The returned ALKr object contains information on the convergence threshold that was used, the number of iterations ran, and if convergence was reached.


The method proposed by Hoenig et al. (1993, 1994) is based on the EM algorithm as defined by Dempster et al. (1997), and it generates the ALK by a series of iterations which are repeated until convergence is acheived.

Let Nz be a list of matrices containing the number of fish in each length and age class for each of the z populations with unknown age information and with length distribution specified by fiz. Convergence is tested by evaluating the greatest of the absolute differences between all pairs of Nz matrices generated on the current and previous iterations: max(mapply("-", Nz, Nz.old)).


A list of ALKr objects, one for each item in the fiz list, each containing a matrix with the probability of an individual of age j having length i, i.e. P(i|j), the vectors of age and length classes, and information about the method used to generate the key.


Dempster, A.P., Laird, N.M., Rubin, D.B. (1977). Maximum Likelihood from Incomplete Data via the EM Algorithm. Journal of the Royal Statistical Society. Series B (Methodological), 39/1, 1-38. DOI: 10.2307/2984875

Hoenig, J.M., Heisey, D.M., Hanumara, R.C. (1993). Using Prior and Current Information to Estimate Age Composition: a new kind of age-length key. ICES CM Documents 1993, 10.

Hoenig, J.M., Heisey, D.M., Hanumara, R.C. (1994). A computationally simple approach to using current and past data in age-length key. ICES CM Documents 1994, 5.

See Also

inverse_ALK kimura_chikuni hoenig_heisey gascuel



hoenig(Ak = hom$otoliths[1:10],
       fik = replicate(10, hom$F1992, simplify = FALSE),
       fiz = list(hom$F1993))

Search within the ALKr package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.