Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


r:tidyverse:pacchetto_broom

Broom

Il pacchetto broom1) include una serie di funzioni (e relative varianti: si consulti l’aiuto) per gestire l’output dei modelli, ed avere tabelle organizzate come dataframe.

In generale, le funzioni di questo pacchetto si sposano bene con la funzione kable().

Con queste funzioni, è possibile estrarre dai risultati — generalmente liste di oggetti — i dati che possono essere utili da visualizzare, studiare, o per ulteriori elaborazioni (inserire variabili nel dataset originario, fare grafici ecc.), organizzati in dataframe.

Principali funzioni
glance() tabella di sintesi del modello
tidy() tabella dell'output
augment() tabella con i dati del modello, caso per caso

Vedi: Vignettes; RDocumentation

glance

install.packages("broom")
library(broom)

glance() restituisce in una tabella sintetica le informazioni necessarie alla valutazione del modello.

In base al modello, la tabella può contenere diverse informazioni2). Nel caso di un modello lineare:

lm.res <- lm(data=cars, dist ~ speed)
 
glance(lm.res)
## # A tibble: 1 x 11
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <int>  <dbl> <dbl> <dbl>
## 1     0.651         0.644  15.4      89.6 1.49e-12     2  -207.  419.  425.
## # ... with 2 more variables: deviance <dbl>, df.residual <int>

tidy

tidy() restituisce invece le informazioni contenute nel summary, semplificato e organizzato in tabella:

tidy(lm.res)
## # A tibble: 2 x 5
##   term        estimate std.error statistic  p.value
##   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)   -17.6      6.76      -2.60 1.23e- 2
## 2 speed           3.93     0.416      9.46 1.49e-12

augment

augment() mostra il dataset originario con statistiche derivate dal modello. Può essere utilizzata anche con un altro set di dati (in chiave predittiva):

augment(lm.res)
## # A tibble: 50 x 9
##     dist speed .fitted .se.fit .resid   .hat .sigma  .cooksd .std.resid
##    <dbl> <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>    <dbl>      <dbl>
##  1     2     4   -1.85    5.21   3.85 0.115    15.5 0.00459       0.266
##  2    10     4   -1.85    5.21  11.8  0.115    15.4 0.0435        0.819
##  3     4     7    9.95    4.11  -5.95 0.0715   15.5 0.00620      -0.401
##  4    22     7    9.95    4.11  12.1  0.0715   15.4 0.0255        0.813
##  5    16     8   13.9     3.77   2.12 0.0600   15.5 0.000645      0.142
##  6    10     9   17.8     3.44  -7.81 0.0499   15.5 0.00713      -0.521
##  7    18    10   21.7     3.12  -3.74 0.0413   15.5 0.00133      -0.249
##  8    26    10   21.7     3.12   4.26 0.0413   15.5 0.00172       0.283
##  9    34    10   21.7     3.12  12.3  0.0413   15.4 0.0143        0.814
## 10    17    11   25.7     2.84  -8.68 0.0341   15.5 0.00582      -0.574
## # ... with 40 more rows

Con gli altri pacchetti del tidyverse

Selezioniamo i casi con i residui standard > |1,5| (per studiare gli outliers):

library(tidyverse)
library(knitr)
 
augment(lm.res) %>% 
  select(dist, speed, .fitted, .resid, .std.resid) %>%   # seleziona le colonne
  filter(.std.resid > abs(1.5)) %>%                      # seleziona i casi
  arrange(desc(.std.resid)) %>%                          # ordina le righe
  kable()                                                # formatta la tabella
 dist   speed    .fitted     .resid   .std.resid
-----  ------  ---------  ---------  -----------
  120      24   76.79872   43.20128     2.919060
   80      14   37.47463   42.52537     2.795166
   84      18   53.20426   30.79574     2.027818
   76      18   53.20426   22.79574     1.501039

Questa è una tabella formattata, in formato markdown (quindi può essere esportata in formato html, word, ecc.).

1)
Parte del tidyverse, ma non è caricato con library(tidyverse), in quanto rientra in una serie di pacchetti specializzati nell’uso e nella gestione dei modelli e del ML (Tidy Models).
2)
Vengono presentate anche statistiche che nell'output normale (con summary()) non sono di default.

Domande? Scrivimi

Messenger Telegram Email
r/tidyverse/pacchetto_broom.txt · Ultima modifica: 29/10/2025 13:53 da Agnese Vardanega