R stargazer,lme4和lmerTest不兼容

Nic*_*uiz 6 latex r lme4 stargazer

R新手在这里.我在与合作问题lmerTeststargazer.我正在按照这里的教程开始在R中stargazer工作lme4.

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

我运行这个例子没有任何问题.

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)")
)
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但如果我包含该lmerTest包,则stargazer不再有效.

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
Run Code Online (Sandbox Code Playgroud)

我真的很想使用,stargazer但我的实验需要使用不支持的 merModLmerTest对象stargazer.有人知道解决方法吗?将merModLmerTest对象转换lmerMod为兼容的对象有多难?

ste*_*eve 8

只是查看代码,我认为这是一个stargazer问题. stargazer可以读取类的对象lmerMod,而不是merModLmerTest.由于该黑客作者描述需要stargazer包以便包含随机效果stargazer,我认为你被卡住了.

如果你真的需要lmerTest你的工作(看起来像anova功能,对吗?),我建议如下.

  1. 运行你的模型并获得你的anova.看看你认为合适.
  2. 再次运行模型,但指定您要lme4估计模型.你可以输入lme4::lmer(y + x1, Data).由于您之后加载了lmerTestlme4,lmerTest实际上成为运行lmer函数的默认包.这就是为什么你的对象变成了一个stargazer无法阅读的类.在一天结束时,它是相同的模型,只是以不同的方式存储.
  3. 最后,用于xtable在LaTeX中创建anova结果,如果这是你想要的.

这个修订后的代码可以帮到你.

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)
Run Code Online (Sandbox Code Playgroud)


Dan*_*kin 6

这是一个简单的修复。将lmerTest(位于类中merModLmerTest)的输出转换为lmerMod该类。这将与观星者兼容。

class(model) <- "lmerMod"
Run Code Online (Sandbox Code Playgroud)

  • 对于任何在网上冲浪的人来说,这确实可行。做得很好。 (3认同)