Allometry

Authors
Affiliation

Floriane Remy

CNRS, Univ. Bordeaux, MCC – UMR 5199 PACEA

Frédéric Santos

CNRS, Univ. Bordeaux, MCC – UMR 5199 PACEA

The allometric effect is the potential influence of the size (i.e., the centroid size) on the shape (i.e., the Procrustes coordinates). To assess it, we should evaluate whether there is a strong and significant relationship between those two elements. One way to do so is to use a linear model (Cornillon et al. 2023; Fox 2016), and more precisely a linear regression of shape over size. For an overview of this topic, see for instance Klingenberg (2016) or Klingenberg (2022).

1 Using principal components

A first (elementary) approach would be to study the link between the first principal axis and the centroid size. This can be done, for instance, with:

## PC1 vs. centroid size:
plot(pca$x[, 1] ~ gpa$Csize,
     pch = 16, xlab = "Centroid size",
     ylab = "PC1")
Figure 1: Scatterplot of centroid size and first principal axis score for all specimens.
Exercise
  1. How to interpret the results of Figure 1?
  2. How could you assess the strength and significance of the allometric effect here?

A similar approach can be performed on PC2 and subsequent axes.

2 A more complex approach

However, it is also possible to inspect the whole effect of allometry by assessing the relationship between centroid size and the procrustes coordinates as a whole.

2.1 Using linear models

## Perform the regression analysis of Shape ~ Size:
fit <- procD.lm(
  coords ~ csize,
  data = gm.dtf,
  iter = 999
)
## ANOVA table:
fit$aov.table
           Df      SS       MS     Rsq      F      Z Pr(>F)    
csize       1 0.07020 0.070200 0.25539 53.848 4.8678  0.001 ***
Residuals 157 0.20468 0.001304 0.74461                         
Total     158 0.27488                                          
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

To conclude on the potential effect of the size on the shape, you should pay attention to the value of the Pr(>F) (a p-value, informing on statistical significance) and Rsq (i.e., \(R^2\), informing on the strength of the relationship).

Figure 2 shows how to represent graphically this relationship, using the method of regression scores (Drake et al. 2017). Note that each point represents an individual, and that you can color points according to a categorical variable with the col argument.

plotAllometry(fit, size = gpa$Csize, 
              method = "RegScore", pch = 19)
Figure 2: Allometric effect estimated using a regression of regression scores on centroid size.

2.2 Raw procrustes coordinates versus regression residuals

Depending on the significance and strength of the allometric effect, you can decide to run the subsequent analyses either on the raw Procrustes coordinates (to keep this potential effect of size on shape), or the residuals computed from the regression of the size over the shape (to get rid of this allometric effect and only analyze form variations). These residuals can be computed with:

## Regression residuals:
resid <- fit$residuals

2.3 Shape versus form

One last interesting analysis that can help us to decide whether to keep or get rid of this allometric effect consists in studying the individuals distribution when focusing on either the shape or the form, and assessing whether a covariate (like the age) is still influencing this variation.

## PCA of shape variation (performed on raw Procrustes coordinates):
pca.shape <- PCA(gen.dtf[, 1:206], scale.unit = FALSE, graph = FALSE)
fviz_pca_ind(pca.shape, axes = c(1, 2), col.ind = gm.dtf$age_class,
             addEllipses = TRUE, label='none', legend.title = "Age class")
Figure 3: PCA performed on the raw Procrustes coordinates with data ellipses highlighting the distinction of each age class.
## PCA of form variation (performed on residuals from the regression of size over shape):
pca.form <- PCA(resid, scale.unit = FALSE, graph = FALSE)
fviz_pca_ind(pca.form, axes = c(1, 2), col.ind = gm.dtf$age_class,
             addEllipses = TRUE, label = 'none', legend.title = "Age class")
Figure 4: PCA performed on the residuals from the regression of size over shape, with data ellipses for each age class.

3 More statistical inference and permutation tests

To go further in the interpretation, we can associate to these PCAs additional analyses to assess whether the selected covariate significantly contributes to the observed inter-individual variation.

  1. Can we significantly distinguish each age class based on the mandible shape?
permudist(pca.shape$ind$coord,
          groups = gen.dtf$age_class,
          rounds = 999)$p.value
            Juvenile Sub-adult Adult
Sub-adult      0.036                
Adult          0.001     0.001      
Older adult    0.001     0.003 0.154
  1. Can we significantly distinguish each age class based on the mandible form?
