Morphological disparity

819 views
Skip to first unread message

Wong Jin Yung

unread,
Aug 15, 2016, 11:44:27 AM8/15/16
to geomorph R package

Hi all,

I’m interested in performing morphospace analysis and plan to use Foote’s measures of Morphological Disparity (MD) & Partial Disparity (PD) [^1].

I found that morphol.disparity in geomorph can do what I want, but I’m not sure whether my understanding is correct or not.

Using the examples from morphol.disparity documentation:

data(plethodon)
Y.gpa<-gpagen(plethodon$land)    #GPA-alignment
gdf <- geomorph.data.frame(Y.gpa, species = plethodon$species, site = plethodon$site)

My understanding is that, I get MD when I run this:

morphol.disparity(coords ~ 1, groups= NULL, data = gdf, iter=999)

And I get PD of different species if I run this:

morphol.disparity(coords ~ 1, groups= ~ species, data = gdf, iter=999)

Is this correct? My understanding is that PD is calculated by additive partitioning of MD, so if I add the PD of each group I should get MD, and I can show the result as %MD (exactly as what Zelditch et al. showed in the book “Geometric Morphometrics for Biologist - A Primer”), so can I just simply add up Procrustes.var from the output in the second run above (how should I do that correctly)?

Another related question: is there any plan for geomorph to implement Foote’s nearest neighbour analysis[^2]? (Or already can do that in geomorph/ any R implementation for that?)

Thanks,

Jin Yung


[1]: Foote, M. (1993). Contributions of individual taxa to overall morphological disparity. Paleobiology, 19, 403–419.

[2]: Foote, M. (1990). Nearest-neighbor analysis of trilobite morphospace. Systematic Biology, 39(4), 371-382.

Adams, Dean [EEOBS]

unread,
Aug 15, 2016, 1:20:03 PM8/15/16
to Wong Jin Yung, geomorph R package

Jin Yung,

 

The values obtained for groups in morphol.disparity are not quite Foote’s partial disparity. The difference is in the denominator.  As stated in the help file of geomorph, the denominator for the disparity measures obtained is the sample size of each group. By contrast, the denominator in Foote’s PD is N-1, where N is the total sample size. For this reason, PD may be summed across groups to obtain the total disparity. However, when individual sample sizes are used to obtain the disparity for each group, this property no longer holds.

 

Dean

 

Dr. Dean C. Adams

Professor

Department of Ecology, Evolution, and Organismal Biology

       Department of Statistics

Iowa State University

www.public.iastate.edu/~dcadams/

phone: 515-294-3834

--
You received this message because you are subscribed to the Google Groups "geomorph R package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to geomorph-r-pack...@googlegroups.com.
To post to this group, send email to geomorph-...@googlegroups.com.
Visit this group at https://groups.google.com/group/geomorph-r-package.
To view this discussion on the web, visit https://groups.google.com/d/msgid/geomorph-r-package/49aea166-bdf4-4ceb-889f-d784a52054e5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Michael Collyer

unread,
Aug 15, 2016, 1:54:43 PM8/15/16
to Dean Adams, Wong Jin Yung, geomorph R package
The way to interpret the formulae for morphol.disparity is that the first formula defines how the residuals are found, the second defines the groups.  If the first formula is 

coords ~ 1,

the ~1 part indicates to use the overall mean.  If the first formula is 

coords ~ species,

the formula indicates to obtain residuals from species means.  The second formula indicates over which groups to sum squared residual lengths and does not have to match anything in the first formula.  Thus,

f1 = coords ~ 1, group = ~ species

would be the same as using Foote’s partial disparity, except that summed squared residual lengths are divided by each group size, n, instead of N - 1, like pointed out by Dean.  Multiplying the values by n/(N-1) for each n will give one Foote’s partial disparity measures.  But here is the nice thing.  The statistical test using either measure is the exact same, since n/(N-1) is constant in every random permutation.  Thus, using the formulae as above provides a test of pairwise disparity, using Foote’s definition, as the numerator is defined the same and denominator is a constant.  

Regarding nearest neighbor analyses, it is something we have given thought, but we currently do not have a good null model for tests.  Foote used rank-based non-parametric statistics.  Our technique of randomizing residuals is not commensurate with null hypotheses about clustering.  It is something that would require additional research.

Mike


Wong Jin Yung

unread,
Aug 17, 2016, 6:23:59 AM8/17/16
to Michael Collyer, Dean Adams, geomorph R package
Dear Dean and Mike,

Thank you both for the detailed explanation, I understand it now. I like the flexibility of the function to make changes in the formulation. I will use what Mike said to back calculate Foote's partial disparity.

Jin Yung

To unsubscribe from this group and stop receiving emails from it, send an email to geomorph-r-package+unsub...@googlegroups.com.
To post to this group, send email to geomorph-r-package@googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "geomorph R package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to geomorph-r-package+unsub...@googlegroups.com.
To post to this group, send email to geomorph-r-package@googlegroups.com.

