Многоуровневая регрессия lmer mixte не работает с данными без шума - PullRequest
0 голосов
/ 28 июня 2018

Я там. Я столкнулся с некоторыми проблемами с функцией lmer. Я пытаюсь проверить это на простых данных, и я получаю не то, что ожидал, а предупреждения и ошибки. Вот пример

library(lme4)
library(lme4)
library(data.table)
library(ggplot2)

set.seed(115)
Nid = 20
Nx = 15
b <- 0
a <- 0.5

test <- data.table(ID = rep(LETTERS[1:Nid],each = Nx), X = rep(1:Nx,Nid))
test[,Y := rnorm(1,mean = b,sd = 1) + rnorm(1,mean = a,sd = 1*a)*X, by = ID]

Это набор индивидуумов с Y, имеющий случайный перехват и наклон с X

fitnonmixte <- lm(Y~X,data = test)
summary(fitnonmixte)
fitmixte <- lmer(Y~X + (1 + X |ID),data = test,REML = T)
summary(fitmixte)

Подход с lmer дает мне некоторые предупреждения, которые я не понимаю:

Warning messages:
1: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp),  :
  convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  unable to evaluate scaled gradient
3: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge: degenerate  Hessian with 2 negative eigenvalues

и не дает лучшего результата, чем простая регрессия. Увеличение числа людей, кажется, не меняет поведение. Когда я хочу сделать:

test <- data.table(ID = rep(LETTERS[1:Nid],each = Nx), X = rep(1:Nx,Nid))
test[,Y := rnorm(1,mean = b,sd = 2) + rnorm(1,mean = a,sd = 2*a)*X, by = ID]
fitmixte <- lmer(Y~X + (1 + X |ID),data = test,REML = T)

Я получаю:

Error in fn(x, ...) : Downdated VtV is not positive definite

что я не понимаю ... Я понял после этого, если я добавлю шум к данным

test <- data.table(ID = rep(LETTERS[1:Nid],each = Nx), X = rep(1:Nx,Nid))
test[,Y := rnorm(1,mean = b,sd = 2) + rnorm(1,mean = a,sd = 2*a)*X + rnorm(.N,mean = 0,sd = 1), by = ID]

все отлично работает. Так почему же lmer не может дать правильный результат на данных без шума? Есть ли способ избежать такого поведения? В чем смысл ошибок?

Спасибо за помощь!

...