[R] Indexing in anova summary output of the form: summary(aov(y ~ x1, Error = (x1/x2)))
Michael D. Rennie
mrennie at utm.utoronto.ca
Thu Apr 5 20:58:35 CEST 2007
Hi, there
Sorry- I excluded some example code in the haste of my original e-mail.
Please find it included below. Note, however, that the elements in the
list in the summary output appear to be the anova tables themselves-
what I need to do is get inside the anova tables (execute the code below
to see what I mean...)
Thanks again,
Mike
#example code to illustrate my inability to get at a mean square in
anova output from
# models of the form summary(aov(y ~ x1 + Error(x1/x2)))
y<-rnorm(30,10)
x1<-rep(1:2, each=15)
x2<-rep(1:3, each=1, times=10)
dat<-data.frame(y, x1, x2)
dat
ex.aov<-aov(y ~ x1 + Error(x1/x2))
ex.sum<-summary(ex.aov)
ex.sum
#gets you the first list in the element, which is anova output for x1
caluclated with nested factor x2 in x1
ex.sum[1]
ex.sum[1]$Error #this is equivalent to...
ex.sum[[1]]
# since ex.sum is a list composed of anova tables, apparently the
element in the list
#is the anova table itself. The question is, how do you get at the
elements in each table
#(i.e., Mean Square?)
Prof Brian Ripley wrote:
> The output is of class "summary.anovalist" so (hint, hint) it is a list.
>
> Try [[ ]] to get list elements.
>
> Without a reproducible example (see the footer and the posting guide)
> it is not possible to show you working code.
>
>
> On Thu, 5 Apr 2007, Michael D. Rennie wrote:
>
>>
>> Hi, there
>>
>> I'm trying to get the value of the Mean Square from the ANOVA model
>> summary that comes from specifying the error term, and am wondering
>> if one can actually do this ( I know it's possible when using
>> anova(lm) objects and the like, but I'm having a tough time with it
>> under this framework). There does appear to be some indexing in the
>> output of this type, but perhaps not enough to obtain single values?
>> Here's what I've been able to do so far with some example code:
>>
>>> density.aov<-aov(density ~ substrate + Error(substrate/tile))
>>>
>>> anov1<-(summary(density.aov))
>>> print(anov1)
>>
>> Error: substrate
>> Df Sum Sq Mean Sq
>> substrate 2 1282.4 641.2
>>
>> Error: substrate:tile
>> Df Sum Sq Mean Sq F value Pr(>F)
>> Residuals 27 225.700 8.359 Error: Within
>> Df Sum Sq Mean Sq F value Pr(>F)
>> Residuals 60 640.00 10.67
>>> anov1[1]
>> $`Error: substrate`
>> Df Sum Sq Mean Sq
>> substrate 2 1282.4 641.2
>>
>>> anov1[2]
>> $`Error: substrate:tile`
>> Df Sum Sq Mean Sq F value Pr(>F)
>> Residuals 27 225.700 8.359 And, I can get
>>
>>> anov1[1]$Error
>> Df Sum Sq Mean Sq
>> substrate 2 1282.4 641.2
>>
>> a<-anov1[1]$Error
>>
>> and then tried to get at elements in that, trying things like
>>
>> a$Mean
>>
>> or
>>
>> a[,2]
>>
>> but all return
>>
>> Error: incorrect number of dimensions
>>
>> probably because
>>
>>> length(a)
>> [1] 1
>>
>> Does anyone have any reccomendations on how to go any further here?
>>
>> Cheers,
>>
>> Mike
>>
>>
>
--
Michael D. Rennie
Ph.D. Candidate
University of Toronto at Mississauga
3359 Missisagua Rd. N.
Mississauga, ON L5L 1C6
Ph: 905-828-5452 Fax: 905-828-3792
www.utm.utoronto.ca/~w3rennie
More information about the R-help
mailing list