[R] Trouble phrasing an R command that will run the model i need (ANOVA, nested)

David Elliott dalelemu at hotmail.com
Fri Mar 24 08:29:59 CET 2006


I have been trying to find the appropriate R command to analyse my datasets 
according to a particular model. Unfortunately, my best attempts at doing so 
have so far not worked.

I am wondering if anybody can help me to figure out what i've been doing 
wrong, and what i need to do in order to use R correctly?

The model is an ANOVA with some crossed factors, interactions, and one 
nested factor. I have listed them here:

(Factors "foresttype" through to "experiment" are all at the same level; 
there is no nesting there, but the last factor listed is nested).

linelabel (nested within every cell)

...and these are the appropriate F-test error terms:

foresttype -> tested against foresttype:crosstype interaction,
everything else -> tested against linelabel(nested)

I expect unequal sample sizes, so i have been trying to do it using Type III 
sums-of-squares. Now, that's the model that i'm trying to run in R. My 
attempts so far have looked like this:

>prod.anova <- aov(yproductivity ~ 

After looking at the results of this model, my plan was to redo the model 
with the foresttype:crosstype interaction as the Error() term, to get the 
right F-test for "foresttype". Like so:

>prod2.anova <- aov(yproductivity ~ 

To produce an output, i have used the Anova() command, and specified Type 

>Anova(prod.anova, type=c("III"))

Unfortunately, i have run into a couple of problems with this approach. The 
first is that using the "Anova()" command produces this error message:

Error in Anova(prod.anova, type = c("III")) :
        no applicable method for "Anova"

I have looked through the manual (and various guides to using R for ANOVA), 
but haven't found anything that refers to it, let alone explains it. It 
looks (to me) like an extremely generic error message, which makes me think 
i am simply not using the "Anova()" command in the right way. But if the 
"Anova()" command is not appropriate, then i don't know how else to get the 
output that i want (and what else would allow me to specify Type III SS).

That's my first problem; here's a second one: As soon as i enter that second 

>prod2.anova <- aov(yproductivity ~ 

, i get this error message:

Warning message:
Error() model is singular in: aov(yproductivity ~ foresttype + region + 
foresttype:region +

It looks to me as if R is saying that i have constructed the formula 
incorrectly. I noticied that i had "foresttype:crosstype" listed twice in 
the one formula, so i ran it again with "foresttype:crosstype" ommitted from 
the formula itself, but still in the "Error()" term. That produces the same 
error message as before.

I played around with it a bit, and found that i seemed to get this Error 
message when an interaction term is present in the "Error()" part of the 
formula. But i don't know why this should be, as i all the tutorials i have 
read have led me to beleive that R has no problem with an interaction term 
being used with the "Error()" command. And, aside from that, if i can't use 
an interaction term in "Error()", then how else can i obtain my F-test for 

I sought help for this, and it was suggested to me that i give up trying to 
use "aov()" at all, and do it all using the "lme()" command in the lme4 

I downloaded "lme4", and read over this page: 
http://www.stat.ucl.ac.be/ISdidactique/Rhelp/library/lme4/html/lme.html , to 
try and get an idea of how to construct my "lme()" command.

My first try was:

>lme(yproductivity ~ foresttype+crosstype, data=productivity, yproductivity 
>~ region+crosstype+experiment)

(I excluded interactions and "Error()", as i wanted to just get a feel for 
what general formula worked before i made things more complex. My tactic was 
to write out the formula i'd used earlier, separating it into a formula 
containing only fixed factors, and a formula containing only random factors, 
in accordance with the page referenced above.) Unfortunately, doing so 
results in the error message:

Error: couldn't find function "lme"

So i couldn't even get far enough to see wether the formula i had 
constructed was laid out in a valid way.

I am really lost at this stage. I suspect that i am using all the wrong 
commands, in the wrong way. But i don't know how else to run this model; the 
commands i've tried have been my best attempts.

If anyone can provide any guidance, i would really appreciate it.

- David Elliott

More information about the R-help mailing list