## original code for reading/aggregating: ## tickdata <- read.table("Elston2001_tickdata.txt",header=TRUE, ## colClasses=c("factor","numeric","factor","numeric","factor","factor")) ## tickdata <- transform(tickdata,cHEIGHT=scale(HEIGHT,scale=FALSE)) ## for (i in names(tickdata)) { ## if (is.factor(tickdata[[i]])) { ## tickdata[[i]] <- factor(tickdata[[i]],levels=sort(as.numeric(levels(tickdata[[i]])))) ## } ## } ## summary(tickdata) ## grouseticks <- tickdata ## library(reshape) ## meantick <- rename(aggregate(TICKS~BROOD,data=tickdata,FUN=mean), ## c(TICKS="meanTICKS")) ## vartick <- rename(aggregate(TICKS~BROOD,data=tickdata,FUN=var), ## c(TICKS="varTICKS")) ## uniqtick <- unique(subset(tickdata,select=-c(INDEX,TICKS))) ## grouseticks_agg <- Reduce(merge,list(meantick,vartick,uniqtick)) ## save("grouseticks","grouseticks_agg",file="grouseticks.rda") if (.Platform$OS.type != "windows") { library(lme4) data(grouseticks) do.plots <- FALSE form <- TICKS~YEAR+HEIGHT+(1|BROOD)+(1|INDEX)+(1|LOCATION) ## fit with lme4 ## library(lme4) ## t1 <- system.time(full_mod1 <- glmer(form, family="poisson",data=grouseticks)) ## c1 <- c(fixef(full_mod1),unlist(VarCorr(full_mod1)), logLik=logLik(full_mod1),time=t1["elapsed"]) ## allcoefs1 <- c(unlist(full_mod1@ST),fixef(full_mod1)) ## detach("package:lme4") ## lme4 summary results: t1 <- structure(c(1.288, 0.048, 1.36, 0, 0), class = "proc_time", .Names = c("user.self", "sys.self", "elapsed", "user.child", "sys.child")) c1 <- structure(c(11.3559080756861, 1.1804105508475, -0.978704335712111, -0.0237607330254979, 0.293232458048324, 0.562551624933584, 0.279548178949372, -424.771990224991, 1.36), .Names = c("(Intercept)", "YEAR96", "YEAR97", "HEIGHT", "INDEX", "BROOD", "LOCATION", "logLik", "time.elapsed" )) allcoefs1 <- structure(c(0.541509425632023, 0.750034415832756, 0.528723159081737, 11.3559080756861, 1.1804105508475, -0.978704335712111, -0.0237607330254979 ), .Names = c("", "", "", "(Intercept)", "YEAR96", "YEAR97", "HEIGHT")) pars <- function(x) unlist(getME(x,c("theta","beta"))) if (lme4:::testLevel() > 1) { t2 <- system.time(full_mod2 <- glmer(form, family="poisson",data=grouseticks)) ##>> 2 x checkConv(.. "derivs") warning: 1. failed to conv. 2. nearly unidentifiable c2 <- c(fixef(full_mod2), unlist(VarCorr(full_mod2)), logLik = logLik(full_mod2), time= t2["elapsed"]) ## refit ## FIXME: eventually would like to get _exactly_ identical answers on refit() full_mod3 <- refit(full_mod2, grouseticks$TICKS) print( all.equal(pars(full_mod2), pars(full_mod3), tolerance=0))# -> 1.2e-5 stopifnot(all.equal(pars(full_mod2), pars(full_mod3), tolerance=8e-5)) } ## deviance function ## FIXME: does compDev do _anything_ any more? mm <- glmer(form, family="poisson", data=grouseticks, devFunOnly=TRUE) mm2 <- glmer(form, family="poisson", data=grouseticks, devFunOnly=TRUE,control=glmerControl(compDev=TRUE)) stopifnot(all.equal(1780.5427072, mm(allcoefs1), tol = 1e-7)) } ## skip on windows (for speed)