Lmerモデルが収束に失敗する


12

データをここで説明します反復測定ANOVAを近似するときにaovで「Error()モデルが特異なエラーになる」原因は何ですか?

私が使用して相互作用の効果を確認しようとしていますlmer私の基本ケースがあるので:

my_null.model <- lmer(value ~ Condition+Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

my.model <- lmer(value ~ Condition*Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

を実行するanovaと重要な結果が得られますが、ランダムな勾配((1+Scenario|Player))を考慮しようとすると、このエラーでモデルが失敗します。

  Warning messages:
 1: In commonArgs(par, fn, control, environment()) :
   maxfun < 10 * length(par)^2 is not recommended.
 2: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp),  :
  convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 3: In commonArgs(par, fn, control, environment()) :
  maxfun < 10 * length(par)^2 is not recommended.
 4: In optwrap(optimizer, devfun, opt$par, lower = rho$lower, control = control,  :
   convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 5: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge with max|grad| = 36.9306 (tol = 0.002)
 6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

それは繰り返しの多くの後に収束に失敗した場合に代わりに(私はそれを設定100 000)し、私は後に同じ結果を取得しています50kし、100kそれはちょうどそれがそれに到達していない、非常に近い実際の値にあることを意味します。このような結果を報告できますか?

反復を非常に高く設定すると、次の警告のみが表示されることに注意してください。

 Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge with max|grad| = 43.4951 (tol = 0.002)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

回答:


8

収束を評価する別の方法については、この会話を参照してください。具体的には、Ben Bolkerからの次のコメント:

ありがとう。さらに簡単なテストは、収束の警告を与えた
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
適切な例を取り上げ、その結果を見て、それが合理的に小さいかどうかを確認することです(たとえば、<0.001?)

または、ここでBolkerのアドバイスを試すこともできます。これは、別のオプティマイザーを試すことです。


1
max(abs(relgrad))の値が2.9239489e-05の場合はどうすればよいですか?
イェンス

1
@Jensの場合、それは非常に小さくなります(e-05は、「ゼロを5つ、次に左側に表示される数字を書き込む」ことを意味し、最初のゼロの後にドットを付けます)。だから、その価値にかなり満足するでしょう!
アーサースプーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.