R语言中如何提取lme模型置信区间结果并转为数据框?
问题描述
我正在使用线性混合效应模型(lme)分析两个变量的关系,模型代码如下:
data(mtcars) # linear mixed effects model mlme <- lme(mpg ~ wt, random = ~ 1|cyl, data = mtcars)
随后我通过以下代码获取置信区间:
conf <- intervals(mlme, level = 0.95, which = 'fixed') conf
得到的结果为:
Approximate 95% confidence intervals Fixed effects: lower est. upper (Intercept) 7.431921 18.416639 29.40136 DairyTotal 2.001397 6.716849 11.43230
我想要提取其中的lower和upper限值作为变量使用,但找不到合适的方法。例如提取系数可以使用coef(summary(mlme))并转为数据框。我尝试用data.frame(conf)将结果转为数据框,却得到如下错误:
> data.frame(conf) Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class ‘"intervals.lme"’ to a data.frame
请问有什么方法可以访问该格式返回的变量?
解决方案
intervals()返回的intervals.lme对象是一个特殊列表,你可以通过以下几种方法提取所需的置信区间限值:
直接提取固定效应部分并转为数据框
# 提取固定效应的置信区间部分 fixed_ci <- conf$fixed # 转为数据框 fixed_ci_df <- as.data.frame(fixed_ci)转换后的数据框包含
lower、est.、upper三列,可直接通过列名提取限值:lower_vals <- fixed_ci_df$lower upper_vals <- fixed_ci_df$upper直接访问单个限值
若只需某一行的特定限值,可通过索引直接定位:# 获取截距项的lower值 intercept_lower <- conf$fixed["(Intercept)", "lower"] # 获取DairyTotal的upper值 dairy_upper <- conf$fixed["DairyTotal", "upper"]使用broom.mixed包简化提取(可选)
若偏好整洁的tidy格式数据,可借助broom.mixed包的tidy()函数一键整理模型结果,包含置信区间:# 未安装则先执行安装 # install.packages("broom.mixed") library(broom.mixed) # 生成包含置信区间的tidy数据框 tidy_ci <- tidy(mlme, conf.int = TRUE, conf.level = 0.95) # 提取lower和upper限值 lower_vals <- tidy_ci$conf.low upper_vals <- tidy_ci$conf.high
内容的提问来源于stack exchange,提问作者John Conor
相关产品推荐
相关产品推荐

