Ошибка смешанной модели lme4 - PullRequest
       38

Ошибка смешанной модели lme4

5 голосов
/ 25 октября 2011

Что не так со следующей моделью:

 # simulated data yr = 2; vg = 4, fm = 5, gen = 5
    mbb <- data.frame( trait1 = rnorm(200, 15, 4),yr = c(rep (1:2, each = 100)), 
   vg = c(rep(rep(1:4, each =25), 2)), fm = rep(rep(1:5, each = 5), 8), 
    gen = sample(c(1:5), 200, replace = T))
    require(lme4) 
    lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fm:vg), data= mbb)# full model 

Я получаю следующую ошибку:

Error in validObject(.Object) : 
  invalid class "mer" object: Slot Zt must by dims['q']  by dims['n']*dims['s']
In addition: Warning messages:
1: In fm:vg : numerical expression has 200 elements: only the first used
2: In fm:vg : numerical expression has 200 elements: only the first used

Ответы [ 2 ]

7 голосов
/ 25 октября 2011

Проблема в том, что fm и vg хранятся как числа, а не как факторы, и поэтому lmer пытается интерпретировать fm:vg как оператор последовательности (см. ?seq), а не как оператор взаимодействия (см. ?interaction). Вы можете:

  • преобразуйте fm и vg в факторы внутри фрейма данных (mbb <- transform(mbb,vg=factor(vg),fm=factor(fm))) [ из ваших настроек неясно, хотите ли вы, чтобы vg и fm были факторами или непрерывными предикторами .. ... это различие было бы очень важно, конечно ... если вы хотите, чтобы они были непрерывными предикторами, то было бы немного странно рассматривать их как факторы для целей группировки ... ]
  • напишите взаимодействие явно как interaction(fm,vg) на лету
  • конвертировать в факторы на лету ((yr+vg+gen|factor(fm):factor(vg)))
  • используйте решение Джима М.

    Я думаю все это будет работать, хотя я должен признать, что я их не проверял.

3 голосов
/ 25 октября 2011

Одним из возможных решений для моделирования взаимодействия как случайного эффекта является добавление члена взаимодействия в качестве дополнительного столбца в фрейм данных mbb.

mbb$fmvg <- with(mbb, interaction(fm,vg, sep=":"))

Затем модель становится

lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb)
...