[R-sig-eco] Is adonis the right test for me?
Eduard Szöcs
szoe8822 at uni-landau.de
Fri Apr 29 12:03:03 CEST 2011
Hai Kari,
as far as i know SimPer is not available in vegan.
I have written some code for myself a few months ago to do this.
I think its doing the job, but coding is poor (3 for-loops...).
- Eduard
############################################################
###### SIMPER , Clarke (1993)
########
###### V 0.3 29.04.2011 Szöcs, Eduard
########
############################################################
###############
#### Code #####
###############
simper <- function(comm, groups, select){
group.a <- as.matrix(comm[groups == select[1], ])
group.b <- as.matrix(comm[groups == select[2], ])
n.a <- nrow(group.a)
n.b <- nrow(group.b)
P <- ncol(comm)
me <- matrix(ncol = P)
md <- matrix(ncol = P)
contr <- matrix(ncol = P, nrow = n.a * n.b)
for(j in 1:n.b) {
for(k in 1:n.a) {
for(s in 1:P) {
md[s] <- abs(group.a[k, s] - group.b[j, s])
me[s] <- group.a[k, s] + group.b[j, s]
a <- rowSums(me)
c <- md / a
contr[(j-1)*n.a+k, ] <- md / a
}}}
av.contr <- apply(contr, 2, mean)*100
ov.av.dis <- sum(av.contr)
sdi <- apply(contr, 2, sd)
sdi.av <- sdi / av.contr
av.a <- colMeans(group.a)
av.b <- colMeans(group.b)
dat <- data.frame(av.contr, sdi, sdi.av, av.a, av.b)
dat <- dat[order(dat$av.contr, decreasing = TRUE),]
cum <- cumsum(dat$av.contr / ov.av.dis)*100
out <- data.frame(dat, cum)
out
}
###############
#### Usage ####
###############
# simper(comm, groups, select)
# Arguments :
############
# * comm : commumity data. species in columns, observations in rows
# * groups : vector containing treatment per observation
# * select : vector with length 2, indicating the two groups to compare
# Output :
##########
# * av.contr : average contribution to overall similarity
# * sdi : standard deviation of contribution
# * sdi.va : ratio mean / sd = sdi / av.contr.
# * av.a : average abundance in first group
# * av.b : average abundance in second group
# * cum : cumulative contribution
#################
#### Example ####
#################
require(vegan)
data(dune)
data(dune.env)
adonis(dune ~ Management, data=dune.env, permutations=99)
levels(dune.env$Management)
simper(dune, dune.env$Management, c("BF", "SF"))
Am 29.04.2011 06:34, schrieb Kari Lintulaakso:
> Dear list,
>
> I'm not so familiar with ecological statistics (though I should be),
> so I'm looking for a confirmation and support to my decision to move
> on with the adonis path.
>
> I've been trying to find a method to analyse differences between
> mammalian communities and I think adonis would do the work for me.
>
> My data consists of different localities (each of assigned into a
> vegetation class) and number of species in different ecomorphological
> classes (groups) I have generated.
> There are nine vegetation classes, 52 localities, six mammalian groups
> having some 200-300 species in them.
> My idea is to use these mammalian groups as "species" in the data
> matrix which would look like this:
>
> L V G1 G2 G3 ... G6
> 1 1 0 1 2 ... 8
> 2 2 1 2 1 ... 3
> 3 2 1 3 2 ... 4
> 4 3 5 2 2 ... 9
> 5 3 5 3 3 ... 8
> 6 3 4 2 3 ... 7
> ...
> 52 9 8 8 1 ... 0
>
> L=locality id
> V = vegetation class
> G1...G6 mammalian groups, and in the matrix the counts of species in the group.
>
> First I'm trying to test if there are any differences between the
> vegetation groups. For this I'm planning to use a pairwise adonis
> comparisons between the different vegetation groups, i.e V1 vs V2, V1
> vs V3, ... V8 vs V9. From each of these comparisons I'm taking the Df,
> F, P>F etc values into a matrix so that I'm able to see the values
> later.
>
> When I get the P-values I suppose I can say that there are differences
> between the vegetation classes when the P-value is< 0.05, right?
> And if so, I need to find a way to explain which mammalian groups are
> responsible for these differences? Does anyone have a good suggestion
> for this? I've found one approach which is called SimPer (Similarity
> Percentage Analysis), but I'm not sure is it in vegan.
>
> And finally, is there any requirement, how many different data rows I
> need for one type of vegetation? In some cases I only have one which
> would mean that the within group variation is zero?
>
> Any suggestions are welcome!
> -Kari
>
> Kari Lintulaakso, M.Sc.(Biosciences)
>
> Doctoral student
> Paleontology and Paleoecology
> Department of Geosciences and Geography
> University of Helsinki
>
> * Email: kari.lintulaakso at helsinki.fi
> * Post: Department of Geology, Gustaf Hällströmin katu 2a (P.O Box
> 64), 00014 University of Helsinki
> * Web page: http://blogs.helsinki.fi/lintulaa/
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
More information about the R-sig-ecology
mailing list