Перехват случайного эффекта - библиотека (лето)

Когда я запускаю эту смешанную модель, я получаю всю необходимую статистику.

library(sommer)
data(example)
#Model without intercept - OK
ans1 <- mmer2(Yield~Env,
              random= ~ Name + Env:Name,
              rcov= ~ units,
              data=example, silent = TRUE)
summary(ans1)
ans1$u.hat #Random effects

Однако, если я попытаюсь получить перехват случайных эффектов, как в библиотеке R lme4Я получаю сообщение об ошибке:

Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent


#Model with intercept
ans2 <- mmer2(Yield~Env,
              random= ~ 1+Name + Env:Name,
              rcov= ~ units,
              data=example, silent = TRUE)
summary(ans2)
ans2$u.hat #Random effects

Как я могу преодолеть это?

2 ответа

Ваша модель:

ans1 <- mmer2(Yield~Env,
              random= ~ Name + Env:Name,
              rcov= ~ units,
              data=example, silent = TRUE)

эквивалентно:

ans1.lmer <- lmer(Yield~Env + (1|Name) + (1|Env:Name),
              data=example)

используя lme4. Обратите внимание, что lme4 использует нотацию (x|y), чтобы указать, например, существуют ли, например, различные перехваты (термин x) для каждого уровня второго члена (термин y), который является моделью случайной регрессии. Если вы укажете:

ans2.lmer <- lmer(Yield~Env + (Env|Name),
              data=example)

Вы получаете три компонента дисперсии, по одному для каждого из 3 уровней в термине Env. Эквивалентом в sommer является не случайная регрессия, а гетерогенная модель дисперсии, использующая функциональность diag():

ans2 <- mmer2(Yield~Env,
              random= ~ diag(Env):Name,
              rcov= ~ units,
              data=example, silent = TRUE)

## or in sommer >=3.7

ans2 <- mmer2(Yield~Env,
              random= ~ vs(ds(Env),Name),
              rcov= ~ units,
              data=example, silent = TRUE)

Первые две модели, приведенные выше, эквивалентны, поскольку обе модели предполагают, что нет различных перехватов, тогда как последние две модели решают одну и ту же проблему, но с двумя разными подходами, которые не совсем одинаковы; случайная регрессия в сравнении с моделью гетерогенной дисперсии.

Короче говоря, в Sommer пока не реализована случайная регрессия, поэтому вы не можете использовать случайные перехваты в Sommer, как в Ime4, но вместо этого использовать гетерогенные модели дисперсии.

Ура,

Я знаю, что это не элегантное решение, но как насчет добавления перехвата к данным, чтобы вы могли легко использовать его в модели?

Я имею в виду:

example <- cbind(example, inter=1)
ans2 <- mmer2(Yield~Env,
          random= ~ Name + Env:Name + inter, #here inter are 1's
          rcov= ~ units,
          data=example, silent = TRUE)
summary(ans2)
ans2$u.hat
Другие вопросы по тегам