permudist(pca.form$ind$coord,
          groups = gen.dtf$age_class,
          rounds = 999)$p.value
            Juvenile Sub-adult Adult
Sub-adult      0.405                
Adult          0.140     0.548      
Older adult    0.247     0.065 0.032

Finally, it could be interesting to evaluate the correlation between this covariate and the shape:

cor.test(gm.dtf$csize, gm.dtf$age, method = "pearson")

    Pearson's product-moment correlation

data:  gm.dtf$csize and gm.dtf$age
t = 13.281, df = 157, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.6447083 0.7932121
sample estimates:
      cor 
0.7273664 

We could also investigate whether the centroid size significantly varies depending on the value of the covariate:

## Distribution of centroid size among age classes:
boxplot(csize ~ age_class, data = gen.dtf,
        xlab = "Age class", ylab = "Centroid size",
        main = "Distribution of the centroid size among age classes")
Figure 5: Boxplots illustrating the dispersion of the centroid size among age classes.

We can then test whether this distribution significantly differs between each age class1:

## ANOVA (with randomized permutations):
age.size <- lm.rrpp(csize ~ age_class, data = na.omit(gen.dtf))
anova(age.size)

Analysis of Variance, using Residual Randomization
Permutation procedure: Randomization of null model residuals 
Number of permutations: 1000 
Estimation method: Ordinary Least Squares 
Sums of Squares and Cross-products: Type I 
Effect sizes (Z) based on F distributions

           Df     SS     MS     Rsq      F      Z Pr(>F)    
age_class   3 54.374 18.125 0.67526 105.35 11.655  0.001 ***
Residuals 152 26.149  0.172 0.32474                         
Total     155 80.523                                        
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Call: lm.rrpp(f1 = csize ~ age_class, data = na.omit(gen.dtf))

Since a significant effect does show up, we may want to perform post-hoc (or pairwise) tests, to identify which pairs of age classes differ significantly.

## Pairwise comparisons:
pw.age.size <- pairwise(age.size, groups = na.omit(gen.dtf)$age_class)
summary(pw.age.size)

Pairwise comparisons

Groups: Juvenile Sub-adult Adult Older adult 

RRPP: 1000 permutations

LS means:
Vectors hidden (use show.vectors = TRUE to view)

Pairwise distances between means, plus statistics
                              d UCL (95%)         Z Pr > d
Juvenile:Sub-adult    0.7792960 0.6435238 1.9427871  0.018
Juvenile:Adult        1.8680152 0.6281543 4.1874735  0.001
Juvenile:Older adult  2.2017588 0.8945375 3.5249089  0.001
Sub-adult:Adult       1.0887193 0.2369915 5.3142343  0.001
Sub-adult:Older adult 1.4224628 0.6949962 3.1184015  0.001
Adult:Older adult     0.3337435 0.6849893 0.4125271  0.356
Exercise
  1. How to interpret the results regarding the relation between the centroid size and the age?
  2. Considering the PCA results, would you perform your morphometric analyses on the shape or the form of the mandible?
Back to top

References

Cornillon, Pierre-André, Nicolas Hengartner, Eric Matzner-Løber, and Laurent Rouvière. 2023. Régression avec R. 3rd ed. Pratique R. Les Ulis: EDP sciences.
Drake, Abby Grace, Michael Coquerelle, Pavel A. Kosintsev, Olga P. Bachura, Mikhail Sablin, Andrei V. Gusev, Lacey S. Fleming, and Robert J. Losey. 2017. “Three-Dimensional Geometric Morphometric Analysis of Fossil Canid Mandibles and Skulls.” Scientific Reports 7 (1): 9508. https://doi.org/10.1038/s41598-017-10232-1.
Fox, John. 2016. Applied Regression Analysis and Generalized Linear Models. 3rd ed. Los Angeles: SAGE.
Klingenberg, Christian Peter. 2016. “Size, Shape, and Form: Concepts of Allometry in Geometric Morphometrics.” Development Genes and Evolution 226 (3): 113–37. https://doi.org/10.1007/s00427-016-0539-2.
———. 2022. “Methods for Studying Allometry in Geometric Morphometrics: A Comparison of Performance.” Evolutionary Ecology 36 (4): 439–70. https://doi.org/10.1007/s10682-022-10170-z.

Footnotes

  1. In practice, you might want to check the quality of this model, for instance by executing the command plot(age.size) here. But an in-depth discussion about linear models is beyond the scope of this course.↩︎