[R-sig-ME] prevent for-loop from stopping after an lmer warning/error

Aleksander Adam Glowka aglowka at stanford.edu
Thu Mar 22 20:18:29 CET 2018


Hi all,

I'm fitting mixed-effects regression models to bootstrap samples in a for-loop and writing a subset of model results to file. I diverted the stream from the console to a text file so I can keep track any warnings or errors. For some samples the model does not converge and a warning is issued. For other samples there is an error in calculation of the Satterthwaite's approximation. The problem is that my loop iteration is aborted for some reason after a warning is issued. Do you know why this might be happening and how I can make the loops continue to the next iteration after an error or a warning?

Below I've included an abridged version of my script and the warnings and errors I get. I'd be grateful for any advice you may have!

Thank you,

Aleksander Glowka
PhD Candidate
Department of Linguistics
Stanford University

#packages
require(lme4)
require(lmerTest)

setwd(path0)
source("lmer-data-extract-boot-fnc.R") #selected lmer results extractor

# divert messages stream to file, so you can log warnings and errors
options(warn=1)
wngs=file("warnings_log.txt",open="w+",blocking=TRUE)
sink(wngs,type="message")

for(iter in 1:2000){

  setwd(path1)

  data = read.csv(paste("sample", iter,".csv", sep=""), header=TRUE)

  #log model number to file so that any potential warnings/errors appear underneath
  message(paste("holistic model #", iter, sep=""))

  mod = lmer(y ~ x1 +
            x2 +
            x3 +
            (1|ranef1) +
            (x1|ranef2),
            data = data,
            REML = FALSE)

  #write model results to file
  setwd(path2)
  write.csv(lmer.data.extract.boot(mod, iter), paste("mod.fixef_", iter, ".csv", sep=""), row.names=TRUE) #fixed effects
  write.csv(lmer.ranef.data.extract.boot(holistic.mod, iter), paste("mod.ranef_", iter, ".csv", sep=""), row.names=FALSE)
  write.csv(lmer.optim.data.extract.boot(holistic.mod, iter), paste("mod.optim_", iter, ".csv", sep=""), row.names=TRUE)
  write.csv(as.data.frame(holistic.mod at optinfo$derivs$Hessian), paste("mod.hessian_", iter, ".csv", sep=""))
  write.csv(summary(holistic.mod)$resid, paste("mod.resid_", iter, ".csv", sep=""), row.names=FALSE)
  write(unlist(holistic.mod at optinfo$conv$lme4$messages), paste("mod.warnings_", iter, ".txt", sep=""))

  cat("Iteration", iter, "completed!\n")

}

#close log file & restore warnings stream to console
closeAllConnections()

Errors:

Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  unable to evaluate scaled gradient
Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

Error in calculation of the Satterthwaite's approximation. The output of lme4 package is returned
summary from lme4 is returned
some computational error has occurred in lmerTest




	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list