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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *