Broom |tidy up a bit,模型,檢驗結果一鍵輸出!

 

本文首發於「生信補給站」公衆號,https://mp.weixin.qq.com/s/TqFk66F2gUu_k8WEjKbLtAhtml

更多關於R語言,ggplot2繪圖,生信分析的內容,敬請關注小號。web

 

lm/glm/t.test/chisq.test等模型結果,怎麼提?複製粘貼仍是broom?app

 

一 載入數據及R包

1.1 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

1.2 broom-R包

#載入R包
library(broom)
??broom #查看broom包用法

broom主要提供以下三種結果整理函數機器學習

  • tidy: 返回模型的統計結果的數據框;ide

  • augment: 返回模型參數並增長預測和殘差等模型結果;函數

  • glance: 返回模型的一行重要結果,包含R^二、矯正後的R^2,以及剩餘標準偏差。學習

 

二 迴歸模型

2.1 線性迴歸

#構建簡單線性迴歸模型
lmfit <- lm(mpg ~ wt, mtcars)
summary(lmfit)
summary(lmfit)$coef

結果如上,只須要將上面的P值,R squared,Adjusted R squared等關心的模型結果,用時間和耐心「精確」的複製粘貼出來就能夠了!spa

嫌麻煩的小夥伴能夠用broom試一下,其實只一行就行。3d

 

2.2 R-broom提取結果

1)tidy函數excel

library(broom)
#返回模型的統計結果的數據框
tidy(lmfit)

看起來和summary(lmfit)$coef差很少,但仍是有區別的:

  • coef(summary(lmfit)) 中,terms保存在rawname中;

  • 列名爲Pr(>|t|)而不是p.value;

 

2)augment()函數

#提取回歸中每一個原始點的擬合值和殘差等信息
augment(lmfit)

img

返回每一個原始點的參數值以及模型的擬合值,殘差等結果,同時爲避免列名重複,模型結果的列名以.開始。

 

3) glance()函數

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

img

 

對於廣義線性模型(glm) 和非線性模型(nls)一樣適用,可自行嘗試。

 

三 生存分析

生信分析經常使用的生存分析,結果是否能夠提取呢?

答案是能夠的,稍微有點區別。

3.1 生存分析示例

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

img

3.2 基礎方法提取

#經過函數來提取關鍵結果
coef(summary(fit_cox))
#提取HR和95%置信區間
exp(coef(fit_cox))
#提取HR的95%置信區間
exp(confint(fit_cox))

img

3.3 broom函數提取

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

img

四 假設檢驗

除模型結果外,broom還能夠用於 t.test, cor.testwilcox.test檢驗的結果提取。

4.1 T檢驗

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

img

返回統計值,P值,置信區間,檢驗方法等信息;

 

4.2 wilcox.test

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

img

 

可見上述返回值只有一行,所以 glance函數返回相同的結果。

 

4.3 chisq.test

chit <- chisq.test(xtabs(Freq ~ Sex + Class, data = as.data.frame(Titanic)))
tidy(chit)
#只有chisq.test檢驗能夠使用augment函數
augment(chit)

img

 

參考資料:

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)

 

【以爲不錯,右下角點個「在看」,期待您的轉發,謝謝!】

相關文章
相關標籤/搜索