> Ken Nussear <knussear <at> mac.com> writes:
>
> > I'm running a series of mixed models using lme, and I wonder if  
> there
> > is a way to sort them by AIC prior to testing using anova
> > (lme1,lme2,lme3,....lme7) other than by hand.
>
> You can try something like the following. However, also consider  
> using dropterm or stepAIC in MASS.
>
> Dieter
>
> #---------------------
>
> library(nlme)
> fmlist = vector("list",2)
> fmlist[[1]] = lme(distance ~ age, data = Orthodont,method="ML")  
> fmlist[[2]] = lme(distance ~ age + Sex, data = Orthodont,   random  
> = ~ 1,method="ML")
> aic0 = unlist(lapply(fmlist,AIC))
> aic0 # larger first
> fmlist1 = fmlist[order(aic0)]
> unlist(lapply(fmlist1,AIC)) # smaller first

I looked at stepAIC, but wanted to specify my own models.

I have come pretty close with this

# grab all lme objects
tst1 <- ls(pat=".ml")
 > tst1
[1] "lme.T972way.ml"  "lme.T97FULL.ml"  "lme.T97NOINT.ml"  
"lme.T97NULL.ml"  "lme.T97fc.ml"    "lme.T97min.ml"
[7] "lme.T97ns.ml"

#create array of AIC for all in tst1
tst2 <- lapply(lapply(tst1,get),AIC)
 > tst2
[[1]]
[1] 507.0991

[[2]]
[1] 508.7594

[[3]]
[1] 564.8574

[[4]]
[1] 624.3053

[[5]]
[1] 502.5878

[[6]]
[1] 569.8188

[[7]]
[1] 504.8971

#sort tst1 by order of tst2
tst3 <- tst1[order(unlist(tst2))]

 > tst3
[1] "lme.T97fc.ml"    "lme.T97ns.ml"    "lme.T972way.ml"   
"lme.T97FULL.ml"  "lme.T97NOINT.ml" "lme.T97min.ml"
[7] "lme.T97NULL.ml"


The problem comes with getting the final anova statement to run.

 >anova(tst3)
Error in anova(tst3) : no applicable method for "anova"

I also tried

tst4 <- paste(toString(tst3),collapse="")

 > tst4
[1] "lme.T97fc.ml, lme.T97ns.ml, lme.T972way.ml, lme.T97FULL.ml,  
lme.T97NOINT.ml, lme.T97min.ml, lme.T97NULL.ml"
 >
 > anova(tst4)
Error in anova(tst4) : no applicable method for "anova"

Any ideas on getting the last part to work?






	[[alternative HTML version deleted]]

