Dummyvariabelen maken in r (stap voor stap)


Een dummyvariabele is een type variabele die we creëren in regressieanalyse, zodat we een categorische variabele kunnen weergeven als een numerieke variabele die een van de twee waarden kan aannemen: nul of één.

Stel dat we de volgende gegevensset hebben en leeftijd en burgerlijke staat willen gebruiken om het inkomen te voorspellen:

Om de burgerlijke staat als voorspellende variabele in een regressiemodel te gebruiken, moeten we deze omzetten in een dummyvariabele.

Omdat dit momenteel een categorische variabele is die drie verschillende waarden kan aannemen („Single“, „Married“ of „Divorced“), moeten we k -1 = 3-1 = 2 dummyvariabelen maken.

Om deze dummyvariabele te maken, kunnen we ‚Single‘ als basiswaarde laten staan, aangezien deze het vaakst voorkomt. Dus hier is hoe we de burgerlijke staat zouden omzetten in dummyvariabelen:

Deze zelfstudie biedt een stapsgewijs voorbeeld van hoe u dummyvariabelen voor deze exacte gegevensset in R kunt maken en vervolgens regressieanalyse kunt uitvoeren met deze dummyvariabelen als voorspellers.

Stap 1: Creëer de gegevens

Laten we eerst de dataset in R maken:

 #create data frame
df <- data. frame (income=c(45000, 48000, 54000, 57000, 65000, 69000,
                          78000, 83000, 98000, 104000, 107000),
                 age=c(23, 25, 24, 29, 38, 36, 40, 59, 56, 64, 53),
                 status=c('Single', 'Single', 'Single', 'Single',
                          'Married', 'Single', 'Married', 'Divorced',
                          'Divorced', 'Married', 'Married'))

#view data frame
df

   income age status
1 45000 23 Single
2 48000 25 Single
3 54000 24 Single
4 57000 29 Single
5 65000 38 Married
6 69000 36 Single
7 78000 40 Married
8 83000 59 Divorced
9 98000 56 Divorced
10 104000 64 Married
11 107000 53 Married

Stap 2: Maak de dummyvariabelen

Vervolgens kunnen we de functie ifelse() in R gebruiken om dummyvariabelen te definiëren en vervolgens het uiteindelijke dataframe te definiëren dat we willen gebruiken om het regressiemodel te bouwen:

 #create dummy variables
married <- ifelse (df$status == ' Married ', 1, 0)
divorced <- ifelse (df$status == ' Divorced ', 1, 0)

#create data frame to use for regression
df_reg <- data. frame (income = df$income,
                     age = df$age,
                     married = married,
                     divorced = divorced)

#view data frame
df_reg

   income age married divorced
1 45000 23 0 0
2 48000 25 0 0
3 54000 24 0 0
4 57000 29 0 0
5 65000 38 1 0
6 69000 36 0 0
7 78000 40 1 0
8 83000 59 0 1
9 98000 56 0 1
10 104000 64 1 0
11 107000 53 1 0

Stap 3: Voer lineaire regressie uit

Ten slotte kunnen we de functie lm() gebruiken om een meervoudig lineair regressiemodel te passen:

 #create regression model
model <- lm (income ~ age + married + divorced, data=df_reg)

#view regression model output
summary(model)

Call:
lm(formula = income ~ age + married + divorced, data = df_reg)

Residuals:
    Min 1Q Median 3Q Max 
-9707.5 -5033.8 45.3 3390.4 12245.4 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 14276.1 10411.5 1.371 0.21266   
age 1471.7 354.4 4.152 0.00428 **
married 2479.7 9431.3 0.263 0.80018   
divorced -8397.4 12771.4 -0.658 0.53187   
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8391 on 7 degrees of freedom
Multiple R-squared: 0.9008, Adjusted R-squared: 0.8584 
F-statistic: 21.2 on 3 and 7 DF, p-value: 0.0006865

De gepaste regressielijn blijkt te zijn:

Inkomen = 14.276,1 + 1.471,7*(leeftijd) + 2.479,7*(gehuwd) – 8.397,4*(gescheiden)

We kunnen deze vergelijking gebruiken om het geschatte inkomen van een persoon te vinden op basis van zijn leeftijd en burgerlijke staat. Een persoon van 35 jaar en getrouwd zou bijvoorbeeld een geschat inkomen hebben van $ 68.264 :

Inkomen = 14.276,2 + 1.471,7*(35) + 2.479,7*(1) – 8.397,4*(0) = $68.264

Zo interpreteert u de regressiecoëfficiënten in de tabel:

  • Intercept: Het intercept vertegenwoordigt het gemiddelde inkomen van een alleenstaande van nul jaar oud. Het is duidelijk dat je geen nuljaren kunt hebben, dus het heeft geen zin om het snijpunt op zichzelf te interpreteren in dit specifieke regressiemodel.
  • Leeftijd: Elk jaar dat de leeftijd stijgt, gaat gepaard met een gemiddelde inkomensstijging van $ 1.471,70. Omdat de p-waarde (0,004) kleiner is dan 0,05, is leeftijd een statistisch significante voorspeller van het inkomen.
  • Getrouwd: Een getrouwde persoon verdient gemiddeld $2.479,70 meer dan een alleenstaande. Omdat de p-waarde (0,800) niet kleiner is dan 0,05, is dit verschil niet statistisch significant.
  • Gescheiden: Een gescheiden persoon verdient gemiddeld €8.397,40 minder dan een alleenstaande. Omdat de p-waarde (0,532) niet kleiner is dan 0,05, is dit verschil niet statistisch significant.

Omdat beide dummyvariabelen niet statistisch significant waren, konden we de burgerlijke staat als voorspeller uit het model verwijderen, omdat deze geen voorspellende waarde lijkt toe te voegen aan het inkomen.

Einen Kommentar hinzufügen

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