When one is working with multiple distinct, yet closely related,
species, it is important that one’s analyses take into account any
similarities due to that close relationship. The function
phylointegration estimates the degree of morphological
covariation between two or more sets of variables while accounting for
phylogeny using partial least squares (Adams and Felice 2014), and under
a Brownian motion model of evolution. As with the functions integration.test and modularity.test, input
for the function can either be multiple objects containing Procrustes
coordinates, or a single object with accompanying vector defining
partitions (see below).
For this analysis, the phylogenetic relationships among taxa are
described by the phylogeny, which in R is an object of class “phylo”.
Note that there is a slight difference between geomorph and
RRPP in how phylogenetic information is provided by the
user. In geomorph, phylogenetic information is generally provided as a
phylogeny of class “phylo”. This object is then converted to a
phylogenetic covariance matrix by the internal analytics of the
function. By contrast, in RRPP the user must first calculate the
phylogenetic covariance matrix, and then provide this to the analytical
functions to incorporate phylogenetic information. Users should be aware
of this slight difference, as several geomorph functions
call underlying RRPP functions (e.g.,
procD.pgls in geomorph calls lm.rrpp in
RRPP).
phylo.integration()
For this example, we first create a vector (lmkpart) that defines the
partitions of our data. Then we run the analyses, including our
phylogeny as an argument of the function. The phylogenetic tree and
landmarks included in this example are from the “plethspecies” dataset,
available by default with geomorph.
lmkpart <- c("A","A","A","A","A","B","B","B","B","B","B")
IT <- phylo.integration(lmks$coords, phy = phylo, partition.gp=lmkpart, iter=999, print.progress = F)
Just like with the function integration.test, results
can be summarized using the base R function summary, and
visualized using the base R function plot
summary(IT)
##
## Call:
## phylo.integration(A = lmks$coords, phy = phylo, partition.gp = lmkpart, iter = 999, print.progress = F)
##
##
##
##
## r-PLS: 0.934
##
## Effect Size (Z): 2.1665
##
## P-value: 0.014
##
## Based on 1000 random permutations
plot(IT)

phylointegration Output
This function returns an object of class “pls” that contains the following values, each of which can be accessed separately with the $ operator.