如何使用broom :: tidy()从lme4 :: lmer()创建的线性混合效果模型计算p值?

时间:2016-05-12 22:49:23

标签: r lme4 mixed-models p-value broom

我使用lmer()包中的lme4函数构建了一个混合效果模型。由于一些好的哲学原因,lme4包不输出系数的p值。但是,我仍然需要在我的出版物中报告p值。我知道有多种方法可以使用lmer()创建的模型计算p值,例如here

我的问题是:我想使用tidy()包中的broom函数提取p值。在这里,我真的想坚持使用tidy(),因为我想维护以下管道:

data_frame %>% group_by(grouping variables) %>% do(tidy(fitted_model))

一种选择是创建自定义函数并将其附加到管道。但是,broom包(http://rpackages.ianhowson.com/cran/broom/man/lme4_tidiers.html)的手册页说:

"p.value  P-value computed from t-statistic (may be missing/NA)". 

由此我假设一个函数来计算lmer模型给出的t值的p值已经在扫帚中实现了。所以,我不愿重新发明轮子。

问题是我根本没有获得名为p.value的列。我期待一个名为p.value的列,其中NAs是最糟糕的情况。

代码:

library(lme4)
library(broom)
lme <- lmer(Reaction ~ Days + (1 + Days | Subject), sleepstudy)
tidy(lme)
tidy(lme, effects = "fixed")

输出:

> tidy(lme)
                         term     estimate std.error statistic    group
1                  (Intercept) 251.40510485  6.824557 36.838306    fixed
2                         Days  10.46728596  1.545789  6.771485    fixed
3       sd_(Intercept).Subject  24.74045195        NA        NA  Subject
4              sd_Days.Subject   5.92213312        NA        NA  Subject
5 cor_(Intercept).Days.Subject   0.06555113        NA        NA  Subject
6      sd_Observation.Residual  25.59181564        NA        NA Residual
> tidy(lme, effects = "fixed")
         term  estimate std.error statistic
1 (Intercept) 251.40510  6.824557 36.838306
2        Days  10.46729  1.545789  6.771485

2 个答案:

答案 0 :(得分:4)

您需要包lmerTest才能获得p值。 tidy无法在lme对象上运行,您需要将其附加到您的格式中。

attach(mtcars)
lme <- lmer(mpg ~ cyl + (1 + cyl | carb), mtcars)
summary(lme)

答案 1 :(得分:0)

您可以使用sjstats::p_value()从许多不同的模型(包括(广义)混合模型)中获取p值。