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

3
我使用lme4包中的lmer()函数构建了一个混合效应模型。由于某些良好的哲学原因,lme4包不会输出系数的p值。但是,我仍然需要p值来在我的出版物中进行报告。我知道有多种方法可以使用lmer()创建的模型计算p值,例如here
我的问题是:我想使用broom包中的tidy()函数提取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)". 

我假设在broom中已经实现了从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

看起来你需要自己计算P值。 - Bulat
2个回答

5
您需要安装lmerTest包以获得p值。 tidy无法在lme对象上工作,您需要将其附加到您的格式中。
attach(mtcars)
lme <- lmer(mpg ~ cyl + (1 + cyl | carb), mtcars)
summary(lme)

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

1
在最新版本中,sjstats::p_value()已被弃用,因此您应该使用parameters::p_value() - Miao Cai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接