Eduardo.Garcia@uv.es
2006-Jan-24 18:25 UTC
[R] fitting generalized linear models using glmmPQL
Hi, I have tried to run the following (I know it's a huge data set but I tried to perform it with a 1 GB RAM computer): library(foreign) library(MASS) library(nlme) datos<-read.spss(file="c:\\Documents and Settings\\Administrador\\Escritorio\\datosfin.sav",to.data.frame=TRUE) str(datos) `data.frame': 1414 obs. of 5 variables: $ POB : Factor w/ 6 levels "CHI","HOS","HYR",..: 1 1 1 1 1 1 1 1 1 1 ... $ CLON : num 1 1 1 1 1 1 1 1 2 2 ... $ TEMP : Factor w/ 2 levels "20 C","25 C": 1 1 1 1 2 2 2 2 1 1 ... $ SALINITA: Factor w/ 2 levels "15 g/l","30 g/l": 1 1 2 2 1 1 2 2 1 1 ... $ DE : num 17 0 7 1 15 28 4 14 13 16 ... - attr(*, "variable.labels")= Named chr "" "" "" "" ... ..- attr(*, "names")= chr "POB" "CLON" "TEMP" "SALINITA" ... datos$CLON<-as.factor(datos$CLON) modelo1<-glmmPQL(DE ~ (POB/CLON)*TEMP*SALINITA, data = datos, random = ~ 1|CLON, family = poisson) And I have obtained the following: Error: NA/NaN/Inf in foreign function call (arg 1) In addition: Warning message: step size truncated due to divergence This is the first time I've observed such a message and I have no idea about what does it mean. Is it possible that the process failed because of the size of the data set (180 levels of the CLON factor)? Or maybe is it a syntax problem? Thank you in advance. ******************************** Eduardo Mois??s Garc??a Roger Institut Cavanilles de Biodiversitat i Biologia Evolutiva - ICBIBE. Tel. +34963543664 Fax +34963543670
I have not seen your particular error message often enough to be confident I know what caused it: > > Error: NA/NaN/Inf in foreign function call (arg 1) > In addition: Warning message: > step size truncated due to divergence In this case, the "Warning" seems more informative to me than the actual "Error". The function "glmmPQL" is an iterative algorithm. The "warining says that "step size truncated due to divergence. This kind of warning might occur when the iteration found a long, gently sloping plateau and tried to take a giant step to get beyond it. The algorithm decided that the giant step was too large, and so tried to truncate it. Since I don't have your data, I can only guess at what might have caused it. My first guess is that you have the wrong model. Have you considered the following: modelo1a<-glmmPQL(DE ~ POB*TEMP*SALINITA, data = datos, random ~ POB|CLON, family = poisson) Putting nesting with the random effect in the 'fixed' model makes not sense to me and generates an explosion of the number of "fixed effect" parameters to be estimated. This might cause your problem all by itself. If that doesn't solve the problem, have you tried to get a separate fit for each level of "CLON" of the same fixed model, something like the following: (CLON.count <- table(datos$CLON)) n.CLON <- length(CLON.count) glm.fits <- vector(n.CLON, mode="list") for(i in 1:n.CLON) glm.fits[[i]] <- try(glm(DE ~ POB*TEMP*SALINITA, data = datos[datos$CLON==names(CLON.count[i]))) Under certain circumstances, "glmmPQL" could still return a good answer even if "glm" returned an error for every level of CLON in this loop. However, that's far from certain. Also, have you tried changing the two "*" operators to "+" in the fixed formula? This reduces the number of parameters to be estimated and might give you sensible results. If you are NOT using the latest version of R with the latest versions of MASS and nlme, please upgrade before submitting another post. And PLEASE do read the posting guide! "www.R-project.org/posting-guide.html", especialy the bit about providing a simple, self contained example. I sometimes solve problems like this in the course of trying to prepare a simple example. hope this helps. spencer graves Eduardo.Garcia at uv.es wrote:> Hi, I have tried to run the following (I know it's a huge data set but > I tried to perform it with a 1 GB RAM computer): > > library(foreign) > library(MASS) > library(nlme) > datos<-read.spss(file="c:\\Documents and > Settings\\Administrador\\Escritorio\\datosfin.sav",to.data.frame=TRUE) > str(datos) > > `data.frame': 1414 obs. of 5 variables: > $ POB : Factor w/ 6 levels "CHI","HOS","HYR",..: 1 1 1 1 1 1 1 1 > 1 1 ... > $ CLON : num 1 1 1 1 1 1 1 1 2 2 ... > $ TEMP : Factor w/ 2 levels "20 C","25 C": 1 1 1 1 2 2 2 2 1 1 ... > $ SALINITA: Factor w/ 2 levels "15 g/l","30 g/l": 1 1 2 2 1 1 2 2 1 > 1 ... > $ DE : num 17 0 7 1 15 28 4 14 13 16 ... > - attr(*, "variable.labels")= Named chr "" "" "" "" ... > ..- attr(*, "names")= chr "POB" "CLON" "TEMP" "SALINITA" ... > > datos$CLON<-as.factor(datos$CLON) > > modelo1<-glmmPQL(DE ~ (POB/CLON)*TEMP*SALINITA, data = datos, random = > ~ 1|CLON, family = poisson) > > And I have obtained the following: > > Error: NA/NaN/Inf in foreign function call (arg 1) > In addition: Warning message: > step size truncated due to divergence > > This is the first time I've observed such a message and I have no idea > about what does it mean. Is it possible that the process failed > because of the size of the data set (180 levels of the CLON factor)? > Or maybe is it a syntax problem? > > Thank you in advance. > > > ******************************** > Eduardo Mois??s Garc??a Roger > > Institut Cavanilles de Biodiversitat i Biologia > Evolutiva - ICBIBE. > Tel. +34963543664 > Fax +34963543670 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Possibly Parallel Threads
- testing for significance in random-effect factors using lmer
- Newbie question on file source
- Custom multi-line header for pair plots
- /dev/random is on your Solaris CD
- generalized mixed linear models, glmmPQL and GLMER give very different results that both do not fit the data well...