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.