Hoe lineaire regressie uit te voeren met categorische variabelen in r
Lineaire regressie is een methode die we kunnen gebruiken om de relatie tussen een of meer voorspellende variabelen en eenresponsvariabele te kwantificeren.
Vaak wilt u misschien een regressiemodel passen met een of meercategorische variabelen als voorspellende variabelen.
Deze tutorial biedt een stapsgewijs voorbeeld van hoe u lineaire regressie kunt uitvoeren met categorische variabelen in R.
Voorbeeld: lineaire regressie met categorische variabelen in R
Stel dat we het volgende dataframe in R hebben dat informatie bevat over drie variabelen voor 12 verschillende basketbalspelers:
- punten gescoord
- uren besteed aan oefenen
- trainingsprogramma gebruikt
#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
Stel dat we aan het volgende lineaire regressiemodel willen voldoen:
punten = β 0 + β 1 uur + β 2 programma
In dit voorbeeld zijn uren een continue variabele, maar programma is een categorische variabele die drie mogelijke categorieën kan aannemen: programma 1, programma 2 of programma 3.
Om aan dit regressiemodel te voldoen en R te vertellen dat de variabele „programma“ een categorische variabele is, moeten we as.factor() gebruiken om deze naar een factor te converteren en vervolgens het model aanpassen:
#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
Uit de waarden in de kolom Schatting kunnen we het gepaste regressiemodel schrijven:
punten = 6,3013 + 0,9744 (uren) + 2,2949 (programma 2) + 6,8462 (programma 3)
Hier leest u hoe u de coëfficiëntwaarden in het resultaat interpreteert:
- Uren : voor elk extra uur dat wordt besteed aan oefenen, stijgen de gescoorde punten met gemiddeld 0,9744, ervan uitgaande dat het programma constant blijft.
- De p-waarde is 0,015, wat aangeeft dat de uren besteed aan oefenen een statistisch significante voorspeller zijn van punten gescoord op het α = 0,05-niveau.
- schema2 : Spelers die schema 2 gebruikten scoorden gemiddeld 2,2949 punten meer dan spelers die schema 1 gebruikten, ervan uitgaande dat de uren constant blijven.
- De p-waarde is 0,078, wat aangeeft dat er geen statistisch significant verschil is in de punten die worden gescoord door spelers die programma 2 hebben gebruikt in vergelijking met spelers die programma 1 hebben gebruikt, op niveau α = 0,05.
- schema3 : Spelers die schema 3 gebruikten scoorden gemiddeld 2,2949 punten meer dan spelers die schema 1 gebruikten, ervan uitgaande dat de uren constant blijven.
- De p-waarde is 0,002, wat aangeeft dat er een statistisch significant verschil is in de punten die worden gescoord door spelers die schema 3 gebruikten in vergelijking met spelers die schema 1 gebruikten, op het α = 0,05-niveau.
Met behulp van het gepaste regressiemodel kunnen we het aantal punten voorspellen dat een speler scoort op basis van het totaal aantal uren training en het programma dat hij heeft gebruikt.
We kunnen bijvoorbeeld de volgende code gebruiken om de punten te voorspellen die zijn gescoord door een speler die 5 uur heeft getraind en trainingsschema 3 heeft gebruikt:
#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
Het model voorspelt dat deze nieuwe speler 18,01923 punten zal scoren.
We kunnen bevestigen dat dit correct is door de waarden van de nieuwe speler in de aangepaste regressievergelijking in te voegen:
- punten = 6,3013 + 0,9744 (uren) + 2,2949 (programma 2) + 6,8462 (programma 3)
- punten = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
- punten = 18.019
Dit komt overeen met de waarde die we hebben berekend met de functie voorspellen() in R.
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 maak je een restplot in R