2016-07-30 26 views
2

Ich bekomme einen Fehler von der MuMIn::dredge Funktion in R und weiß nicht, wie ich es lösen soll.Modelle konvergieren nicht bei Verwendung von MuMIn :: dredge

Here ist meine Daten ...

library(lme4) 
library(MuMIn) 
library(arm) 

ich ein globales Modell aufgebaut:

options(na.action = "na.fail") 
global.model<-lmer(yld.res ~ rain + brk+ act + 
    onset + wid + (1|state),data=dat,REML=FALSE) 
stdz.model <- standardize(global.model,standardize.y = FALSE) 
model.set <- dredge(stdz.model) 

ich folgende Fehlermeldung erhalten, die ich weiß nicht, warum geschieht. Zur Verdeutlichung sind yld.res Reste, die aus der linearen Regression von yld gegen für jede state erhalten werden. dredge funktioniert gut, wenn ich yld als Antwort verwende. Jede Hilfe oder Anregung wäre willkommen.

Fixed term is "(Intercept)" 
Warning messages: 
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
unable to evaluate scaled gradient 
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
Model failed to converge: degenerate Hessian with 1 negative eigenvalues 
3: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
unable to evaluate scaled gradient 
4: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
Model failed to converge: degenerate Hessian with 1 negative eigenvalues 
5: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
unable to evaluate scaled gradient 
6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
Model failed to converge: degenerate Hessian with 1 negative eigenvalues 
7: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
unable to evaluate scaled gradient 
8: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
Model failed to converge: degenerate Hessian with 1 negative eigenvalues 

Antwort

2

tl; dr Ich denke, diese Fehlalarme sind. Ich sehe in den Daten oder den Modellen nichts Fischiges. Die Wahrscheinlichkeitskurve ist am Rand des geschätzten Raums völlig flach, was die Konvergenzprüfungen erschwert (das ist ungewöhnlich, aber es ist nichts falsch daran).

Replizieren Ihr Setup:

dd <- read.csv("SOtmpdat.csv") 
library(lme4) 
library(MuMIn) 
library(arm) 
options(na.action = "na.fail") 
global.model <- lmer(yld.res ~ rain + brk+ act + onset + 
        wid + (1|state), data=dd,REML=FALSE) 
stdz.model <- standardize(global.model,standardize.y = FALSE) 
model.set <- dredge(stdz.model) 

Check-out Daten:

library(ggplot2); theme_set(theme_bw()) 
library(reshape2) 
mm <- melt(dd,id.var=c("year","state","yld.res")) 
ggplot(mm,aes(value,yld.res,colour=state))+geom_point()+ 
    facet_wrap(~variable,scale="free")+geom_smooth(method="lm") 

enter image description here

Nicht viel los hier, aber auch nichts zu bizarr aussehende.

Blick auf Koeffizienten von standardisierten Modell:

library(dotwhisker) 
dwplot(stdz.model)+geom_vline(xintercept=0,lty=2) 

enter image description here

keine großen paarweise Korrelationen zwischen den Prädiktoren:

cor(as.matrix(dd[,3:8])) 
pairs(as.matrix(dd[,3:8]),gap=0,cex=0.5) 

enter image description here

ist eines der Modelle finden lassen, die bricht :

options(warn=1) 
model.set <- dredge(stdz.model,trace=TRUE) 

Und probieren Sie es aus:

test1 <- lmer(formula = yld.res ~ z.brk + z.onset + (1 | state), 
     data = model.frame(stdz.model), 
     REML = FALSE) 

Schauen Sie genauer:

mf <- transform(model.frame(stdz.model), 
       z.onset.cat=cut_number(z.onset,4)) 
ggplot(mf, 
     aes(z.brk,yld.res, 
      colour=state))+geom_point()+ 
    facet_wrap(~z.onset.cat) 

enter image description here

Wieder nichts zu komisch aussehend.

Lassen Sie uns das Modell von Hand untersuchen: Es gibt nur einen expliziten Parameter (die Standardabweichung zwischen den Zuständen).

tt <- as.function(test1) 
tvec <- seq(0,1,length=501) 
dvec <- sapply(tvec,tt) 
par(las=1,bty="l") 
plot(tvec,dvec,type="l") 

enter image description here

sieht gut aus.

+0

Oh wow !! Vielen Dank für die ausführliche Erklärung. Ich werde es Lesezeichen setzen, nur für den Fall, dass ich es in Zukunft verwenden muss. Viele nützliche Dinge darüber, wie Modelle funktionieren. – user53020