[R] error message in simulation

Tu Yu-Kang yukangtu at hotmail.com
Tue Oct 28 16:28:18 CET 2003


Dear R-users,

I am a dentist (so forgive me if my question looks stupid) and came across 
a problem when I did simulations to compare a few single level and two 
level regressions.

The simulations were interrupted and an error message came out like 'Error 
in MEestimate(lmeSt, grps) : Singularity in backsolve at level 0, block 1'.

My collegue suggested that this might be due to my codes was not efficient 
and ran out of memory.  If this is the reason, could you please help me 
improve my codes writing.

However, as I slightly changed the parameters, it ran well.  So I suspect 
memory is problem.

I use R 1.8.0 and Windows XP professional.  My computer has a Pentium 4 2.4 
with 512 MB memory.

Thanks in advance.

best regards,

Yu-Kang Tu

Clinical Research Fellow
Leeds Dental Institute
University of Leeds

## change scores simulation
close.screen(all=TRUE)
split.screen(c(3,3))
nitns<-10000
nsims<-100
r<-0.1
param1<-c(1:nitns)
param2<-c(1:nitns)
param3<-c(1:nitns)
param4<-c(1:nitns)
param5<-c(1:nitns)
param6<-c(1:nitns)
param7<-c(1:nitns)
param8<-c(1:nitns)
param9<-c(1:nitns)
param10<-c(1:nitns)
param11<-c(1:nitns)
param12<-c(1:nitns)
param13<-c(1:nitns)
param14<-c(1:nitns)
for(itn in 1:nitns){
g<-rbinom(nsims,1,0.5)
b<-rnorm(nsims,0,1)*10
rn<-rnorm(nsims,0,1)*10
a<-b*r+rn*(1-r^2)^0.5
a<-round(a)+50
a<-a-g*5
b<-round(b)+50
abs.2<-function(x) ifelse(x<1,1,x)
b<-abs.2(b)
c<-b-a
p<-c/b
lm1<-lm(a~g)
lm2<-lm(c~g)
lm3<-lm(p~g)
lm4<-lm(a~b+g)
gr<-c(g,g)
occasion<-rep(0:1,c(nsims,nsims))
occ<-occasion-0.5
ppd<-c(b,a)
h<-rep(0,nsims)
mb<-mean(b)
bppd<-b-mb
bappd<-c(h,bppd)
occgr<-occ*gr
subject<-c(1:nsims)
sub<-c(subject,subject)
library(nlme)
lm5<-lme(ppd~occ+gr+occgr,random=~1|sub)
lm5f<-fixed.effects(lm5)
lm5c<-as.matrix(lm5f)
lm5a<-anova(lm5)
lm6<-lme(ppd~occ+gr+occgr,random=~1|sub,method="ML")
lm6f<-fixed.effects(lm6)
lm6c<-as.matrix(lm6f)
lm6a<-anova(lm6)
lm7<-lme(ppd~occ+gr+occgr+bappd,random=~1|sub,method="ML")
lm7f<-fixed.effects(lm7)
lm7c<-as.matrix(lm7f)
lm7a<-anova(lm7)
param1[itn]<-coef(summary(lm1))[2,1]
param2[itn]<-coef(summary(lm2))[2,1]
param3[itn]<-coef(summary(lm3))[2,1]
param4[itn]<-coef(summary(lm4))[3,1]
param5[itn]<-lm5c[4,1]
param6[itn]<-lm6c[4,1]
param7[itn]<-lm7c[4,1]
param8[itn]<-coef(summary(lm1))[2,4]
param9[itn]<-coef(summary(lm2))[2,4]
param10[itn]<-coef(summary(lm3))[2,4]
param11[itn]<-coef(summary(lm4))[3,4]
param12[itn]<-lm5a[4,4]
param13[itn]<-lm6a[4,4]
param14[itn]<-lm7a[4,4]
}
#the error message came out here.
#But if I change some of the variables to:
b<-rnorm(nsims,0,1)*2
rn<-rnorm(nsims,0,1)*2
a<-b*r+rn*(1-r^2)^0.5
a<-round(a)+7
a<-a-g*2
b<-round(b)+9
abs.1<-function(x) ifelse(x<5,5,x)
b<-abs.1(b)
abs.2<-function(x) ifelse(x<1,1,x)
a<-abs.2(a)

There is no poblem to complete the simulations.

_________________________________________________________________
²{¦b´N¤W MSN ¥xÆWºô¯¸¡G»P¿ËªB¦n¤Íºò±KÁpô¡A§Y®É´x´¤·s»D¡B°]¸g¡B®T¼Öªº³Ì·s°T
®§ http://msn.com.tw




More information about the R-help mailing list