Hi, there
I tried this post on R-help but did not generate any replies, so I thought
I might try the waters here since it's a more programming-based group.
I have written a function that will allow me to calculate the variance
components for a model II (random effects) single factor ANOVA (perhaps
this is
me re-inventing the wheel, but I handn't yet come across anything in R that
does this for me, but I'm sure people will let me know from this posting if
there are). The function takes as it's argument an object which holds the
results of an lm call. e.g.,
object1<-lm(y~x)
The function is as follows (some comments included):
comp.var.estimates<-function(object.lm)
{
anovmod<-anova(object.lm) #get the anova table for the lm
MStreat<-anovmod[1,3]; MSErr<-anovmod[2,3] #extract Mean
Squares
dataframe<- as.data.frame(object.lm[13]) #gets the data
that went into the lm
ni <- tapply(dataframe[,1], dataframe[,2], length) #number
of cases per treatment level
nisq<-ni^2
no<-(1/(length(ni)-1))*(sum(ni)-(sum(nisq)/sum(ni)))
#required to calculate variance components
s2a<-((MStreat-MSErr)/no)
stot<-s2a + MSErr
treatvar<-s2a/stot*100 #calculate variance components as
a percentage of the total
errorvar<-MSErr/stot*100
list(treat.var.comp=s2a,
err.var.comp=MSErr,
p.var.treat=treatvar, p.var.err=errorvar)
}
comp.var.estimates(object1)
I'd like to include a "warning" statement in the function that
returns something like 'function requires arguments that are objects of the
form obj<-lm
(y~x)', but I need a case to evaluate the object against in order to throw the
warning.
Any advice?
I feel like my best opportunity is after the first line into the function,
where I ask for the ANOVA table. Since this is a 2 X 5 table, presumably I
should be able to evaluate it against the size of that table? Any thoughts on
how to check that? I welcome any suggestions.
Cheers,
Mike
Michael Rennie
Ph.D. Candidate, University of Toronto at Mississauga
3359 Mississauga Rd. N.
Mississauga, ON L5L 1C6
Ph: 905-828-5452 Fax: 905-828-3792
www.utm.utoronto.ca/~w3rennie
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel