Fare pratica con i dati e regressione
Originally posted here.
Regressione lineare
Al link è possibile trovare delle note sulla regressione.
Ricordiamo che per applicare la regressione lineare dobbiamo essere sicuri che le ipotesi siano soddisfatte. In particolare dovremo assicurarci che i residui seguano una distribuzione normale centrata in 0 e siano indipendenti.
Alcune delle funzioni già viste possono aiutarci in questo compito.
Definire e richiamare un modello lineare in R è molto semplice. Basta infatti utilizzare la funzione lm()
, dove va specificata la variabile dipendente e il predittore ed i dati da usare per definire il modello.
Sebbene i modelli di regressione multipla siano concettualmente e praticamente più complessi, R li supporta usando la stessa funzione e la stessa notazione. In tal caso, invece che indicare un predittore, se ne indicano più usando il simbolo +
per elencarli.
Mtcars
Vediamo alcuni esempi usando il dataset mtcars
.
Supponiamo di voler investigare se il consumo di carburante e il numero di cavalli seguono una relazione lineare.
Un ottimo metodo per intuire se la relazione possa essere in qualche modo lineare è quello di disegnare la variabile dipendente in funzione del predittore.
plot(mpg ~ hp, data = mtcars)
Secondo i risultati della nostra analisi preliminare sembra plausibile che la relazione sia lineare. Continuiamo la nostra investigazione definendo il modello con la funzione lm()
e visualizzando il risultato usando la ben nota funzione summary()
.
mtcars_reg <- lm(mpg ~ hp, data = mtcars)
summary(mtcars_reg)
Si può accedere ai vari elementi elencati da summary()
usando la notazione $
.
Tra le informazioni che fornisce summary, è presente anche il valore R-squared (R quadro), che è la proporzione di varianza della variabile dipendente che viene spiegata dal predittore. Tale valore è compreso tra 0 e 1. Valori vicino a 1 indicano un buon modello, mentre valori bassi possono indicare o che il modello non spieghi completamente/correttamente i dati, o che la varianza dei residui è molto alta.
Una volta definito il modello, è importante visualizzare i risultati per valutarne la bontà e per capire il comportamento dei residui. In questo modo è infatti possibile verificare quantitativamente (non formalmente) se i residui soddisfano le ipotesi di indipendenza (non si devono osservare dei pattern) e che la distribuzione dei quantili sia confrontabile con quella di una normale.
I seguenti comandi permettono di visualizzare la retta di regressione, i quantili e di confrontarli con la distribuzione in quantili di una normale.
par(mfrow = c(3,1), mar = c(2,2,1,1))
# Retta di regressione
plot(mpg ~ hp, data = mtcars)
abline(mtcars_reg$coefficients, col = "red")
# Pattern nei residui
plot(mtcars_reg$residuals, main = "Residui")
# Distribuzione in quantili
qqnorm(mtcars_reg$residuals)
qqline(mtcars_reg$residuals)
Esercizio A
In modo analogo a quanto fato sopra, si investighi la relazione tra consumo e peso delle auto in esame.
Esercizio B
Si discuta un modello lineare per le variabili x e y di Esercizo 1.
Regressione multipla
Come anticipato, se volessimo considerare una regressione multipla e per esempio considerare come predittori sia la potenza (cavalli) che il peso, possiamo implementare il modello in modo simile in R.
mtcars_reg_hp_wt <- lm(mpg ~ hp + wt, data = mtcars)
summary(mtcars_reg_hp_wt)
Se volessimo che il modello considerasse tutte le variabili (eccetto mpg), si può usare la notazione lm(mpg ~ ., data = mtcars)
senza esplicitamente indicare tutti i nomi delle colonne.
Esercitazione 3
Si consideri il dataset crabs
contenuto nel pacchetto MASS.
- Si verifichi che il dataset sia stato letto bene. Si usi l’help per comprendere il significato delle variabili.
- Si visualizzi una tabella che riassume il numero di esemplari per genere e per colore. E’ il dataset equilibrato rispetto queste variabili categoriche?
- Si visualizzi usando un solo boxplot la variabile BD al variare del sesso e del colore.
- Si calcoli la retta di regressione lineare tra le variabili FL e CL (predittore). Si calcoli il summary del modello e si commenti.
- Si visualizzi la retta di regressione rispetto ai dati, la distribuzione dei residui e i loro quantili. Si commentino i risultati.
- Si determini se la lunghezza del carapace è statisticamente differente tra le due specie.
Esercizi
Esercizio 1
Si importi il dataset (descrizione). Si trovi un modo opportuno per importarlo in R e si analizzi la relazione tra le due variabili usando la regressione lineare. Si analizzino i risultati e si visualizzino i residui.
Esercizio 2
Si trovi un modo adeguato per importare i dati relativi al reddito nazionale lordo pro capite e alla percentuale di strade asfaltate in R. Dopo aver analizzato e preparato i dataset, si usino i dati per investigare le due variabili rispetto ad un paese del G7, un paese in via di sviluppo ed un paese del terzo mondo a scelta, nel periodo dal 1990 al 2009. Si analizzino i dati e si visualizzino. Inoltre si usi la regressione lineare per analizzare la relazione tra le variabili. Si commentino e discutano i risultati.
Soluzione Es2
Esercizio 3
Usando il dataset ottenuto nell’Esercizio 3 della lezione 5, si investighi usando la regressione lineare la relazione tra prodotto interno lordo e aspettativa di vita per ognuno dei continenti. Si usi la funzione predict()
per valutare il modello su dati diversi da quelli usati per definirlo. In particolare, si valuti il modello ottenuto per l’America sui dati europei e viceversa. Si visualizzino e si discutano i risultati ottenuti, dandone anche un interpretazione.
Esercizio 4
Si considerino i modelli ottenuto nell’Esercizio 3. Si valuti separatamente il modello ottenuto per l’America e quello l’Europa usando i dati dei paesi Canada, Italy, Argentina e Sierra Leone contentuti nel dataset originale. Si valutino i valori di R quadro ottenuti e si discutano i risultati.
Suggerimento si usi la formulazione equivalente di R quadro:
© 2017-2020 Federico Reali