[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