Question

# [Solved] Singularity in backsolve at level 0, block 1 in LME model

dput for data,
copy from https://pastebin.com/1f7VuBkx (too large to include here)

``````data.frame':    972 obs. of  7 variables:
\$ data_mTBS : num  20.3 22.7 0 47.8 58.7 ...
\$ data_tooth: num  1 1 1 1 1 1 1 1 1 1 ...
\$ Adhesive  : Factor w/ 4 levels "C-SE2","C-UBq",..: 2 2 2 2 2 2 2 2 2 2 ...
\$ Approach  : Factor w/ 2 levels "ER","SE": 1 1 1 1 1 1 1 1 1 1 ...
\$ Aging     : Factor w/ 2 levels "1w","6m": 1 1 1 1 1 1 2 2 2 2 ...
\$ data_name : Factor w/ 40 levels "C-SE2-1","C-SE2-10",..: 11 11 11 11 11 11 11 11 11 11 ...
\$ wait      : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...

data_mTBS data_tooth Adhesive Approach Aging data_name wait
1     20.27          1    C-UBq       ER    1w   C-UBq-1   no
2     22.73          1    C-UBq       ER    1w   C-UBq-1   no
3      0.00          1    C-UBq       ER    1w   C-UBq-1   no
4     47.79          1    C-UBq       ER    1w   C-UBq-1   no
5     58.73          1    C-UBq       ER    1w   C-UBq-1   no
6     57.02          1    C-UBq       ER    1w   C-UBq-1   no
``````

when I run the following code without “wait”, it works perfectly, but when I try run it with “wait” included in the model it gives the singularity problem.

``````LME_01<-lme(data_mTBS ~ Adhesive*Approach*Aging*wait, na.action=na.exclude,data = Data, random = ~ 1|data_name);
``````

Error in MEEM(object, conLin, control\$niterEM) : Singularity in
backsolve at level 0, block 1

``````contrast_Aging<-contrast(LME_01,a = list(Aging =c("1w"),Adhesive = levels(Data\$Adhesive),Approach = levels(Data\$Approach) ),b = list(Aging =c("6m"), Adhesive = levels(Data\$Adhesive),Approach = levels(Data\$Approach)))

c1<-as.matrix(contrast\$X)
Contrastsi2<-summary(glht(LME_01, c1))
``````

&

``````contrast_Approach<-contrast(LME_01,
a = list(Approach = c("SE"), Aging =levels(Data\$Aging)   ,Adhesive = levels(Data\$Adhesive)),
b = list(Approach = c("ER"), Aging =levels(Data\$Aging)   ,Adhesive = levels(Data\$Adhesive)))

c2<-as.matrix(contrast\$X)
Contrastsi3<-summary(glht(LME_01, c2))
``````

## Solution #1:

tl;dr as @HongOoi is telling you, `wait` and `Adhesive` are confounded in your model. `lme` is a little stupider/more stubborn than many of the other modeling functions in R, which will either warn you explicitly that you have confounded fixed effects or automatically drop some of them for you.

It’s a bit easier to see this if you plot the data:

``````## source("SO50505290_data.txt")

library(ggplot2)
fill=Aging,
alpha=Approach))+
facet_grid(.~wait,scale="free_x",space="free",
labeller=label_both)+
guides(alpha = guide_legend(override.aes = list(fill = "darkgray")))+
geom_boxplot()
ggsave("SO50505290.png")
`````` This shows you that knowing that `wait=="no"` is the same as knowing that `Adhesive=="C-UBq"`.

It would probably make more sense to back up and think about the questions you’re asking, but if you do this with `lme4::lmer` it will tell you

fixed-effect model matrix is rank deficient so dropping 16 columns / coefficients

``````library(lme4)