Hoe de functie predict() te gebruiken met lm() in r


De functie lm() in R kan worden gebruikt om lineaire regressiemodellen aan te passen.

Zodra we een model hebben aangepast, kunnen we de functie voorspellen() gebruiken om de responswaarde van een nieuwe waarneming te voorspellen.

Deze functie gebruikt de volgende syntaxis:

voorspellen(object, nieuwedata, type = “antwoord”)

Goud:

  • object: De naam van de modelaanpassing met behulp van de glm() functie
  • newdata: de naam van het nieuwe dataframe waarvoor voorspellingen moeten worden gedaan
  • type: Het type voorspelling dat moet worden gedaan.

Het volgende voorbeeld laat zien hoe u de functie lm() kunt gebruiken om een lineair regressiemodel in R te passen, en vervolgens hoe u de functie voorspellen() kunt gebruiken om de responswaarde te voorspellen van een nieuwe waarneming die het model nog nooit eerder heeft gezien.

Voorbeeld: gebruik van de functie Predict() met lm() in R

Stel dat we het volgende dataframe in R hebben dat informatie bevat over verschillende basketbalspelers:

 #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

Stel dat we het volgende meervoudige lineaire regressiemodel willen toepassen met behulp van gespeelde minuten en totale fouten om het aantal door elke speler gescoorde punten te voorspellen:

punten = β 0 + β 1 (minuten) + β 2 (overtredingen)

We kunnen de functie lm() gebruiken om dit model aan te passen:

 #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

Met behulp van de coëfficiënten uit de modelresultaten kunnen we de passende regressievergelijking schrijven:

punten = -11,8949 + 0,9774 (minuten) + 2,1838 (overtredingen)

We kunnen dan de functie voorspellen() gebruiken om te voorspellen hoeveel punten een speler die 15 minuten speelt en in totaal 3 fouten begaat, zal scoren:

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

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

       1 
9.317731

Het model voorspelt dat deze speler 9,317731 punten zal scoren.

Merk op dat we ook meerdere voorspellingen tegelijk kunnen doen als we een dataframe hebben dat meerdere nieuwe waarnemingen bevat.

De volgende code laat bijvoorbeeld zien hoe je het gepaste regressiemodel kunt gebruiken om de puntwaarden van drie spelers te voorspellen:

 #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 

Zo interpreteert u het resultaat:

  • Het verwachte puntenaantal voor de speler met 15 minuten en 3 fouten is 9,32 .
  • Het verwachte puntenaantal voor de speler met 20 minuten en 2 fouten is 12,02 .
  • De verwachte punten voor de speler met 25 minuten en 1 fout zijn 14,72 .

Opmerkingen over het gebruik van voorspellen()

De kolomnamen in het nieuwe dataframe moeten exact overeenkomen met de kolomnamen in het dataframe die zijn gebruikt om het model te maken.

Merk op dat in ons vorige voorbeeld het dataframe dat we gebruikten om het model te maken de volgende kolomnamen bevatte voor onze voorspellende variabelen:

  • minuten
  • fouten

Dus toen we het nieuwe dataframe met de naam newdata creëerden, zorgden we ervoor dat we de kolommen ook een naam gaven:

  • minuten
  • fouten

Als de kolomnamen niet overeenkomen, ontvangt u het volgende foutbericht :

 Error in eval(predvars, data, env)

Houd hier rekening mee wanneer u de functie voorspellen() gebruikt.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe eenvoudige lineaire regressie uit te voeren in R
Hoe meervoudige lineaire regressie uit te voeren in R
Hoe polynomiale regressie uit te voeren in R
Een voorspellingsinterval maken in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert