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.

results matching ""

    No results matching ""