gavin,

sorry - of course it should be permute.strata=F, permuting within individual sites!
but despite of this the code should work, doesn't it?

thanks,
kay



Gavin Simpson schrieb:
On Wed, 2010-11-10 at 23:33 +0100, Kay Cecil Cichini wrote:
hi eduard,

i faced similar problems recently and came to the below solution.
i only try to address the pseudoreplication with an appropiate permutation scheme.
when it comes to testing the interactions, things may get more complicated.

the code is in no way approven of, but at least it maybe good enough for a starter.

best,
kay

Hi Kay,

I don't think you have this right.


If you have measured repeatedly, say 5 times, on the same 10
individuals, or if you have ten fields and you take 5 quadrats from
each, you need to permute *within* the individuals/fields, not permute
the individuals/fields which is what permute.strata does. permute.strata
would be useful in evaluating factors that vary at the block
(individuals/fields) level, not at the sample levels.

From what Eduard and you describe, the code you show is not the correct
permutation. But I may have misunderstood your intention.

Also, be careful with permuted.index2 - there are reasons why it hasn't
been integrated (design goals changed and we felt it would work best in
a separate package that others could draw upon without loading all of
vegan) and the code has festered a bit and may contain bugs - buyer
beware!

G

library(vegan)

### species matrix with 5 sp.
### one env.variable
### a factor denoting blocks of repeated measurments

sp<-matrix(runif(24*3*5,0,100),24*3,5)
env<-rnorm(24*3,10,2)
rep.mes<-gl(24,3)

### NMDS:
sol<-metaMDS(sp,trymax=5)

fit<-envfit(sol~env)
plot(sol)
plot(fit)

### testing code for appropiate randomization,
### permuting blocks of 3 as a whole:
permuted.index2(nrow(sp),permControl(strata = rep.mes,permute.strata=T))

correctly, this should say:
### testing code for appropiate randomization,
### permuting within sites:
permuted.index2(nrow(sp),permControl(strata = rep.mes))

B=4999

### setting up frame for population of r2 values:
pop<-rep(NA,B+1)
pop[1]<-fit$vectors$r


and:
### loop:
for(i in 2:(B+1)){
fit.rand<-envfit(sol~env[permuted.index2(nrow(sp),
                          permControl(strata = rep.mes))])
           pop[i]<-fit.rand$vectors$r
}

### p-value:
>> print(pval<-sum(pop>pop[1])/B+1)

here a bracket was missing:
print(pval<-sum(pop>pop[1])/(B+1))


### compare to anti-conservative p-value from envfit(),
### not restricting permutations:

envfit(sol~env,perm=B)


Zitat von Eduard Szöcs <szoe8...@uni-landau.de>:

Thanks, that helped.

permuted.index2() generates these types of permutations. But envfit() does not use this yet. What if I modify vectorfit() (used by envfit() ) in such a way that it uses permuted.index2() instead of permuted.index()?


Eduard Szöcs





Am 08.11.2010 22:01, schrieb Gavin Simpson:
On Mon, 2010-11-08 at 15:39 +0100, Eduard Szöcs wrote:
Hi listers,

I have species and environmental data for 24 sites that were sampled
thrice. If I want to analyze the data with NMDS I could run metaMDS on
the whole dataset (24 sites x 3 times = 72) and then fit environmental
data, but this would be some kind of pseudoreplication given that the
samplings are not independent and the gradients may be overestimated,
wouldn`t it?

For environmental data a factor could be included for the sampling
dates - but this would not be possible for species data.

Is there an elegant way either to aggregate data before ordination or
to conduct sth. like a repeated measures NMDS?

Thank you in advance,
Eduard Szöcs
Depends on how you want to fit the env data - the pseudo-replication
isn't relevant o the nMDS. If you are doing it via function `envfit()`,
then look at argument `'strata'` which should, in your case, be set to a
factor with 24 levels. This won't be perfect because your data are a
timeseries and, strictly, one should permute them whilst maintaining
their ordering in time, but as yet we don't have these types of
permutations hooked into vegan.

If you are doing the fitting some other way you'll need to include
"site" as a fixed effect factor to account for the within site
correlation.

You don't need to worry about the species data and accounting for
sampling interval. You aren't testing the nMDS "axes" or anything like
that, and all the species info has been reduced to dissimilarities and
thence to a set of nMDS coordinates. You need to account for the pseudo
rep at the environmental modelling level, not the species level.

HTH

G

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology


_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

Reply via email to