如何提取经dplyr::group_by分组的lmer模型结果信息?
提取分组拟合的lmer模型信息
你用dplyr::group_by()结合do()按性别拟合lmer模型后,ort_test$model是列表列,每个元素对应一个完整的lmer模型对象,控制台显示的<lmrMdLmT>只是模型对象的类标识,实际包含所有模型信息。以下是几种提取和查看模型信息的方法:
1. 提取单个模型并查看细节
直接通过列表索引提取指定性别的模型,再用lme4自带函数查看结果:
# 提取男性组的模型 male_model <- ort_test$model[[1]] # 查看模型完整摘要(包含固定效应、随机效应、拟合统计量等) summary(male_model) # 提取固定效应系数 fixef(male_model) # 提取随机效应(每个Subject的截距) ranef(male_model) # 查看模型拟合的方差组分 VarCorr(male_model)
2. 批量处理所有模型(生成结构化结果)
借助purrr和broom.mixed包,可以批量将所有模型的结果整理成数据框,方便后续分析:
library(broom.mixed) library(purrr) # 为每个模型添加摘要、固定效应、随机效应的结构化结果 ort_test <- ort_test %>% mutate( # 模型完整摘要列表 model_summary = map(model, summary), # 固定效应整理为数据框 fixed_effects = map(model, tidy, effects = "fixed"), # 随机效应整理为数据框 random_effects = map(model, tidy, effects = "ran_vals") ) # 查看所有组的固定效应(展开为数据框) ort_test %>% select(Sex, fixed_effects) %>% unnest(fixed_effects)
3. 直接在分组数据框中展开模型信息
如果想在tibble中直接展开模型结果,可使用tidyr::unnest():
library(tidyr) # 展开固定效应到数据框 ort_test %>% mutate(fixed_effects = map(model, tidy, effects = "fixed")) %>% unnest(fixed_effects)
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

