R'de kukla değişkenler nasıl oluşturulur (adım adım)
Kukla değişken, kategorik bir değişkeni iki değerden birini alan sayısal bir değişken olarak temsil edebilmemiz için regresyon analizinde oluşturduğumuz bir değişken türüdür: sıfır veya bir.
Örneğin, aşağıdaki veri setine sahip olduğumuzu ve geliri tahmin etmek için yaş ve medeni durumu kullanmak istediğimizi varsayalım:
Medeni durumu bir regresyon modelinde yordayıcı değişken olarak kullanmak için onu kukla değişkene dönüştürmemiz gerekir.
Bu şu anda üç farklı değer alabilen kategorik bir değişken olduğundan (“Bekar”, “Evli” veya “Boşanmış”) k -1 = 3-1 = 2 kukla değişken oluşturmamız gerekiyor.
Bu kukla değişkeni oluşturmak için, en sık göründüğü için temel değer olarak “Tek” bırakabiliriz. İşte medeni durumu kukla değişkenlere nasıl dönüştüreceğimiz:
Bu eğitimde, R’de bu kesin veri kümesi için kukla değişkenlerin nasıl oluşturulacağı ve ardından bu kukla değişkenleri öngörücü olarak kullanarak regresyon analizinin nasıl gerçekleştirileceği konusunda adım adım bir örnek sunulmaktadır.
1. Adım: Verileri oluşturun
Öncelikle R’de veri kümesini oluşturalım:
#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
Adım 2: Kukla Değişkenleri Oluşturun
Daha sonra, kukla değişkenleri tanımlamak için R’deki ifelse() fonksiyonunu kullanabiliriz ve ardından regresyon modelini oluşturmak için kullanmak istediğimiz son veri çerçevesini tanımlayabiliriz:
#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
Adım 3: Doğrusal Regresyon Gerçekleştirin
Son olarak, çoklu doğrusal regresyon modeline uyum sağlamak için lm() fonksiyonunu kullanabiliriz:
#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
Takılan regresyon çizgisi şu şekilde ortaya çıkıyor:
Gelir = 14.276,1 + 1.471,7*(yaş) + 2.479,7*(evli) – 8.397,4*(boşanmış)
Bir bireyin yaşına ve medeni durumuna göre tahmini gelirini bulmak için bu denklemi kullanabiliriz. Örneğin, 35 yaşında ve evli bir kişinin tahmini geliri 68.264 ABD Doları olacaktır:
Gelir = 14.276,2 + 1.471,7*(35) + 2.479,7*(1) – 8.397,4*(0) = 68.264 ABD Doları
Tablodaki regresyon katsayılarını şu şekilde yorumlayabilirsiniz:
- Kesişme: Kesişme, sıfır yaşındaki tek bir kişinin ortalama gelirini temsil eder. Açıkçası sıfır yıla sahip olamazsınız, dolayısıyla bu özel regresyon modelinde kesişimi tek başına yorumlamanın bir anlamı yoktur.
- Yaş: Yaştaki her yıllık artış, gelirde ortalama 1.471,70 ABD doları artışla ilişkilidir. P değeri (0,004) 0,05’ten küçük olduğundan yaş, gelirin istatistiksel olarak anlamlı bir göstergesidir.
- Evli: Evli bir kişi, bekar bir kişiden ortalama 2.479,70 $ daha fazla kazanıyor. P değeri (0,800) 0,05’ten küçük olmadığından bu fark istatistiksel olarak anlamlı değildir.
- Boşanmış: Boşanmış bir kişi, bekar bir kişiden ortalama 8.397,40 dolar daha az kazanıyor. P değeri (0,532) 0,05’ten küçük olmadığından bu fark istatistiksel olarak anlamlı değildir.
Her iki kukla değişken de istatistiksel olarak anlamlı olmadığından, gelire öngörücü bir değer katmadığı için medeni durumu bir yordayıcı olarak modelden çıkarabilirdik.