Fitting linear models, and performing statistical analyses in
general, to assess biological hypotheses regarding closely-related
species presents a problem to the researcher. Standard statistical
models rely on the assumption that observations are independent and
identically distributed (iid). Mathematically, this means that the
Gaussian error of an iid dataset can be expressed as an identity matrix.
However, when species are closely related (for example within the same
genus) by phylogeny, we expect observations taken on them to be more
similar than those taken from more distantly-related species. This means
that error in this case cannot be expressed as an identity matrix. In
other words, observations taken from closely related species cannot be
considered independent, or identically distributed. Phylogenetic
Comparative Methods (PCM) is an analytical toolkit consisting of
methodologies designed to account for this issue of non-independence of
observations. With this toolkit, researchers can construct models and
perform other related analyses with non independent observations by
subsequently \(conditioning\) those
observations on a phylogeny. Under this PCM analytical umbrella are Phylogenetic ANOVA, Phylomorphospace, Phylogenetic Signal, and Evolutionary Rates,
all of which can be performed using functions in geomorph.
The compare.physignal.z function allows the user to
statistically compare phylogenetic signal effect sizes calculated using
the physignal.z function. Following Collyer et al., (2022),
the function performs a two-sample test statistic (\(Z_{12}\)) on two or more analyses of
optimized Lambda (\(\hat{\lambda}\)),
and returns pairwise Z-scores and P-values for each comparison.
Important Note! Statistical comparison between
optimized Lambda (Collyer et al., 2022) effect size values is possible
because \(\hat{\lambda}\) has an
approximately normal distribution. Therefore, this function only works
with objects of class ‘physignal.z’, or objects generated by the
function physignal.z
compare.physignal.z()
By way of example, we will compare two previously run analyses of
\(\hat{\lambda}\), calculated on the
plethodontid jaw and cranium. To see how to perform these initial
analyses, please visit the tutorial for physignal.z before continuing here.
PS.list <-list(PS.jaw, PS.cranium)
names(PS.list) <- c("jaw", "cranium")
PS.Z <- compare.physignal.z(PS.list)
summary.
summary(PS.Z)
##
## Effect sizes (Z-scores)
##
## jaw cranium
## 1.624806 1.684868
##
## Effect sizes for pairwise differences in phylogenetic signal.
##
## jaw cranium
## jaw 0.0000000 0.2890467
## cranium 0.2890467 0.0000000
##
## P-values
##
## jaw cranium
## jaw 1.0000000 0.7725457
## cranium 0.7725457 1.0000000
This returns a table of pairwise Z-scores and P-values for each
comparison.
The function returns an object of class “compare.physignal.z”, which is a list, whose objects can be accessed using the $ operator.
compare.physignal.z() Output
\(sample.z\): A vector of effect sizes for each sample.
\(sample.r.sd\): A vector of standard deviations for each sampling distribution (following Box-Cox transformation).
\(pairwise.z\): A matrix of pairwise, two-sample z scores between all pairs of effect sizes.
\(pairwise.p\): A matrix of corresponding P-values.