peter....@smns-bw.de

unread,
Apr 23, 2019, 4:46:14 AM4/23/19
to geomorph R package
Hello,

I have a short question regarding general understanding what I test.

So, if I use

morphol.disparity(f1=shape ~ 1, groups= ~ species, data = gdf, iter=999, print.progress = FALSE)

I test whether the different "species" are significantly different in shape to the overall mean of my dataset

and

for  morphol.disparity(f1=shape ~ species, groups= ~ species, data = gdf, iter=999, print.progress = FALSE)

I test whether or which species are significantly different in their shape to each other.

Is this right?

Thank you for your answer ;)

cheers,
Peter

Adams, Dean [EEOBS]

unread,
Apr 23, 2019, 8:56:24 AM4/23/19
to geomorph-...@googlegroups.com

Not quite. The function does not test whether mean shapes differ, but rather whether variation (disparity) differs.

 

Using ~1 obtains group disparities for each group based on the overall mean. These are equivalent to Foote’s partial disparities. The second equation obtains group disparities relative to a model containing group means.

 

Please see the help file, as this is explained there, along with examples.


Dean

 

Dr. Dean C. Adams

Director of Graduate Education, EEB Program

Professor

Department of Ecology, Evolution, and Organismal Biology

--

You received this message because you are subscribed to the Google Groups "geomorph R package" group.

To unsubscribe from this group and stop receiving emails from it, send an email to geomorph-r-pack...@googlegroups.com.
To post to this group, send email to geomorph-...@googlegroups.com.

peter....@smns-bw.de

unread,
Apr 24, 2019, 4:11:12 AM4/24/19
to geomorph R package
Hello Dean,
thank you for your answer. It´s a bit a pitty with the exact meaning of all this statistical jargon.
Regarding Partial Disparities I found in Zelditch et al. following sentence "Quantifying partial disparities is one method for estimating the phenotypic distinctness of a particular taxon,...".
So, can I then assume nevertheless, that morpho.disparitiy is suitable to estimate whether two groups are different in their morphology? Because variation sounds to me like I test only whether the one group has a larger phenotypic "morpho"-range than the other, but not neccessarily at different positions.

I am a bit confused by the functions anova.lm.rrpp, pairwise, morpho.disaprity which one is now really the one I need? I do a Proc.ANOVA with procD.lm, which tests whether species or genus, respectively is different. And then I would like to do post-hoc tests to figure out which group-pairs are different to each other.

gdf_lat<-geomorph.data.frame(shape=gpa_lateral$coords,Csize=gpa_lateral$Csize,species=classifier$species,genus=classifier$genus)
anovaspec<-procD.lm(shape~species,data=gdf_lat,iter=999,RRPP=F,print.progress=F)
anovagen<-procD.lm(shape~genus,data=gdf_lat,iter=999,RRPP=F,print.progress=F)

summary(anovaspec)
summary(anovagen)

And then this?

PW <- pairwise(fit=anovaspec, groups = species, covariate = NULL)
summary(PW, test.type = "dist", confidence = 0.95, stat.table = TRUE)

Thank you in advance!

Best,
Peter

Antigoni Kaliontzopoulou

unread,
Apr 24, 2019, 5:01:17 AM4/24/19
to geomorph-...@googlegroups.com

Peter, means and variances are different aspects one can compare between groups. One tells you if the mean shapes of the compared groups are different or not (manova-type approaches). The second tells you whether dispersion, disparity, variability, variation, or any other synonym you want to use differs between groups.

Yes, your code for anova and pairwise comparisons looks correct. For more help, see the vignette included in geomorph by running vignette("geomorph.assistance")

Antigoni

--
You received this message because you are subscribed to the Google Groups "geomorph R package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to geomorph-r-pack...@googlegroups.com.
To post to this group, send email to geomorph-...@googlegroups.com.
Visit this group at https://groups.google.com/group/geomorph-r-package.

For more options, visit https://groups.google.com/d/optout.
-- 
Antigoni Kaliontzopoulou 

Auxiliary Researcher
CIBIO/InBIO, Centro de Investigação em Biodiversidade e Recursos Genéticos
University of Porto
Campus Agrário de Vairão, 4485-661 Vairão
PORTUGAL

https://sites.google.com/view/akaliontzopoulou/home
https://cibio.up.pt/research-groups-1/details/phenevol
http://cibio.up.pt/people/details/akaliont
http://www.seh-herpetology.org/

peter....@smns-bw.de

unread,
Apr 24, 2019, 5:22:38 AM4/24/19
to geomorph R package

Thank you Antigoni,

Ohh, I did not know the vignette-function. This helps me a lot, also with the allometry functions. For me it is not that easy to interpolate former posts and user guides using now depracated functions to the new version. So, I hope this will be know my last post for some time^^ Thank you all a lot!

Cheers,
Peter
Reply all
Reply to author
Forward
0 new messages