Hi, I was very much hoping someone could help me with the following. I am trying to convert some SAS NLMIXED code to NLME in R (v.2.1), but I get an error message. Does anyone have any suggestions? I think my error is with the random effect "u" which seems to be parametrized differently in the SAS code. In case it's helpful, what I am essentially trying to do is estimate parameters using ML in a measurement error setting with some validation data (indicated by vs.flag). Any help would be greatly appreciated.I apologize for the clumsiness of the R code. Many thanks in advance. Sincerely, Loki ################################################################# SAS Code: proc nlmixed data=repdat parms b0 -3 b1 -.135 a0 3 a1 4 sigsq 0.25; if vs.flag = 1 then do; eta1 = b0 + b1*lnbldT; llbin = anybc.cens.ind*eta1 - log(1+exp(eta1)); eta2 = a0 + a1*lnndsTs; llnorm = -1/(2*sigsq)*(lnbldT - eta2)**2 - .5*log(sigsq); ll = llbin + llnorm; end; else do; eta2 = a0 + a1*lnndsTs; eta1 = b0 + b1*eta2 + u; llbin = anybc.cens.ind*eta1 - log(1+exp(eta1)); ll = llbin; end; sigma2 = sigmasq*b1**2 /*variance of random effect; model anybc.cens.indic ~ general(ll); random u ~ normal(0,sigma2) subject = CaseID; */; run; #################################################################### R Code with error message: me.km.nlme <- nlme(model = anybc.cens.indic ~ vs.flag*((anybc.cens.indic*(b0+b1*lnbldT) - log(1 + exp(b0+b1*lnbldT))) + (((-1/(2*sigsq))*(lnbldT -a0 -a1*lnndsTs)^2) - 0.5*log(sigsq))) + (1-vs.flag)*((anybc.cens.indic*(b0+b1*(a0 + a1*lnndsTs + u))) - log(1 + exp(b0+b1*(a0 + a1*lnndsTs + u)))), fixed = list(a0~1,a1~1,b0~1,b1~1,sigsq~1),na.action=na.omit, data=rc.df, method="ML", random=u~1|CaseID, start = c(a0=0, a1=1, b0=-3, b1 = -0.135, sigsq = 0.25)) + Error: Singularity in backsolve at level 0, block 1 In addition: There were 16 warnings (use warnings() to see them)> > > > warnings()Warning messages: 1: Singular precision matrix in level -1, block 5 2: Singular precision matrix in level -1, block 5 3: Singular precision matrix in level -1, block 5 4: NA/Inf replaced by maximum positive value 5: Singular precision matrix in level -1, block 5 6: Singular precision matrix in level -1, block 5 7: Singular precision matrix in level -1, block 5 8: NA/Inf replaced by maximum positive value 9: NaNs produced in: log(x) 10: NaNs produced in: log(x) 11: NaNs produced in: log(x) 12: NaNs produced in: log(x) 13: NaNs produced in: log(x) 14: NaNs produced in: log(x) 15: NaNs produced in: log(x) 16: NaNs produced in: log(x)>##################################################################### Loki Natarajan Associate Professor of Biostatistics Moores UCSD Cancer Center 3855 Health Sciences Drive #0901 La Jolla, CA 92093-0901 phone: 858 822 4763 Fax: 858 822 6897

Have you tried fitting the model with "verbose=TRUE" and possibly also "control=nlmeControl(msVerbose=TRUE)"? Also, have you consulted Pinheiro and Bates (2000) Mixed-Effects Models in S and S-PLUS (Springer)? That book contains several examples of use of lme and nlme. R script files named "ch01.R", "ch02.R", ..., "ch06.R", "ch08.R" can be found in "~R\library\nlme\scripts", where "~R\" is your R installation directory. If you work through these files one line at a time until you think you understand it all, you might get an answer to your question. If this fails to produce answer your question, I would try to find a much simpler and self contained example that still returns your error message. I might do this by removing terms from the model, removing parameters from the model, etc., trying to write a very few lines of code that would produce a data set that will still generate the error message you see. Hope this helps. Spencer Graves p.s. Is it feasible for you to upgrade to R2.3.1? R2.1 is by now rather old. Loki Natarajan wrote:> Hi, > > I was very much hoping someone could help me with the following. > I am trying to convert some SAS NLMIXED code to NLME in R (v.2.1), > but I get an error message. Does anyone have any suggestions? > I think my error is with the random effect "u" which seems to be > parametrized differently in the SAS code. In case it's helpful, > what I am essentially trying to do is estimate parameters using ML in a > measurement error setting with some validation data (indicated by > vs.flag). Any help would be greatly appreciated.I apologize for the > clumsiness of the R code. > Many thanks in advance. > > Sincerely, > Loki > ################################################################# > SAS Code: > > proc nlmixed data=repdat > parms b0 -3 b1 -.135 a0 3 a1 4 sigsq 0.25; > > if vs.flag = 1 then do; > eta1 = b0 + b1*lnbldT; > llbin = anybc.cens.ind*eta1 - log(1+exp(eta1)); > eta2 = a0 + a1*lnndsTs; > llnorm = -1/(2*sigsq)*(lnbldT - eta2)**2 - .5*log(sigsq); > ll = llbin + llnorm; > end; > > else do; > eta2 = a0 + a1*lnndsTs; > eta1 = b0 + b1*eta2 + u; > llbin = anybc.cens.ind*eta1 - log(1+exp(eta1)); > ll = llbin; > end; > > sigma2 = sigmasq*b1**2 /*variance of random effect; > model anybc.cens.indic ~ general(ll); > random u ~ normal(0,sigma2) subject = CaseID; */; > run; > #################################################################### > R Code with error message: > > me.km.nlme <- nlme(model = anybc.cens.indic ~ > vs.flag*((anybc.cens.indic*(b0+b1*lnbldT) - log(1 + exp(b0+b1*lnbldT))) + > (((-1/(2*sigsq))*(lnbldT -a0 -a1*lnndsTs)^2) - 0.5*log(sigsq))) + > (1-vs.flag)*((anybc.cens.indic*(b0+b1*(a0 + a1*lnndsTs + u))) - log(1 + > exp(b0+b1*(a0 + a1*lnndsTs + u)))), fixed = > list(a0~1,a1~1,b0~1,b1~1,sigsq~1),na.action=na.omit, data=rc.df, > method="ML", random=u~1|CaseID, > start = c(a0=0, a1=1, b0=-3, b1 = -0.135, sigsq = 0.25)) > > + Error: Singularity in backsolve at level 0, block 1 > In addition: There were 16 warnings (use warnings() to see them) >> warnings() > Warning messages: > 1: Singular precision matrix in level -1, block 5 > 2: Singular precision matrix in level -1, block 5 > 3: Singular precision matrix in level -1, block 5 > 4: NA/Inf replaced by maximum positive value > 5: Singular precision matrix in level -1, block 5 > 6: Singular precision matrix in level -1, block 5 > 7: Singular precision matrix in level -1, block 5 > 8: NA/Inf replaced by maximum positive value > 9: NaNs produced in: log(x) > 10: NaNs produced in: log(x) > 11: NaNs produced in: log(x) > 12: NaNs produced in: log(x) > 13: NaNs produced in: log(x) > 14: NaNs produced in: log(x) > 15: NaNs produced in: log(x) > 16: NaNs produced in: log(x) > ##################################################################### > > > Loki Natarajan > Associate Professor of Biostatistics > Moores UCSD Cancer Center > 3855 Health Sciences Drive #0901 > La Jolla, CA 92093-0901 > > > phone: 858 822 4763 > Fax: 858 822 6897 > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code.