Come utilizzare la funzione predict() con lm() in r


La funzione lm() in R può essere utilizzata per adattare modelli di regressione lineare.

Una volta adattato un modello, possiamo utilizzare la funzione predit() per prevedere il valore di risposta di una nuova osservazione .

Questa funzione utilizza la seguente sintassi:

predire (oggetto, nuovi dati, tipo = “risposta”)

Oro:

  • oggetto: il nome della regolazione del modello utilizzando la funzione glm()
  • newdata: il nome del nuovo frame di dati per cui fare previsioni
  • type: il tipo di previsione da effettuare.

L’esempio seguente mostra come utilizzare la funzione lm() per adattare un modello di regressione lineare in R e quindi come utilizzare la funzione predit() per prevedere il valore di risposta di una nuova osservazione che il modello non ha mai visto prima.

Esempio: utilizzo della funzione Predict() con lm() in R

Supponiamo di avere il seguente frame di dati in R che contiene informazioni su vari giocatori di basket:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

Supponiamo di voler applicare il seguente modello di regressione lineare multipla utilizzando i minuti giocati e il totale dei falli per prevedere il numero di punti segnati da ciascun giocatore:

punti = β 0 + β 1 (minuti) + β 2 (falli)

Possiamo usare la funzione lm() per adattare questo modello:

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

Utilizzando i coefficienti dei risultati del modello, possiamo scrivere l’equazione di regressione adattata:

punti = -11.8949 + 0.9774 (minuti) + 2.1838 (falli)

Possiamo quindi utilizzare la funzione predit() per prevedere quanti punti segnerà un giocatore che gioca per 15 minuti e commette 3 falli in totale:

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

Il modello prevede che questo giocatore segnerà 9.317731 punti.

Tieni presente che possiamo anche fare più previsioni contemporaneamente se abbiamo un frame di dati contenente più nuove osservazioni.

Ad esempio, il codice seguente mostra come utilizzare il modello di regressione adattato per prevedere i valori dei punti di tre giocatori:

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

Ecco come interpretare il risultato:

  • Il numero previsto di punti per il giocatore con 15 minuti e 3 falli è 9,32 .
  • Il numero previsto di punti per il giocatore con 20 minuti e 2 falli è 12.02 .
  • I punti attesi per il giocatore con 25 minuti e 1 fallo sono 14,72 .

Note sull’utilizzo di predit()

I nomi delle colonne nel nuovo frame di dati devono corrispondere esattamente ai nomi delle colonne nel frame di dati utilizzati per creare il modello.

Tieni presente che nel nostro esempio precedente, il frame di dati utilizzato per creare il modello conteneva i seguenti nomi di colonna per le nostre variabili predittive:

  • minuti
  • errori

Pertanto, quando abbiamo creato il nuovo frame di dati chiamato newdata, ci siamo assicurati di nominare anche le colonne:

  • minuti
  • errori

Se i nomi delle colonne non corrispondono, riceverai il seguente messaggio di errore :

 Error in eval(predvars, data, env)

Tienilo a mente quando usi la funzione predit() .

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 eseguire la regressione polinomiale in R
Come creare un intervallo di previsione in R

Aggiungi un commento

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