Dear all,

I was looking for methods in R that allow assessing the number of significant principal coordinates. Unfortunatly I was not very successful. I expanded my search to the web and Current Contents, however, the information I found is very limited.
Therefore, I tried to write code for doing a randomization. I would highly appriciate if somebody could comment on the following approach. I am neither a statistician, nor an R expert... the data matrix I used has 72 species (columns) and 167 samples (rows).


Many thanks in advance, Christian

# focus on ~80% of all the eigenvalues

nEigen <- round(ncol(Data*0.8))

# Calculate Weights for Principal Coordinates Analysis

Total <- apply(Data,1,sum)
Weight <- round(Total/max(Total)*1000)


# Calculate Chord Distance

library(vegan)
Chord <- vegdist(decostand(Data, "norm"), "euclidean")

# Calculate Principal Coordinates, including distance matrix row weights

library(ade4)
PCoord.Eigen <- dudi.pco(Chord,row.w=Weight,scann=F,full=T)$eig[1:nEigen]

# Randomization of Principal Coordinates Analysis

library(labdsv)
for (i in 1:99) {
Data.random <- rndtaxa(Data,species=T,plots=T)
Total.random <- apply(Data.random,1,sum)
Weight.random <- round(Total.random/max(Total.random)*1000)
Chord.random <- vegdist(decostand(Data.random, "norm"), "euclidean")
PCoord.Eigen.random <- dudi.pco(Chord.random,row.w=Weight.random,scann=F,full=T)$eig[1:nEigen]
PCoord.Eigen <- cbind.data.frame(PCoord.Eigen, PCoord.Eigen.random)
}


# Plot scree diagramm with original eigenvalues and 95%-quantiles of eigenvalues from randomized principal coordinate analysis

plot(c(1:nEigen),PCoord.Eigen[,1],type="b")
lines(c(1:nEigen),apply(PCoord.Eigen[,-1],1,quantile,probs=c(0.95)),col="red")


Christian Kamenik
Institute of Plant Sciences
University of Bern

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to