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)) > > B=4999 > > ### setting up frame for population of r2 values: > pop<-rep(NA,B+1) > pop[1]<-fit$vectors$r > > ### loop: > for(i in 2:(B+1)){ > fit.rand<-envfit(sol~env[permuted.index2(nrow(sp), > permControl(strata = rep.mes,permute.strata=T))]) > pop[i]<-fit.rand$vectors$r > } > > ### p-value: > 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 -- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% _______________________________________________ R-sig-ecology mailing list R-sig-ecology@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-ecology