首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R星镜、lme4和lmerTest不相容

R星镜、lme4和lmerTest不相容
EN

Stack Overflow用户
提问于 2015-07-09 13:31:21
回答 2查看 7.8K关注 0票数 9

这里的新手。我在lmerTeststargazer的工作中遇到了问题。我在这里学习本教程,让stargazer在R中使用lme4

http://svmiller.com/blog/2015/02/quasi-automating-the-inclusion-of-random-effects-in-rs-stargazer-package/

我运行这个示例时没有任何问题。

代码语言:javascript
复制
library(lme4)
library(stargazer)
data(cake)
summary(M1 <- lmer(angle ~ temp + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
summary(M2 <- lmer(angle ~ factor(temperature) + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
anova(M1,M2)
stargazer(M1, M2, style="ajps", title="An Illustrative Model Using Cake Data", dep.var.labels.include = FALSE, 
          covariate.labels=c( "Temperature (Continuous)", "Temperature (Factor $<$ 185)", "Temperature (Factor $<$ 195)", "Temperature (Factor $<$ 205)", "Temperature (Factor $<$ 215)", "Temperature (Factor $<$ 225)")
)

虽然这是可行的,但是如果我包括lmerTest包,stargazer就不再工作了。

代码语言:javascript
复制
library(lme4)
library(lmerTest)
library(stargazer)
data(cake)
summary(M1 <- lmer(angle ~ temp + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
summary(M2 <- lmer(angle ~ factor(temperature) + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
anova(M1,M2)
stargazer(M1, M2, style="ajps", title="An Illustrative Model Using Cake Data", dep.var.labels.include = FALSE, 
          covariate.labels=c( "Temperature (Continuous)", "Temperature (Factor $<$ 185)", "Temperature (Factor $<$ 195)", "Temperature (Factor $<$ 205)", "Temperature (Factor $<$ 215)", "Temperature (Factor $<$ 225)")
)

Error in objects[[i]]$zelig.call : 
  $ operator not defined for this S4 class

我真的很想使用stargazer,但是我的实验要求使用merModLmerTest对象,而stargazer不支持这些对象。有人知道解决办法吗?将merModLmerTest对象转换为兼容的lmerMod对象有多困难?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-27 22:09:39

这是一个简单的解决办法。将lmerTest (在merModLmerTest类中)的输出转换为lmerMod类。这将与观星者兼容。

代码语言:javascript
复制
class(model) <- "lmerMod"
票数 11
EN

Stack Overflow用户

发布于 2015-07-15 19:32:31

只要看一看这些代码,我认为这是一个stargazer问题。stargazer可以读取类lmerMod的对象,而不是merModLmerTest。由于作者描述的那个黑客需要stargazer包才能通过stargazer包含随机效果,所以我认为您被困住了。

如果您的工作确实需要lmerTest (看起来像anova函数,对吗?),我建议如下。

  1. 运行你的模型,得到你的阿诺瓦。你认为合适就看吧。
  2. 再次运行您的模型,但是指定您希望lme4估计模型。您可以通过键入lme4::lmer(y + x1, Data)来做到这一点。由于您在lme4之后加载了lme4包,因此lmerTest实际上成为运行lmer函数的默认包。这就是为什么您的对象成为stargazer无法读取的类的原因。到头来,它是同一个型号,只是存储方式不同。
  3. 最后,使用xtable在LaTeX中创建anova结果,如果这正是您想要的。

这个修改后的代码应该对你有帮助。

代码语言:javascript
复制
library(lme4)
library(lmerTest)
library(stargazer)
library(xtable)
data(cake)

# Get the table first.
summary(M1 <- lme4::lmer(angle ~ temp + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
summary(M2 <- lme4::lmer(angle ~ factor(temperature) + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))

stargazer(M1, M2, style="ajps", title="An Illustrative Model Using Cake Data", dep.var.labels.include = FALSE, 
      covariate.labels=c( "Temperature (Continuous)", "Temperature (Factor $<$ 185)", "Temperature (Factor $<$ 195)", "Temperature (Factor $<$ 205)", "Temperature (Factor $<$ 215)", "Temperature (Factor $<$ 225)")
)

# now for lmerTest
summary(M1a <- lmer(angle ~ temp + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
summary(M2a <- lmer(angle ~ factor(temperature) + (1 | replicate) + (1|recipe:replicate), cake, REML= FALSE))
anovadf <- data.frame(anova(M1a,M2a))
xtable(anovadf)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31319030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档