2013-10-05 56 views
5

我有一個數據集dat2,我想在其中擬合線性混合效果模型,我在過去使用lmer()(package lme4)但是,由於我用新的lme4(1.0.4)和languageR(1.4)軟件包重新安裝了R 3.0.2版本,所以我得到了有關lmer輸出的錯誤。功能上面說的是輸出不是Mer的對象實際上它的類是lmeRmodlme4和languageR兼容性錯誤:「輸入模型不是聚合對象」

這裏是我使用的代碼:。

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對象,而不是一個鹼基對象。

> 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 

這個問題與描述的here非常相似。任何想法1 /什麼問題可能是(爲什麼我不輸出一個mer對象)和2 /如何解決它(我試過重新安裝舊版本,但我有軟件包之間的兼容性問題)?

任何幫助將是偉大的! 謝謝!

回答

4

我確認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 
+0

這不會出現在lme4的目前分佈式版本的工作(lme4_1.0-5 )作爲drop1.merMod方法是: * 1 - 出於某種原因仍然被stats包中的drop1版本隱藏 * 2 - 查看lme4 ::: drop1。merMod顯示該方法僅用以下參數進行測試: test = c(「none」,「Chisq」) 因此會引發錯誤。 你知道github上的新版本何時會更新爲CRAN嗎? – evolvedmicrobe

+0

不,但版本1.1-2應該可以通過:'install.packages(「lme4」,repos =「http://lme4.r-forge.r-project.org/repos」)。讓我知道如果它不起作用。 –

1

您可能會查看發現here的afex包中的混合函數。它使用Kenward-Rogers的df。

+0

「雖然此鏈接可能回答問題,但最好在此處包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。」 – zero323

2

你可以使用Package'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