Many biological objects display some sort of symmetry. Morphometric analyses often investigate symmetry in some manner: either by evaluating components of variation attributed to different symmetry effects (e.g., directional, fluctuating, etc.), or by accounting for symmetry prior to the analysis (e.g., obtain ‘symmetrized’ shapes for subsequent investigation).
library(geomorph)
## Loading required package: RRPP
## Loading required package: rgl
## Loading required package: Matrix
data(mosquito)
Y.gpa <- gpagen(mosquito$wingshape, print.progress = FALSE)
plot(Y.gpa)
mosquito.sym <- bilat.symmetry(A = Y.gpa, ind = mosquito$ind, side=mosquito$side,
object.sym = FALSE, print.progress = FALSE)
summary(mosquito.sym)
##
## Call:
## bilat.symmetry(A = Y.gpa, ind = mosquito$ind, side = mosquito$side,
## object.sym = FALSE, print.progress = FALSE)
##
##
## Symmetry (data) type: Matching
##
## Type I (Sequential) Sums of Squares and Cross-products
## Randomized Residual Permutation Procedure Used
## 1000 Permutations
##
## Shape ANOVA
## Df SS MS Rsq F Z Pr(>F)
## ind 9 0.104888 0.0116542 0.45533 2.7646 4.7037 0.001 **
## side 1 0.003221 0.0032209 0.01398 0.7641 -0.3558 0.635
## ind:side 29 0.122249 0.0042155 0.53069
## Total 39 0.230358
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Centroid Size ANOVA
## Df SS MS Rsq F Z Pr(>F)
## ind 9 4.1497e-09 4.6107e-10 0.18555 0.7484 -0.42684 0.665
## side 1 3.4740e-10 3.4738e-10 0.01553 0.5638 0.15779 0.471
## ind:side 29 1.7867e-08 6.1609e-10 0.79891
## Total 39 2.2364e-08
data('lizards')
Y.gpa <- gpagen(lizards$coords, print.progress = FALSE)
plot(Y.gpa)
lizard.sym <- bilat.symmetry(A = Y.gpa, ind = lizards$ind, replicate = lizards$rep,
object.sym = TRUE, land.pairs = lizards$lm.pairs, print.progress = FALSE)
summary(lizard.sym)
##
## Call:
## bilat.symmetry(A = Y.gpa, ind = lizards$ind, replicate = lizards$rep,
## object.sym = TRUE, land.pairs = lizards$lm.pairs, print.progress = FALSE)
##
##
##
## Symmetry (data) type: Object
##
## Type I (Sequential) Sums of Squares and Cross-products
## Randomized Residual Permutation Procedure Used
## 1000 Permutations
##
## Shape ANOVA
## Df SS MS Rsq F Z Pr(>F)
## ind 48 0.236788 0.0049331 0.83194 7.3721 -0.1011 0.536
## side 1 0.009432 0.0094317 0.03314 14.0951 3.7540 0.001 **
## ind:side 48 0.032119 0.0006692 0.11285 10.4367 19.7078 0.001 **
## ind:side:replicate 98 0.006283 0.0000641 0.02208
## Total 195 0.284622
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(lizard.sym, warpgrids = TRUE)
NOTE: One may wish to remove asymmetry from the data and
perform all subsequent analyses on ‘symmetrized’ structures. This can be
easily achieved by obtaining the $symm.shape
component from
the bilat.symmetry
object result.
plotAllSpecimens(Y.gpa$coords)
plotAllSpecimens(lizard.sym$symm.shape)