Categorische variabelen
In de vorige twee paragrafen is er een regressieanalyse gedaan met numerieke variabelen, variabelen met een numerieke waarde. Het kan wel eens voor komen dat je in een databestand ook wel eens niet-numerieke variabelen of waarden tegenkomt. Deze worden categorische variabelen genoemd. Dit zijn variabelen die namen of categorieën bevatten.
Het voorbeeldbestand
Bij de laatste twee hoofdstukken wordt er in de voorbeelden gebruik gemaakt van het databestand Projecten2.csv
. Je kunt zien dat het dezelfde data bevat als het bestand Projecten.csv
. Echter zijn eraan dit bestand 3 nieuwe, categorische, variabelen toegevoegd:
Werkgroep(A,B of C);
Maand (januari t/m december);
TypeProject(Alfa, Beta, Gamma, Delta).
De code die gebruikt wordt voor een regressieanalyse met categorische variabelen verschilt niet veel met de regressie met alleen numerieke variabelen. Het verschil is dat de categorische variabele in de code omgezet moet worden in een numerieke variabele.
In het volgende voorbeeld wordt de afhankelijke variabele Winst
voorspelt met de verklarende variabele Werkgroep. Omdat werkgroep een categorische variabele is en er voor een regressieanalyse met numerieke waarden gerekend moet worden, moet de categorische variabele Werkgroep omgezet worden in een numerieke variabele.
detach(Projecten)
## Error in detach(Projecten): invalid 'name' argument
attach(Projecten2)
# voorproefje van de Projecten2 dataset
str(Projecten2)
## 'data.frame': 100 obs. of 11 variables:
## $ Nummer : int 20131 20132 20133 20134 20135 20136 20137 20138 20139 20140 ...
## $ TevredenheidKlant: int 3 2 3 2 3 3 2 3 2 1 ...
## $ AfstandKlant : int 50 125 36 25 12 23 56 23 21 86 ...
## $ UrenProject : int 100 200 200 300 200 100 150 100 150 300 ...
## $ MateriaalKosten : int 987 645 789 546 788 987 546 878 879 132 ...
## $ PersoneelsKosten : int 2312 4654 5654 6786 8456 2515 3571 5641 1325 6511 ...
## $ OpbrengstProject : int 4000 8000 8000 12000 8000 4000 6000 4000 6000 12000 ...
## $ Winst : int 701 2701 1557 4668 -1244 498 1883 -2519 3796 5357 ...
## $ Type.Project : Factor w/ 3 levels "A","B","C": 1 3 2 3 1 1 2 1 2 3 ...
## $ Maand : Factor w/ 12 levels "april","augustus",..: 5 4 8 1 9 7 6 2 12 11 ...
## $ Werkgroep : Factor w/ 4 levels "Alfa","Beta",..: 1 2 4 3 3 2 1 3 2 1 ...
model4 <- lm(Winst~factor(Werkgroep), Projecten2)
model4
##
## Call:
## lm(formula = Winst ~ factor(Werkgroep), data = Projecten2)
##
## Coefficients:
## (Intercept) factor(Werkgroep)Beta factor(Werkgroep)Delta
## 4178.0 -1589.6 -3522.9
## factor(Werkgroep)Gamma
## 250.5
Door model4
in te toetsen wordt het geschatte model gepresenteerd. Het geschatte model bij deze regressieanalyse is:
Winst = 1479.1 +( 0 A) + (1987 B) + (4097.1 C)
.
Hierbij wordt alleen de waarde opgeteld voor de betreffende werkgroep. Als de winst dus geschat moet worden als Werkgroep C het project doet, is de berekening: 1479.1 + 1987 = 3.466.1
. Door summary(model4)
in te voeren, krijg je de formule van het model te zien:
summary(model4)
##
## Call:
## lm(formula = Winst ~ factor(Werkgroep), data = Projecten2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4595.5 -1305.6 -78.6 1236.9 4925.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4178.0 360.4 11.593 < 2e-16 ***
## factor(Werkgroep)Beta -1589.6 554.0 -2.869 0.00506 **
## factor(Werkgroep)Delta -3522.9 624.2 -5.644 1.68e-07 ***
## factor(Werkgroep)Gamma 250.5 497.9 0.503 0.61608
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1974 on 96 degrees of freedom
## Multiple R-squared: 0.3256, Adjusted R-squared: 0.3045
## F-statistic: 15.45 on 3 and 96 DF, p-value: 2.826e-08
Je kunt zien dat factor()
in het command van de regressie wordt geplaatst. Het kan gezien worden als een kleine toevoeging aan de categorische variabele.
Meer categorische variabelen
Een regressieanalyse uitvoeren met meerdere categorische variabelen gaat volgens hetzelfde principe als bij een enkelvoudige regressieanalyse met categorische variabelen.
Het command gaat volgens het principe: <NAAM VAN DE REGRESSIE> <-lm(<AFHANKELIJKE VARIABELE> ~ factor(<VERKLARENDE
VARIABELE 1>)+ as.numeric(<VERKLARENDE VARIABELE 2>)+ factor(<VERKLARENDE VARIABELE X…>), VARIABELE VAN HET BESTAND)
.
model5 <- lm(Winst ~ factor(Werkgroep) + as.numeric(Type.Project), Projecten2)
Door model5
in te voeren verschijnt het geschatte model:
Winst = 2706 + (0 A) + (1123 B) +(3274 C) + (-1121 Beta)+ (-2562 Delta) + (-140 Gamma). Ook in dit model met categorische variabelen wordt alleen de waarde opgeteld als de categorie van toepassing is. Als bijvoorbeeld de winst voorspeld moet worden als werkgroep C type project Gamma gaat doen, is de voorspelde winst 2706 + 3274 -140 = 5840.
Je vraagt je misschien af waarom de waarde bij
A
nul is. Deze zit al in de Intercept (1479) verwerkt.
Categorische variabelen bij de regressieanalyse gebruiken.
Door de summary()
functie te gebruiken, wordt de regressieanalyse gepresenteerd.
summary(model5)
##
## Call:
## lm(formula = Winst ~ factor(Werkgroep) + as.numeric(Type.Project),
## data = Projecten2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2625.6 -1172.1 -65.4 1011.9 6122.3
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 777.29 521.67 1.490 0.1395
## factor(Werkgroep)Beta -1031.12 441.53 -2.335 0.0216 *
## factor(Werkgroep)Delta -2316.16 514.81 -4.499 1.93e-05 ***
## factor(Werkgroep)Gamma -38.72 393.28 -0.098 0.9218
## as.numeric(Type.Project) 1645.50 211.94 7.764 9.43e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1552 on 95 degrees of freedom
## Multiple R-squared: 0.5874, Adjusted R-squared: 0.57
## F-statistic: 33.81 on 4 and 95 DF, p-value: < 2.2e-16
Aan de rijen van variabelen kunt u zien dat niet alle variabelen even significant zijn. In het voorbeeld is de rij met de factor Gamma
bijvoorbeeld niet significant. Dit betekent dat de voorspellingen die worden gedaan als Gamma erbij wordt betrokken, niet erg betrouwbaar zijn. Het is niet erg om de factor Gamma
in de formule te laten staan, maar de voorspellingen die worden gedaan met betrekking tot Gamma
zijn niet betrouwbaar. De Adjusted R-squared van 0.5759
laat zien dat de kwaliteit van het geschatte model redelijk hoog is.