morphErr-package: 'morphErr': Measurement error models for morphometric data

morphErr-packageR Documentation

morphErr: Measurement error models for morphometric data

Description

The morphErr package provides functions to analyse morphometric data using the method proposed by Stevenson, Smit, and Setyawan (2026).

Details

Two common ways of analysing morphometric data are to fit a linear regression model or find the reduced major axis (i.e., the principal component axis). However, these methods are known to perform poorly when observations are subject to non-negligible measurement error. The model implemented in this package provides the type of inference available from these methods, but explicitly accounts for measurement error. It can also handle multivariate data (rather than just fitting bivariate relationships), missing data, and accommodates dependence in measurement errors between dimensions.

Data requirements

The morphErr package might be right for you if your data were collected on photogrammetry surveys (e.g., using drones) and you have multiple photographs of some individuals.

The package might be particularly useful relative to alternative options if

  • you take a lot of different measurements from each photograph (i.e., you observe a lot of "dimensions"),

  • observations are subject to non-negligible measurement error,

  • the measurement errors are correlated (e.g., a photograph with positive measurement error for one dimension tends to have positive measurement errors for other dimensions),

  • you don't necessarily measure every dimension in every photograph,

  • you'd like to estimate relationships amongst different subsets of the dimensions, or

  • you'd like to predict different dimensions for different individuals using different subsets of the other dimensions.

Package overview

The key functions in morphErr are as follows:

  • plotmorph() to plot morphometric data from a photogrammetry survey.

  • fit.morph() to fit the model described by Stevenson, Smit, and Setyawan (2026).

  • summary.lme.morph() with type = "pars" for parameter estimates and standard errors.

  • summary.lme.morph() with type = "betas" for estimated coefficients of linear relationships to predict one dimension from any subset of the other dimensions.

  • summary.lme.morph() with type = "betas-pca" for estimated coefficients of the reduced major axis (or pricipal component axis) summarising the relationship between two dimensions.

  • summary.lme.morph() with type = "isometric-pca" or type = "isometric-pca-boot" to test for isometric growth between all pairs of dimensions.

  • plot.lme.morph() to plot estimated relationships between dimensions.

  • sim.measurements() to simulate morphometric data.

  • sim.morph() to simulate multiple data sets and fit a model to each one.

  • extract.sim.morph() to extract estimates from the models fitted using sim.morph().

Author(s)

Maintainer: Ben C. Stevenson ben.stevenson@st-andrews.ac.uk [copyright holder]

Authors:

References

Stevenson, B. C., Smit, E., and Setyawan, E. (2026) Measurement error models for morphometric data. Annals of Applied Statistics, 20: 945–962.

See Also

Useful links:


morphErr documentation built on Aug. 30, 2026, 5:06 p.m.