Learn R Programming

geomorph (version 2.0.1)

morphol.integr: Quantify morphological integration between two modules

Description

Function quantifies the degree of morphological integration between two modules of Procrustes-aligned coordinates

Usage

morphol.integr(A1, A2, method = c("PLS", "RV"), warpgrids = TRUE,
  iter = 999, verbose = FALSE)

Arguments

A1
A matrix (n x [p1 x k]) or 3D array (p1 x k x n) containing GPA-aligned coordinates for the first module
A2
A matrix (n x [p2 x k]) or 3D array (p2 x k x n) containing GPA-aligned coordinates for the second module
method
Method to estimate morphological integration; see below for details
warpgrids
A logical value indicating whether deformation grids for shapes along PLS1 should be displayed (only relevant if data for A1 or A2 [or both] were input as 3D array)
iter
Number of iterations for significance testing
verbose
A logical value indicating whether the output is basic or verbose ({method="PLS"} only) (see Value below)

Value

  • Function returns the a list with the following components:
  • valueThe estimate of morphological integration: PLS.corr or RV
  • pvalueThe significance level of the observed signal
  • XscoresPLS scores for the first block of landmarks ({method="PLS"} only when verbose=TRUE)
  • YscoresPLS scores for the second block of landmarks ({method="PLS"} only when verbose=TRUE)

Details

The function quantifies the degree of morphological integration between two modules of shape data as defined by landmark coordinates. It is assumed that the landmarks have previously been aligned using Generalized Procrustes Analysis (GPA) [e.g., with gpagen]. The function may be used to assess the degree of morphological integration between two separate structures or between two modules defined within the same landmark configuration. Two analytical approaches are currently implemented to assess the degree of morphological integration:
  1. method="PLS"
(default) the function estimates the degree of morphological integration using two-block partial least squares, or PLS. When used with landmark data, this analysis is referred to as singular warps analysis (Bookstein et al. 2003). When {method="PLS"}, the scores along the X & Y PLS axes are also returned, as is a plot of PLS scores from Block1 versus Block2 along the first set of PLS axes. Thin-plate spline deformation grids along these axes are also shown (if data were input as a 3D array). Note: deformation grids are displayed for each block of landmarks separately. If the two blocks of landmarks are derived from a single structure (i.e. a single landmark configuration), one can plot the overall deformation along PLS1 using the procedure provided in the example below. method="RV" the function estimates the degree of morphological integration using the RV coefficient (Klingenberg 2009). Significance testing for both approaches is found by permuting the objects in one data matrix relative to those in the other. A histogram of coefficients obtained via resampling is presented, with the observed value designated by an arrow in the plot.

References

Bookstein, F. L., P. Gunz, P. Mitteroecker, H. Prossinger, K. Schaefer, and H. Seidler. 2003. Cranial integration in Homo: singular warps analysis of the midsagittal plane in ontogeny and evolution. J. Hum. Evol. 44:167-187. Klingenberg, C. P. 2009. Morphometric integration and modularity in configurations of landmarks: tools for evaluating a priori hypotheses. Evol. Develop. 11:405-421.

Examples

Run this code
data(plethodon)
Y.gpa<-gpagen(plethodon$land)    #GPA-alignment

#Morphological integration using PLS between two modules within a structure
morphol.integr(Y.gpa$coords[1:5,,],Y.gpa$coords[6:12,,],method="PLS",iter=99)

#Morphological integration using RV between two modules within a structure
morphol.integr(Y.gpa$coords[1:5,,],Y.gpa$coords[6:12,,],method="RV",iter=99)

#Deformation plot for case when both blocks are derived from the same landmark configuration
res<-morphol.integr(Y.gpa$coords[1:5,,],Y.gpa$coords[6:12,,],method="PLS",iter=99,verbose=TRUE)
  ref<-mshape(Y.gpa$coords)   #overall reference
  plotRefToTarget(ref,Y.gpa$coords[,,which.min(res$x.scores)],method="TPS") #Min along PLS1
  plotRefToTarget(ref,Y.gpa$coords[,,which.max(res$x.scores)],method="TPS") #Max along PLS1

Run the code above in your browser using DataLab