broomパッケージとは?
Rのbroomパッケージは、統計モデルの出力を整然としたデータフレームに変換するための非常に便利なツールです。これにより、モデルの結果をさらに解析したり、可視化することが容易になります。
この記事では以下の3つの関数を紹介します。
- tidy() - モデルの要約統計量をデータフレームに変換
- glance() - モデル全体の要約統計量をデータフレームに変換
- augment() - モデルの予測値や残差を元データに追加
broomのインストールとロード
まずはbroomパッケージをインストールし、ロードします。
install.packages("broom")
library(broom)
broomを使わない場合の出力例
broomパッケージを使わない場合、モデルの出力は以下のように表示されます。
以下は、線形回帰モデルの例です。
# サンプルデータの作成
data(mtcars)
model <- lm(mpg ~ wt + hp, data = mtcars)
# モデルの要約を表示
summary(model)
結果として、以下のような出力が得られます。
Call:
lm(formula = mpg ~ wt + hp, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-3.9411 -1.6001 -0.1829 1.0505 5.8543
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.2273 1.5988 23.286 < 2e-16 ***
wt -3.8778 0.6327 -6.130 1.12e-06 ***
hp -0.0318 0.0090 -3.518 0.00145 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.646 on 29 degrees of freedom
Multiple R-squared: 0.839, Adjusted R-squared: 0.826
F-statistic: 75.1 on 2 and 29 DF, p-value: 1.133e-11
この出力は詳細な結果を得られますが、整然としたデータフレーム形式ではないため、さらなる解析や可視化に手間がかかることがあります。
broomを使った場合の出力例
tidy()関数の使用例
tidy()関数は、モデルの係数や標準誤差、t値、p値などを含む整然としたデータフレームを生成します。以下に、線形回帰モデルの例を示します。
# tidy()関数の適用
tidy(model)
結果として、以下のようなデータフレームが得られます。
# A tibble: 3 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 37.2 1.60 23.3 2.57e-20
2 wt -3.88 0.633 -6.13 1.12e- 6
3 hp -0.0318 0.00903 -3.52 1.45e- 3
glance()関数の使用例
glance()関数は、モデル全体の要約統計量を一行のデータフレームに変換します。以下に、同じ線形回帰モデルの例を示します。
# glance()関数の適用
glance(model)
結果として、以下のようなデータフレームが得られます。
# A tibble: 1 × 12
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 0.827 0.815 2.59 69.2 9.11e-12 2 -74.3 157. 163. 195. 29
# ℹ 1 more variable: nobs <int>
augment()関数の使用例
augment()関数は、元のデータにモデルの予測値や残差を追加します。以下に例を示します。
# augment()関数の適用
augment(model, data = mtcars)
結果として、元のデータに新しい列が追加されたデータフレームが得られます。
# A tibble: 32 × 18
.rownames mpg cyl disp hp drat wt qsec vs am gear carb .fitted .resid
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Mazda RX4 21 6 160 110 3.9 2.62 16.5 0 1 4 4 23.6 -2.57
2 Mazda RX4 W… 21 6 160 110 3.9 2.88 17.0 0 1 4 4 22.6 -1.58
3 Datsun 710 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 25.3 -2.48
4 Hornet 4 Dr… 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 21.3 0.135
5 Hornet Spor… 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 18.3 0.373
6 Valiant 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 20.5 -2.37
7 Duster 360 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 15.6 -1.30
8 Merc 240D 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 22.9 1.51
9 Merc 230 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 22.0 0.806
10 Merc 280 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 20.0 -0.779
# ℹ 22 more rows
# ℹ 4 more variables: .hat <dbl>, .sigma <dbl>, .cooksd <dbl>, .std.resid <dbl>
# ℹ Use `print(n = ...)` to see more rows
まとめ
broomパッケージを使用することで、統計モデルの出力を整然としたデータフレームに変換し、さらに解析や可視化を行うことが容易になります。