[R] partial dbRDA or CCA with two distance objects in Vegan.

Nevil Amos nevil.amos at gmail.com
Tue Sep 21 16:40:16 CEST 2010


  I am trying to use the cca/rda/capscale functions in vegan to analyse 
genetic distance data ( provided as a dist object calculated using 
dist.genpop in package adegenet) with geographic distance partialled out 
( provided as a distance object using dist function in veganthis method 
is attempting to follow the method used by Geffen et al 2004  as 
suggested by Legendre and . FORTIN (2010).

I cannot see how to introduce the Conditioning ( partialled) second dist 
matrix.  as you can see from the code snippet below, the two dist 
objects are of the same dimensions. - I get an error using capscale:
         Error in qr.fitted(Q, Xbar) :
               'qr' and 'y' must have the same number of rows
or cca
         Error in weighted.mean.default(newX[, i], ...) :
                'x' and 'w' must have the same length
when using a conditioning distance object instead of a variable (Clade) 
of the same length as  the constraints ( Latitude and Longitude)

I would be grateful, for any pointers on this, ie which test is the 
appropriate one to use ( I believe capscale since it is "similar to 
distance-based redundancy analysis (Legendre & Anderson 1999)") and 
whether this test is indeed equivalent to the approach suggested by 
Legendre &Fortin, (Geffen et al used DISTLM).

many thanks

Nevil Amos
ACB
Monash University


references
(Geffen, E., M. J. Anderson, et al. (2004). "Climate and habitat 
barriers to dispersal in the highly mobile grey wolf." Molecular Ecology 
13(8): 2481-2490.)
LEGENDRE, P. and M.-J. FORTIN (2010). "Comparison of the Mantel test and 
alternative approaches for detecting complex multivariate relationships 
in the spatial analysis of genetic data." Molecular ecology resources 
early copy online


Snippet from analysis script:
 > Gen_Dist<-dist.genpop(mygenpop,method=2,diag=F,upper=F)
 > str(Gen_Dist)
Class 'dist'  atomic [1:666] 0.866 0.757 0.813 0.872 0.887 ...
   ..- attr(*, "Labels")= Named chr [1:37] "4879" "4883" "4884" "4885" ...
   .. ..- attr(*, "names")= chr [1:37] "01" "02" "03" "04" ...
   ..- attr(*, "Size")= int 37
   ..- attr(*, "call")= language dist.genpop(x = mygenpop, method = 2, 
diag = F, upper = F)
   ..- attr(*, "Diag")= logi FALSE
   ..- attr(*, "Upper")= logi FALSE
   ..- attr(*, "method")= chr "Edwards"
 > str(geog)
Class 'dist'  atomic [1:666] 6.61 4.19 14.6 16.71 16.68 ...
   ..- attr(*, "Size")= int 37
   ..- attr(*, "Labels")= chr [1:37] "2" "5" "6" "7" ...
   ..- attr(*, "Diag")= logi FALSE
   ..- attr(*, "Upper")= logi FALSE
   ..- attr(*, "method")= chr "euclidean"
   ..- attr(*, "call")= language dist(x = XY)
 > myDbRDA<-cca(Gen_Dist ~ Latitude+Longitude+Condition(Clade),data = 
mydata)
 > myDbRDA<-cca(Gen_Dist ~ Latitude+Longitude+Condition(geog),data = mydata)
Error in weighted.mean.default(newX[, i], ...) :
   'x' and 'w' must have the same length



More information about the R-help mailing list