2

Rの関数でエラーが発生しましたが、MuMIn::dredge解決方法がわかりません。

これが私のデータです...

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

私はグローバルモデルを構築しました:

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)

原因がわからない次のエラーが表示されます。明確にするために、はfor eachに対するyld.res線形回帰から得られる残差です。応答として使用すると正常に動作します。どんな助けや提案もいただければ幸いです。 yldyearstatedredgeyld

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
4

1 に答える 1

4

tl;drこれらは誤検知だと思います。データやモデルに怪しいものは何もありません。尤度曲線は、推定された空間の端で完全に平坦であり、収束チェックを台無しにしています (これは異常ですが、何も問題はありません)。

セットアップの複製:

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)

データをチェックアウト:

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")

ここに画像の説明を入力

ここではあまり進んでいませんが、奇妙に見えることもありません。

標準化されたモデルの係数を見てください。

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

ここに画像の説明を入力

予測変数間に巨大なペアワイズ相関はありません:

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

ここに画像の説明を入力

壊れるモデルの 1 つを見つけてみましょう。

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

そして試してみてください:

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

もっと注意深く見てください:

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)

ここに画像の説明を入力

繰り返しますが、あまりにも面白いものは何もありません。

モデルの適合を手で調べてみましょう。明示的なパラメーターは 1 つだけです (状態間標準偏差)。

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

ここに画像の説明を入力

良さそう。

于 2016-08-01T19:55:48.060 に答える