【R】broomパッケージで解析結果の整理

R

broomパッケージとは?

Rのbroomパッケージは、統計モデルの出力を整然としたデータフレームに変換するための非常に便利なツールです。これにより、モデルの結果をさらに解析したり、可視化することが容易になります。

この記事では以下の3つの関数を紹介します。

  1. tidy() - モデルの要約統計量をデータフレームに変換
  2. glance() - モデル全体の要約統計量をデータフレームに変換
  3. 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パッケージを使用することで、統計モデルの出力を整然としたデータフレームに変換し、さらに解析や可視化を行うことが容易になります。

プロフィール
この記事を書いた人

農学の博士前期課程を修了した研究者。
植物生理と環境調節をテーマに研究しています。

Masaをフォローする
R
Masaをフォローする
タイトルとURLをコピーしました