Ошибка совместимости lme4 и languageR: "модель ввода не является объектом mer"

У меня есть набор данных dat2, на котором я хочу подогнать линейную модель смешанных эффектов. Раньше я использовал lmer () (пакет lme4) в дополнение к pvals.fnc для вычисления связанных p-значений.

Однако, поскольку я переустановил версию R 3.0.2 с новыми пакетами lme4 (1.0.4) и languageR (1.4), я получаю сообщение об ошибке в выводе функции lmer. Он говорит, что вывод не является объектом mer. Действительно, его класс - lmeRmod.

Вот код, который я использую:

names(dat2)<-c("auc","subj","decod","soa","vis")
attach(dat2)
mod1 <- lmer(auc ~ decod + (1 | subj))
mod2 <- lmer(auc ~ vis+ (1 | subj))
mod3 <- lmer(auc ~ decod + vis + (1 | subj))
mod4 <- lmer(auc ~ decod + vis + decod*vis + (1 | subj))
pvals.fnc(mod1)

И я получаю такую ​​ошибку:

> pvals.fnc(mod1)
the input model is not a mer object
NULL

Действительно, когда я смотрю на mod1, я обнаруживаю, что это объект lmeRmod, а не объект mer.

> mod1
Linear mixed model fit by REML ['lmerMod']
Formula: auc ~ decod + (1 | subj) 
REML criterion at convergence: -213.3884 
Random effects:
 Groups   Name        Std.Dev.
 subj     (Intercept) 0.04187 
 Residual             0.11087 
Number of obs: 155, groups: subj, 6
Fixed Effects:
(Intercept)       decod2       decod3       decod4  
     0.9798      -0.1141      -0.3599      -0.3090 

Эта проблема очень похожа на описанную здесь . Любые идеи 1 / в чем может быть проблема (почему я не выводю объект mer) и 2 / как ее обойти (я пытался переустановить более старые версии, но у меня проблемы с совместимостью между пакетами)?

Любая помощь была бы замечательной! Благодарность !


person Lucie Charles    schedule 05.10.2013    source источник


Ответы (3)


Я подтверждаю, что функция pvals.fnc не работает в новом languageR - это по сути потому, что mcmcsamp не был реализован в новой версии lme4, что, в свою очередь, потому, что во многих случаях она была признана ненадежной.

Мы (авторы lme4) сожалеем, что оставили languageR пользователей в беде таким образом, но это было в некоторой степени неизбежным.

https://github.com/lme4/lme4/blob/master/man/pvalues.Rd предлагает несколько альтернативных способов вычисления p-значений.

https://github.com/lme4/lme4/blob/master/man/drop1.merMod.Rd дает конкретный рецепт (для разрабатываемой версии lme4) о том, как использовать pbkrtest::KRmodcomp для получения p-значений для всех предикторов в модели:

 fm1 <- lmer(Reaction~Days+(Days|Subject),sleepstudy)
 ## Likelihood ratio test
 drop1(fm1,test="Chisq")
 if (require(pbkrtest)) {
    KRSumFun <- function(object, objectDrop, ...) {
       krnames <- c("ndf","ddf","Fstat","p.value","F.scaling")
       r <- if (missing(objectDrop)) {
           setNames(rep(NA,5),krnames)
       } else {
          krtest <- KRmodcomp(object,objectDrop)
          unlist(krtest$stats[krnames])
       }
       attr(r,"method") <- c("Kenward-Roger via pbkrtest package")
       r
    }
    drop1(fm1,test="user",sumFun=KRSumFun)
}

Этот пример дает:

Single term deletions

Model:
Reaction ~ Days + (Days | Subject)
Method: 
Kenward-Roger via pbkrtest package


       ndf ddf  Fstat    p.value F.scaling
<none>                                    
Days     1  17 45.853 3.2638e-06         1
person Ben Bolker    schedule 07.10.2013
comment
Похоже, что это не работает в распространяемой в настоящее время версии lme4 (lme4_1.0-5), поскольку метод drop1.merMod: * 1 - По какой-то причине все еще скрыт версией drop1 в пакете статистики * 2 - Глядя на lme4 ::: drop1.merMod показывает, что метод принимает только следующие параметры для теста: test = c (none, Chisq), поэтому выдает ошибку. Вы знаете, когда новая версия на github будет обновлена ​​до CRAN? - person evolvedmicrobe; 27.11.2013
comment
Нет, но версия 1.1-2 должна быть доступна через: install.packages("lme4",repos="http://lme4.r-forge.r-project.org/repos"). Сообщите мне, если это не сработает. - person Ben Bolker; 28.11.2013

Вы можете использовать пакет lmerTest для получения значений p_values. См. Пример ниже:

#import lme4 package and lmerTest package
library(lmerTest)
# an object of class merModLmerTest
m <- lmer(Informed.liking ~ Gender+Information+Product +(1|Consumer), data=ham)
# gives summary of lmer object. The same as of class merMod but with
# additional p-values calculated based on Satterthwate's approximations
summary(m)

Подробнее о пакете lmerTest см. По ссылке ниже: http://cran.r-project.org/web/packages/lmerTest/lmerTest.pdf

person Wei Qin    schedule 14.01.2014

Вы можете изучить смешанную функцию в найденном пакете afex здесь. Он использует Kenward-Rogers для df.

person sterlingh    schedule 12.11.2013
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person zero323; 12.11.2013