Just to clean up this thread.....

Yes, nested.npmanova can accept class "dist" unifrac distance matrices.  
Therefore, Steve's solution appears to work perfectly for me.  Here is the link:
https://mailman.stat.ethz.ch/pipermail/r-sig-ecology/2013-February/003595.html

Thanks for the help!
Erin






On Mar 10, 2013, at 4:09 PM, Erin Nuccio wrote:

> Hi again,
> 
> OK, figuring out if it's possible to use Unifrac with nested.npmanova may be 
> necessary....
> 
> I just realized my test comparing nested.npmanova and adonis on the same 
> model had no strata for adonis.  When I add the strata GrasslandPlot to 
> adonis, my p values are equal to 1.  So adonis with no strata gives me 
> similar values to nested.npmanova for the following model:  community_data ~ 
> Grassland + GrasslandPlot.
> 
> So, (community_data ~ Grassland + GrasslandPlot) approximates the correct 
> statistics, but since this ignores all strata, I'm not sure if it's 
> justified.  Thoughts?
> 
> Thanks,
> Erin
> 
> 
> 
> 
> On Mar 10, 2013, at 3:42 PM, Erin Nuccio wrote:
> 
>> Thanks Steve, that is helpful.
>> 
>> However, I've run into a small problem with nested.npmanova.  It appears 
>> that I cannot supply my own distance matrix, and need to supply the raw 
>> species data.  I am using Unifrac distances, which is not an option for 
>> vegdist.  Anyone know if there is a workaround here?
>> 
>> I did compare nested.npmanova to adonis with bray distance using the same 
>> model (community_data ~ Grassland + GrasslandPlot), and it looks like the F 
>> values are similar for Grassland (F values: 3.6 vs. 3.3), and the same for 
>> GrasslandPlot.  The R2 values seem to stay the same no matter what I do in 
>> adonis, and the p values are all ~ 0.001.
>> 
>> So, in case there is no way to use Unifrac distances with nested.npmanova, 
>> my backup plan would be to perform two adonis functions, and use the second 
>> function to get the approximate F value for Grassland and correct F value 
>> for GrasslandPlot:
>> adonis(community_data ~ Treatment*Grassland + GrasslandPlot, 
>> strata=GrasslandPlot)
>> adonis(community_data ~ Grassland + GrasslandPlot, strata=GrasslandPlot)
>> 
>> Does this seem reasonable?  Of course, the best thing would be to use the 
>> Unifrac distances with nested.npmanova if it's possible.
>> 
>> Thank you,
>> Erin
>> 
>> 
>> 
>> 
>> 
>> On Mar 10, 2013, at 8:17 AM, JOHN S BREWER wrote:
>> 
>>> Erin,
>>> 
>>> Please check the February 25 post I made called "Permanova with nested 
>>> data." It explains how to test whole plot and split plot effects correctly 
>>> in adonis. But to answer your question, even if you treat Grassland as a 
>>> fixed-plot effect (which seems perfectly reasonable), Grassland is a 
>>> whole-plot effect. Using the model formula given and strata, adonis uses 
>>> the split-plot error term (i.e., the residual error term) to test all 
>>> effects. That's wrong because Grassland needs to be tested with the 
>>> whole-plot error term. In the post I referred to, I describe how you can do 
>>> a separate test for the whole plot using the BiodiversityR package and the 
>>> nested.npmanova function. In this case, you would only include Grassland 
>>> and GrasslandPlot as terms in the model. It's just doing a two-way nested 
>>> manova. The whole-plot effect of Grassland will be tested correctly using 
>>> the GrasslandPlot term. GrasslandPlot will be tested with the residual 
>>> error term, which will be wrong, but you ca!
 n ignore that. I've tried it with my own data and it works. One cautionary 
note. See the posts by Jari Oksanen and others about the versions of 
BiodiversityR and R used. 
>>> 
>>> Hope this helps
>>> 
>>> Steve
>>> ________________________________________
>>> From: Erin Nuccio [enuc...@gmail.com]
>>> Sent: Saturday, March 09, 2013 9:09 PM
>>> To: JOHN S BREWER
>>> Cc: r-sig-ecology@r-project.org
>>> Subject: Re: [R-sig-eco] Adonis and Random Effects
>>> 
>>> Hi Steve and R list,
>>> 
>>> I was hoping you could clarify something you mentioned in previous post.
>>> 
>>> A quick recap...  I have a split-plot design where I determined the 
>>> microbial communities at 3 grasslands (see post script for design).  I am 
>>> trying quantify the how much of my community can be explained by Treatment 
>>> or Grassland effect.  After talking with a statistician, it seems like 
>>> treating Grassland as a Fixed effect would be reasonable (because I have 
>>> such a small number of grasslands).
>>> 
>>> You mentioned that if I treat Grassland as a Fixed effect, and use the 
>>> following formula, the Grassland effect would not be tested correctly:
>>> 
>>> adonis(formula = community_distance_matrix ~ Treatment*Grassland + 
>>> GrasslandPlot, strata = GrasslandPlot)
>>> 
>>> Why is this?  Is there any way to remedy this?
>>> 
>>> Thanks for your feedback,
>>> Erin
>>> 
>>> 
>>> Experimental design:
>>> 4 split plots * 2 Treatments * 3 Grasslands = 24 observations
>>> Treatment: 2 levels (each within 1 split plot)
>>> Grassland: 3 levels
>>> GrasslandPlot: 12 levels (4 split plots nested in 3 Grasslands)
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Feb 4, 2013, at 6:22 AM, Steve Brewer wrote:
>>> 
>>>> Erin,
>>>> 
>>>> There have been a lot of similar queries (e.g., repeated measures, nested
>>>> permanova). Jari can correct me if I am wrong, but as far as I know, no
>>>> one has developed a way to define multiple error terms in adonis.
>>>> 
>>>> 
>>>> You can use adonis, however, to get the split-plot effects. If you want to
>>>> make a grassland a random effect, use the following statement
>>>> 
>>>> adonis(formula = community_distance_matrix ~ Treatment + Grassland +
>>>> GrasslandPlot, strata = GrasslandPlot)
>>>> 
>>>> 
>>>> The treatment effect will be correct because the residual error term
>>>> (which is equivalent to treatment x GrasslandPlot interaction nested
>>>> within Grassland) is the correct error term. The Grassland effect,
>>>> however, will not be tested correctly because it is using the residual
>>>> error term when it should be using GrasslandPLot as the error term. You
>>>> can determine what the F stat for Grassland should be, however, using the
>>>> Ms Grassland and MS GrasslandPlot from the anova table to construct the F
>>>> test. You just won't get a p-value for the test.
>>>> 
>>>> If you want to treat Grassland as a fixed effect, the model is similar but
>>>> defines the interaction
>>>> 
>>>> adonis(formula = community_distance_matrix ~ Treatment*Grassland +
>>>> GrasslandPlot, strata = GrasslandPlot)
>>>> 
>>>> 
>>>> In this case, the treatment x grassland interaction will be tested
>>>> correctly, as will the treatment effect, but not the Grassland effect.
>>>> 
>>>> Unfortunately, you cannot just take averages of abundances across the
>>>> treatment and control in each plot and then do a separate analysis of
>>>> Grassland and GrasslandPLot (unless you're using Euclidean distances). I
>>>> suspect you're not using Euclidean distances.
>>>> 
>>>> Hope this helps some.
>>>> 
>>>> Good luck,
>>>> Steve
>>>> 
>>>> 
>>>> J. Stephen Brewer
>>>> Professor
>>>> Department of Biology
>>>> PO Box 1848
>>>> University of Mississippi
>>>> University, Mississippi 38677-1848
>>>> Brewer web page - http://home.olemiss.edu/~jbrewer/
>>>> FAX - 662-915-5144
>>>> Phone - 662-915-1077
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On 2/4/13 1:14 AM, "Erin Nuccio" <enuc...@gmail.com> wrote:
>>>> 
>>>>> Hello List,
>>>>> 
>>>>> Is adonis capable of modeling random effects?  I'm analyzing the impact
>>>>> of a treatment on the microbial community in a split-plot design (2
>>>>> treatments per plot, 4 plots per grassland, 3 grasslands total). I would
>>>>> like to quantify how much of the variance is due to the Treatment versus
>>>>> the Grassland.  It seems like Grassland should be a random effect, since
>>>>> there are thousands of grasslands, and I'm only looking at 3.
>>>>> 
>>>>> Thanks for your help,
>>>>> Erin
>>>>> 
>>>>> 
>>>>> Here are my factors:
>>>>> 'data.frame':        24 obs. of  4 variables:
>>>>> $ Treatment    : Factor w/ 2 levels "T1","T2": 1 1 1 1 1 2 2 2 1 1 ...
>>>>> $ Grassland    : Factor w/ 3 levels "G1","G2","G3": 3 3 1 1 1 2 2 1 2 2
>>>>> ...
>>>>> $ Plot         : Factor w/ 4 levels "P1","P2","P3","P4": 1 2 2 3 4 1 3 2
>>>>> 1 2 ...
>>>>> $ GrasslandPlot: Factor w/ 12 levels "G1:P1","G1:P2","G1:P3"..: 9 10 2 3
>>>>> 4 5 7 2 5 6 ...
>>>>> 
>>>>> And here's the error message:
>>>>> Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
>>>>> contrasts can be applied only to factors with 2 or more levels
>>>>> In addition: Warning messages:
>>>>> 1: In Ops.factor(1, Grassland) : | not meaningful for factors
>>>>> 2: In Ops.factor(1, GrasslandPlot) : | not meaningful for factors
>>>>> 
>>>>> _______________________________________________
>>>>> 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