dput voor gegevens,
kopiëren van https://pastebin.com/1f7VuBkx(te groot om hier op te nemen)
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 ...
head(Data)
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
wanneer ik de volgende code uitvoer zonder “wait”, werkt het perfect, maar wanneer ik het probeer uit te voeren met “wait” in het model, geeft het het singulariteitsprobleem.
LME_01<-lme(data_mTBS ~ Adhesive*Approach*Aging*wait, na.action=na.exclude,data = Data, random = ~ 1|data_name);
Fout in MEEM(object, conLin, control$niterEM) : Singulariteit in
backsolve op niveau 0, blok 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))
Bij voorbaat dank.
Antwoord 1, autoriteit 100%
tl;drzoals @HongOoi je vertelt, wait
en Adhesive
zijn verward in je model. lme
is een beetje dommer/koppiger dan veel van de andere modelleringsfuncties in R, die je ofwel expliciet zullen waarschuwen dat je vaste effecten hebt verstoord of sommige ervan automatisch voor je laten vallen.
Het is een beetje makkelijker om dit te zien als je de gegevens plot:
## source("SO50505290_data.txt")
library(ggplot2)
ggplot(dd,aes(Adhesive,data_mTBS,
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")
Dit laat zien dat weten dat wait=="no"
hetzelfde is als weten dat Adhesive=="C-UBq"
.
Het zou waarschijnlijk logischer zijn om een back-up te maken en na te denken over de vragen die u stelt, maar als u dit doet met lme4::lmer
, zal het u vertellen
modelmatrix met vast effect heeft een onvoldoende rangorde, dus 16 kolommen / coëfficiënten vallen weg
library(lme4)
LME_02<-lmer(data_mTBS ~ Adhesive*Approach*Aging*wait+
(1|data_name),
na.action=na.exclude,data = dd)