我使用lme4包中的lmer()函数构建了一个混合效应模型。由于某些良好的哲学原因,lme4包不会输出系数的p值。但是,我仍然需要p值来在我的出版物中进行报告。我知道有多种方法可以使用lmer()创建的模型计算p值,例如here。
我的问题是:我想使用broom包中的tidy()函数提取p值。在这里,我真的想坚持使用tidy(),因为我想保持以下流程:
我假设在broom中已经实现了从lmer模型给出的t值计算p值的函数,因此我不想重复造轮子。
问题是我根本没有得到名为p.value的列。我期望有一个名为p.value的列,最坏情况下为NAs。
代码:
我的问题是:我想使用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