如何使用 broom::tidy() 从 lme4::lmer() 创建的线性混合效应模型计算 p 值?
How to calculate p-value from a linear mixed effect model created by lme4::lmer() using broom::tidy()?
我使用 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)".
据此,我假设一个根据 lmer 模型给出的 t 值计算 p 值的函数已经在 broom 中实现。所以,我不愿意重新发明轮子。
问题是我根本没有得到名称为 p.value 的列。我期待一个名为 p.value 的列,其中 NA 是最坏的情况。
代码:
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
您将需要包 lmerTest
来获取 p 值。 tidy
不适用于 lme
对象,您需要将其附加到您的格式中。
attach(mtcars)
lme <- lmer(mpg ~ cyl + (1 + cyl | carb), mtcars)
summary(lme)
您可以使用 sjstats::p_value()
从许多不同的模型中获取 p 值,包括(广义)混合模型。
我使用 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)".
据此,我假设一个根据 lmer 模型给出的 t 值计算 p 值的函数已经在 broom 中实现。所以,我不愿意重新发明轮子。
问题是我根本没有得到名称为 p.value 的列。我期待一个名为 p.value 的列,其中 NA 是最坏的情况。
代码:
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
您将需要包 lmerTest
来获取 p 值。 tidy
不适用于 lme
对象,您需要将其附加到您的格式中。
attach(mtcars)
lme <- lmer(mpg ~ cyl + (1 + cyl | carb), mtcars)
summary(lme)
您可以使用 sjstats::p_value()
从许多不同的模型中获取 p 值,包括(广义)混合模型。