科研星球

R语言统计与绘图:broom包使用教程,统计结果转换为数据框格式

今天在浏览R包网站的时候又发现一个好包——broom包。

这个包干嘛的了?

查看R包介绍,这个包可以将统计结果转换为数据框格式,比如说逻辑回归模型、Cox回归模型的结果,然后可以方便的输出来。

看到这里,是不是觉得很惊喜!

回归模型是临床研究中最常用的统计方法之一,如果手动提取数据结果的话肯定费时又费力,现在可以使用这个包来快捷方便的导出结果数据。

下面来学习下这个包。

1. 安装和加载R包

可以直接从CRAN上安装,很顺利。

install.packages("broom"# 安装R包
library(broom) # 加载R包
library(survival) # cox回归模型需要

2. 加载演示数据集

使用colon数据集进行演示。

data(colon) # 加载数据集
str(colon) # 查看数据集结构

下载.jpeg

查看数据集介绍,可以知道有些变量是分类变量,但是加载进来的数据集变量还是数字型,我们处理一下。

mycolon <- colon %>% # 创建新数据集 新变量
  transmute(time,
            status,
            Age = age,
            Sex = factor(sex, levels = c(0,1),
                         labels = c("Female""Male")),
            Obstruct = factor(colon$obstruct),
            Differ = factor(colon$differ),
            Extent = factor(colon$extent),
            Adhere = factor(colon$adhere),
            Perfor = factor(colon$perfor),
            Surg = factor(colon$surg),
            Nodes = nodes,
            Rx = factor(colon$rx))

下载 (1).jpeg

如上代码所示,我将colon数据集中的部分变量转换了因子,并新建了一个数据集mycolon,下面使用mycolon数据集进行演示。

3. 拟合模型

本篇推文演示逻辑回归模型和Cox回归模型的结果怎么快速导出,毕竟这两种模型是最常用的,也是很实用的。

先拟合下这两个模型。

3.1 拟合Cox回归模型

使用survival包的coxph()函数拟合下Cox回归模型。

coxphmodel <- coxph(Surv(time, status) ~ ., mycolon)
coxphmodel # 查看模型结果

~符号后的.表示使用数据集中的全部变量纳入回归模型。

下载 (2).jpeg

3.2 拟合逻辑回归模型

使用glm()函数来拟合逻辑回归模型。

glmmodel <- glm(status ~ Age + Sex + Obstruct + Differ + Extent + Adhere + Perfor + Surg + Nodes + Rx, 
                binomial(link="logit"), data = mycolon)
summary(glmmodel) # 查看模型结果

下载 (3).jpeg

4. broom包怎么用?

首先这个包有三种不同的整理结果的方法。

4.1 tidy()函数

这个函数主要用来整理模型的统计结果,比如说系数和P值,并构建成一个数据集。

我们整理下Cox模型的统计结果,直接将拟合模型对象放入tidy()函数中即可。

coxphtable <- tidy(coxphmodel)
coxphtable

下载 (4).jpeg

如上所示,上面的数据框里已经是整洁的数据结果了。

逻辑回归模型结果的整理跟Cox模型是一样的。

glmtable <- tidy(glmmodel)
glmtable

下载 (5).jpeg

4.2 augment()函数

这个函数主要在建模的原始数据集中添加一些列变量,比如说预测、残差等。

glmaug <- augment(glmmodel, data = mycolon)
glmaug

下载 (6).jpeg

这些是在建模数据集中增加的列变量。

4.3 glance()函数

主要整理模型的其他统计结果,比如说R²,校正R²,残余标准差等。

glmgla <- glance(glmmodel)
glmgla

# A tibble: 1 x 8
#  null.deviance df.null logLik   AIC   BIC deviance df.residual  nobs
#          <dbl>   <int>  <dbl> <dbl> <dbl>    <dbl>       <int> <int>
# 1        2462.    1775 -1119. 2268. 2350.    2238.        1761  1776

5. 导出结果

上面的模型已经整理成了数据集的形式,可以直接使用openxlsx包的write.xlsx()函数将结果导出为Excel文件。

library(openxlsx) # 加载R包
write.xlsx(coxphtable, "coxphtable.xlsx")
# 前面是R中的对象,后面是保存在工作目录的文件名称

下载 (7).jpeg

write.xlsx(glmtable, "glmtable.xlsx")
# 前面是R中的对象,后面是保存在工作目录的文件名称

下载 (8).jpeg

如上图所示,就将逻辑回归模型和Cox回归模型的结果输出来了。

其他结果的导出跟上面一样的。

最后,除了导出逻辑回归和Cox回归的结果外,假设检验如t.test、cor.test和wilcox.test的结果也可以使用这个包导出。

这个包有兴趣的可以查看帮助文件再仔细学习学习。

参考资料

  1. survival包帮助文件
  2. broom包帮助文件
  3. openxlsx包帮助文件


没有账号?