Broom |tidy up a bit,模型,检验结果一键输出!

简介: Broom |tidy up a bit,模型,检验结果一键输出!

本文首发于“生信补给站”公众号 https://mp.weixin.qq.com/s/TqFk66F2gUu_k8WEjKbLtA


使用lm/glm/t.test/chisq.test等模型或者检验完成分析后,结果怎么提?

复制粘贴还是broom一键生成?

载入数据,R包

mtcars数据集

#载入内置数据集mtcars
head(mtcars)
                  mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
broom-R包
#载入R包
library(broom)
??broom #查看broom包用法

broom主要提供如下三种结果整理函数

  • tidy: 返回模型的统计结果的数据框;
  • augment: 返回模型参数并增加预测和残差等模型结果;
  • glance: 返回模型的一行重要结果,包含R^2、矫正后的R^2,以及剩余标准误差。

回归模型

线性回归

#构建简单线性回归模型
lmfit <- lm(mpg ~ wt, mtcars)
summary(lmfit)
summary(lmfit)$coef

结果如上,只需要将上面的P值,R squared,Adjusted R squared等关心的模型结果,用时间和耐心“精确”的复制粘贴出来就可以了!

嫌麻烦的小伙伴可以用broom试一下,其实只一行就行。


R-broom提取结果

1)tidy函数

library(broom)

#返回模型的统计结果的数据框

tidy(lmfit)

看起来和summary(lmfit)$coef差不多,但还是有区别的:

  • coef(summary(lmfit)) 中,terms保存在rawname中;
  • 列名为Pr(>|t|)而不是p.value;


2)augment()函数

#提取回归中每个原始点的拟合值和残差等信息
augment(lmfit)

返回每个原始点的参数值以及模型的拟合值,残差等结果,同时为避免列名重复,模型结果的列名以.开始。


3) glance()函数

#提取R squared,Adjusted R squared等
glance(lmfit)

image.png


对于广义线性模型(glm) 和非线性模型(nls)同样适用,可自行尝试。

生存分析

生信分析常用的生存分析,结果是否可以提取呢?

答案是可以的,参数上稍微有点区别。

生存分析示例

#library("survminer") #载入R包
library("survival") #载入R包
fit_cox <- coxph(Surv(time, status)~sex, data=lung)
summary(fit_cox)

基础方法提取

#通过函数来提取关键结果
coef(summary(fit_cox))
#提取HR和95%置信区间
exp(coef(fit_cox))
#提取HR的95%置信区间
exp(confint(fit_cox))

broom函数提取

#生存分析,提取的是exp(coef)相关信息,exponentiate = TRUE

tidy(fit_cox,exponentiate=TRUE)

假设检验

除模型结果外,broom还可以用于 t.test, cor.testwilcox.test检验的结果提取。

T检验

tt <- t.test(wt ~ am, mtcars)
tidy(tt)

image.png

返回统计值,P值,置信区间,检验方法等信息;


wilcox.test

wt <- wilcox.test(wt ~ am, mtcars)
tidy(wt)

注:上述返回值只有一行,与 glance函数返回相同的结果,自行尝试。


chisq.test

chit <- chisq.test(xtabs(Freq ~ Sex + Class, data = as.data.frame(Titanic)))
tidy(chit)
#只有chisq.test检验可以使用augment函数
augment(chit)


参考资料:

http://127.0.0.1:18603/library/broom/doc/broom.html


◆  

R|批量循环处理同一格式文件-csv,txt,excel

R In Action |基本数据管理

数据分析|R-缺失值处理

数据分析|R-异常值处理

数据分析|R-描述性统计

数据处理|数据查重怎么办?去重,就这么办!

小数据| 描述性统计(Python/R 实现)

数据挖掘|R-相关性分析及检验

数据处理 | R-tidyr包

数据处理|R-dplyr

R|apply,tapply

数据处理|数据框重铸

R|ML_code-入门(1)

R|ML_code-线性回归(2)

R|机器学习入门-多元线性回归(3)

相关文章
|
7月前
R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系
R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系
|
7月前
|
C语言 C++
【qt】数值的输入与输出1
【qt】数值的输入与输出
54 0
|
7月前
|
存储 C++
第七章:C++中的输入与输出
第七章:C++中的输入与输出
49 0
Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行
Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行
298 0
STM32 输入捕获的脉冲宽度及频率计算
STM32 输入捕获的脉冲宽度及频率计算
220 0
|
PyTorch 算法框架/工具
输入一个一行张量,如何转换成概率?
将一行张量转换为概率分布的常见方法是使用 softmax 函数。softmax 函数的作用是将一个向量映射到一个新的向量,其中每个元素都在 0 到 1 之间,并且所有元素的和等于 1。因此,可以将 softmax 函数应用于一行张量,以将其转换为概率分布。
217 0
为什么要用WRF计算非绝热加热项,以及如何输出非绝热加热项.
为什么要用WRF计算非绝热加热项,以及如何输出非绝热加热项.
为什么要用WRF计算非绝热加热项,以及如何输出非绝热加热项.
汉明码是否有错误的检验,许用码组的计算
汉明码是否有错误的检验,许用码组的计算
227 0
汉明码是否有错误的检验,许用码组的计算
ML之DS:仅需一行代码实现对某字段下的所有数值实现同一机制的改变或转换(比如全部转为str类型/全部取平方值)
ML之DS:仅需一行代码实现对某字段下的所有数值实现同一机制的改变或转换(比如全部转为str类型/全部取平方值)
ML之DS:仅需一行代码实现对某字段下的所有数值实现同一机制的改变或转换(比如全部转为str类型/全部取平方值)