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)
Esercitazione 1
Si scarichi il dataset al link e si eseguano le operazioni:
- Si importi il dataset.
- Si crei un nuovo dataset contenente solo le righe corrispondenti alla variabile Idataset uguale all’ultimo numero del proprio numero di matricola. Dopo aver fatto ciò, si rimuova la variabile. Le seguenti analisi si intendono su questo dataset.
- Si analizzi la struttura del dataset, si verifichi il numero di righe e colonne contenute. Il dataset è stato letto bene? E’ tidy?
- Si verifichi la presenza di eventuali errori nei dati e si sostituiscano con la mediana.
- Si calcolino media, mediana, minimo, massimo e quartili e deviazione standard.
- Si visualizzi la distribuzione delle variabili x e y e i loro box plot.
- Si visualizzino i dati mediante uno scatterplot.
Soluzione
Il dataset completo e una discussione riguardo i dati usati per l’esercizio sono disponibili qui.
Esercizi
Esercizio 1
Si importi il dataset (descrizione) 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-2019 Federico Reali