library(tidyverse), in quanto rientra in una serie di pacchetti specializzati nell’uso e nella gestione dei modelli e del ML (Tidy Models).
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.).
