2013-10-05 25 views
5

Mam dataset dat2, na którym chcę dopasować liniowy model efektów mieszanych Użyłem lmer() (pakiet lme4) w przeszłości w uzupełnieniu pvals.fnc do obliczenia powiązanych wartości p.Błąd zgodności lme4 i languageR: "model wejściowy nie jest obiektem mer"

Jednak od czasu, gdy ponownie zainstalowałem wersję 3.0.0 z nowymi pakietami lme4 (1.0.4) i languageR (1.4), otrzymuję komunikat o błędzie lm . funkcja mówi, że wyjście nie jest obiektem mer Rzeczywiście jego klasa jest lmeRmod

Oto kod używam:..

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) 

i dostaję ten błąd:

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

Rzeczywiście, kiedy patrzę na MOD1, uważam, że jest to obiekt lmeRmod a nie przedmiot 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 

Ten problem jest bardzo podobny do opisanego here. Wszelkie pomysły na 1/na czym może polegać problem (dlaczego nie wyprowadzam obiektu mer) i 2/jak go obejść (próbowałem przeinstalować starsze wersje, ale mam problemy ze zgodnością między pakietami)?

Każda pomoc będzie świetna! dzięki!

Odpowiedz

4

Potwierdzam, że funkcja pvals.fnc nie działa w nowym languageR - to przede wszystkim ze względu mcmcsamp nie został wdrożony w nowej wersji lme4, co z kolei ponieważ okazało się zawodne w wielu przypadkach.

My (autorzy lme4) przepraszamy za pozostawienie w ten sposób użytkowników languageR, ale było to nieuniknione.

https://github.com/lme4/lme4/blob/master/man/pvalues.Rd oferuje kilka alternatywnych sugestii co zrobić z obliczaniem wartości p.

https://github.com/lme4/lme4/blob/master/man/drop1.merMod.Rd daje konkretny przepis (dla wersji rozwojowej lme4) o sposobie korzystania pbkrtest::KRmodcomp uzyskać wartości p dla wszystkich predyktorów w modelu

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) 
} 

Ten przykład produkuje:

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 
+0

To nie wydaje się działać w obecnie dystrybuowanych wersji lme4 (lme4_1.0-5) jako metoda drop1.merMod to: * 1 - Nadal ukryte przez wersję drop1 w pakiecie statystyk z jakiegoś powodu * 2 - Patrząc na lme4 ::: drop1.merMod pokazuje, że metoda przyjmuje tylko następujące parametry: test = c ("none", "Chisq") , więc powoduje błąd. Czy wiesz, kiedy nowa wersja github zostanie zaktualizowana do CRAN? – evolvedmicrobe

+0

Nie, ale wersja 1.1-2 powinna być dostępna poprzez: 'install.packages (" lme4 ", repos =" http://lme4.r-forge.r-project.org/repos ")'. Daj mi znać, jeśli to nie zadziała. –

1

Może zajrzeć do funkcji mieszanej w pakiecie afex znalezionym here. Używa Kenward-Rogers dla df.

+0

"Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać odsyłacz do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieważne, jeśli strona z linkami się zmieni." – zero323

2

Możesz użyć pakietu 'lmerTest', aby uzyskać wartości p_values. Zobacz poniższy przykład:

#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) 

Więcej informacji na temat pakietu „lmerTest”, zobacz link poniżej: http://cran.r-project.org/web/packages/lmerTest/lmerTest.pdf