Другая версия lme4 дает другой результат

Я столкнулся с проблемой в пакете lme4, которая кажется мне очень странной.

R версии 3.0.2 (2013-09-25) и lme4_1.1-7 ведут себя по-разному с R версией 3.2.1 (2015-06-18) и lme4_1.1-8 . Например, в R версии 3.0.2 при запуске кода confint.merMod(fit, oldName = FALSE, "sd_(Intercept)|group") выдается следующая ошибка:

Error in confint.merMod(fit, oldName = FALSE, c("sd_(Intercept)|group", : for method='profile', 'parm' must be specified as an integer -

Но такой ошибки нет в R версии 3.2.1 и lme4_1.1-8.

Снова в lme4_1.1-7 команда confint выдает результат, но с теми же данными confint возвращает NA в lme4_1.1-8. Почему ?

Верен ли результат, который я получаю от команды confint в lme4_1.1-7?

Любая помощь приветствуется. Спасибо.


person user81411    schedule 09.08.2015    source источник
comment
Не могли бы вы привести минимальный воспроизводимый пример?   -  person    schedule 09.08.2015
comment
@Pascal stackoverflow.com/questions /31796299/ это пример, который я использую для суждения между двумя версиями lme4   -  person user81411    schedule 09.08.2015
comment
Я не понимаю, что работает в 1.1-7; это просто confint(fit) (т.е. это работает, если вы получаете доверительные интервалы для всех параметров)?   -  person Ben Bolker    schedule 11.08.2015
comment
@BenBolker да, прежде чем узнать ваш ответ, я попробовал confint(fit) в 1.1-7, так как не знал, как это сделать только для компонентов дисперсии. Итак, в 1.1-7 confint(fit) вернул мне доверительные интервалы для всех параметров.   -  person user81411    schedule 11.08.2015


Ответы (1)


Чтобы ответить на менее сложную часть вашего вопроса (почему вы получаете ошибку в 1.1-7, а не в 1.1-8): указание параметра по имени, а не целому числу, должно работать в 1.1-8, но нет в 1.1-7. Этот коммит от 13 июня показывает, когда функция была добавлена ​​в пакет.

Следующий код работает в самой последней разрабатываемой версии lme4 и должен работать в 1.1-8 (но не 1.1-7): мы можем указать параметр для профилирования по номеру, по новому имени, по старому name, или мы можем указать, что хотим профилировать все параметры случайных эффектов (в данном случае только один):

library("lme4")
fm1 <- lmer(Reaction~Days+(1|Subject),sleepstudy)
p1 <- profile(fm1,parm=1) 
p2 <- profile(fm1,parm="sd_(Intercept)|Subject",oldName=FALSE)
p3 <- profile(fm1,parm=".sig01",oldName=TRUE)
p4 <- profile(fm1,parm="theta_")

Если вам нужно работать с 1.1-7, обходной путь должен быть простым: просто укажите параметр по номеру.

person Ben Bolker    schedule 09.08.2015
comment
Но почему 1.1-7 дает результат, когда 1.1-8 возвращает NA для тех же данных? - person user81411; 09.08.2015
comment
без минимального воспроизводимого примера я не могу знать. - person Ben Bolker; 09.08.2015
comment
В этом примере stackoverflow.com/ questions/31796299/ , я установил семя как set.seed(851406) и fit <- replicate(1000,noncoverage(30,5,1,.3,.3,.3,(1/18),0,(1/18))) . lme4_1.1-8 выдает NA, тогда как lme4_1.1-7 выдает числовое значение. В lme4_1.1-7 я написал ci=confint(fit) . - person user81411; 09.08.2015
comment
Мне действительно нужно replicate(1000,...), чтобы увидеть проблему? Одна реплика на моей машине занимает 1-2 секунды, так что это будет утомительно. Пожалуйста, отредактируйте свой вопрос, чтобы сделать его автономным и минимально воспроизводимым... - person Ben Bolker; 11.08.2015
comment
Если я сделаю replicate(50,...) с версией 1.1-9 (я знаю, что у вас все еще проблемы с установкой), я не получу никаких значений NA. Это также может зависеть от платформы; если это продолжится, нам может понадобиться увидеть результаты sessionInfo(). - person Ben Bolker; 11.08.2015
comment
Возможно, в lme4_1.1-8, если вы воспроизведете его только 50 или 100 раз, вы получите NA. - person user81411; 11.08.2015
comment
Наконец-то я установил lme4_1.1-9. Большое спасибо. - person user81411; 11.08.2015