Come eseguire la regressione lineare con variabili categoriali in r
La regressione lineare è un metodo che possiamo utilizzare per quantificare la relazione tra una o più variabili predittive e una variabile di risposta .
Spesso è necessario adattare un modello di regressione utilizzando una o più variabili categoriali come variabili predittive.
Questo tutorial fornisce un esempio passo passo di come eseguire la regressione lineare con variabili categoriali in R.
Esempio: regressione lineare con variabili categoriali in R
Supponiamo di avere il seguente frame di dati in R che contiene informazioni su tre variabili per 12 diversi giocatori di basket:
- punti segnati
- ore trascorse a esercitarsi
- programma formativo utilizzato
#create data frame df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18), hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6), program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)) #view data frame df points hours program 1 7 1 1 2 7 2 1 3 9 2 1 4 10 3 1 5 13 2 2 6 14 6 2 7 12 4 2 8 10 3 2 9 16 4 3 10 19 5 3 11 22 8 3 12 18 6 3
Supponiamo di voler adattare il seguente modello di regressione lineare:
punti = β 0 + β 1 ore + β 2 programma
In questo esempio, le ore sono una variabile continua, ma il programma è una variabile categoriale che può assumere tre possibili categorie: programma 1, programma 2 o programma 3.
Per adattare questo modello di regressione e dire a R che la variabile “programma” è una variabile categoriale, dobbiamo utilizzare as.factor() per convertirla in un fattore, quindi adattare il modello:
#convert 'program' to factor
df$program <- as. factor (df$program)
#fit linear regression model
fit <- lm(points ~ hours + program, data = df)
#view model summary
summary(fit)
Call:
lm(formula = points ~ hours + program, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.5192 -1.0064 -0.3590 0.8269 2.4551
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *
program2 2.2949 1.1369 2.019 0.078234 .
program3 6.8462 1.5499 4.417 0.002235 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05
Dai valori nella colonna Stima , possiamo scrivere il modello di regressione adattato:
punti = 6.3013 + 0.9744 (ore) + 2.2949 (programma 2) + 6.8462 (programma 3)
Ecco come interpretare i valori dei coefficienti nel risultato:
- Ore : per ogni ora aggiuntiva trascorsa a praticare, i punti segnati aumentano in media di 0,9744, assumendo che il programma rimanga costante.
- Il valore p è 0,015, indicando che le ore trascorse a praticare sono un predittore statisticamente significativo dei punti ottenuti al livello α = 0,05.
- programma2 : i giocatori che hanno utilizzato il programma 2 hanno ottenuto in media 2,2949 punti in più rispetto ai giocatori che hanno utilizzato il programma 1, assumendo che le ore rimangano costanti.
- Il valore p è 0,078, il che indica che non vi è alcuna differenza statisticamente significativa nei punti segnati dai giocatori che hanno utilizzato il programma 2 rispetto ai giocatori che hanno utilizzato il programma 1, al livello α = 0,05.
- programma3 : i giocatori che hanno utilizzato il programma 3 hanno ottenuto in media 2,2949 punti in più rispetto ai giocatori che hanno utilizzato il programma 1, assumendo che le ore rimangano costanti.
- Il valore p è 0,002, indicando che esiste una differenza statisticamente significativa nei punti segnati dai giocatori che hanno utilizzato il programma 3 rispetto ai giocatori che hanno utilizzato il programma 1, al livello α = 0,05.
Utilizzando il modello di regressione adattato, possiamo prevedere il numero di punti segnati da un giocatore in base al numero totale di ore trascorse ad allenarsi e al programma utilizzato.
Ad esempio, possiamo utilizzare il seguente codice per prevedere i punti segnati da un giocatore che si è allenato per 5 ore e ha utilizzato il programma di allenamento 3:
#define new player new <- data. frame (hours=c(5), program=as. factor (c(3))) #use the fitted model to predict the points for the new player predict(fit, newdata=new) 1 18.01923
Il modello prevede che questo nuovo giocatore segnerà 18.01923 punti.
Possiamo confermare che ciò è corretto inserendo i valori del nuovo giocatore nell’equazione di regressione adattata:
- punti = 6.3013 + 0.9744 (ore) + 2.2949 (programma 2) + 6.8462 (programma 3)
- punti = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
- punti = 18.019
Questo corrisponde al valore che abbiamo calcolato utilizzando la funzione predit() in R.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come eseguire una regressione lineare semplice in R
Come eseguire la regressione lineare multipla in R
Come creare una trama residua in R