R'de kategorik değişkenlerle doğrusal regresyon nasıl gerçekleştirilir?
Doğrusal regresyon, bir veya daha fazla öngörücü değişken ile bir yanıt değişkeni arasındaki ilişkiyi ölçmek için kullanabileceğimiz bir yöntemdir.
Çoğu zaman, bir veya daha fazla kategorik değişkeni yordayıcı değişkenler olarak kullanarak bir regresyon modeli uydurmak isteyebilirsiniz.
Bu eğitimde, R’de kategorik değişkenlerle doğrusal regresyonun nasıl gerçekleştirileceğine ilişkin adım adım bir örnek sunulmaktadır.
Örnek: R’de Kategorik Değişkenlerle Doğrusal Regresyon
R’de 12 farklı basketbol oyuncusu için üç değişken hakkında bilgi içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
- kazanılan puanlar
- pratik yapmak için harcanan saatler
- kullanılan eğitim programı
#create data frame df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18), hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6), program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)) #view data frame df points hours program 1 7 1 1 2 7 2 1 3 9 2 1 4 10 3 1 5 13 2 2 6 14 6 2 7 12 4 2 8 10 3 2 9 16 4 3 10 19 5 3 11 22 8 3 12 18 6 3
Aşağıdaki doğrusal regresyon modeline uymak istediğimizi varsayalım:
puan = β 0 + β 1 saat + β 2 program
Bu örnekte saatler sürekli bir değişkendir ancak program üç olası kategoriyi alabilen kategorik bir değişkendir : program 1, program 2 veya program 3.
Bu regresyon modelini uydurmak ve R’ye “program” değişkeninin kategorik bir değişken olduğunu söylemek için as.factor() kullanarak onu bir faktöre dönüştürmemiz ve ardından modeli yerleştirmemiz gerekir:
#convert 'program' to factor
df$program <- as. factor (df$program)
#fit linear regression model
fit <- lm(points ~ hours + program, data = df)
#view model summary
summary(fit)
Call:
lm(formula = points ~ hours + program, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.5192 -1.0064 -0.3590 0.8269 2.4551
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *
program2 2.2949 1.1369 2.019 0.078234 .
program3 6.8462 1.5499 4.417 0.002235 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05
Tahmin sütunundaki değerlerden uygun regresyon modelini yazabiliriz:
puan = 6,3013 + 0,9744 (saat) + 2,2949 (program 2) + 6,8462 (program 3)
Sonuçtaki katsayı değerlerinin nasıl yorumlanacağı aşağıda açıklanmıştır:
- Saatler : Programın sabit kaldığı varsayılarak, pratik yapmak için harcanan her ilave saat için, kazanılan puanlar ortalama 0,9744 artar.
- P değeri 0,015’tir; bu, pratik yapmak için harcanan saatlerin α = 0,05 düzeyinde kazanılan puanların istatistiksel olarak anlamlı bir yordayıcısı olduğunu gösterir.
- Program2 : Saatlerin sabit kalacağı varsayılarak, Program 2’yi kullanan oyuncular, Program 1’i kullanan oyunculardan ortalama 2,2949 daha fazla puan elde etti.
- P değeri 0,078’dir; bu, α = 0,05 düzeyinde, program 2’yi kullanan oyuncuların, program 1’i kullanan oyuncularla karşılaştırıldığında elde ettiği puanlarda istatistiksel olarak anlamlı bir fark olmadığını gösterir.
- Program3 : Saatlerin sabit kalacağı varsayılarak, Program 3’ü kullanan oyuncular, Program 1’i kullanan oyunculardan ortalama 2,2949 daha fazla puan elde etti.
- P değeri 0,002’dir; bu, α = 0,05 düzeyinde program 1’i kullanan oyuncularla karşılaştırıldığında program 3’ü kullanan oyuncuların attığı puanlarda istatistiksel olarak anlamlı bir fark olduğunu gösterir.
Uygun regresyon modelini kullanarak, antrenmanda harcanan toplam saat sayısına ve kullandıkları programa göre bir oyuncunun attığı puan sayısını tahmin edebiliriz.
Örneğin, 5 saat antrenman yapan ve antrenman programı 3’ü kullanan bir oyuncunun puanlarını tahmin etmek için aşağıdaki kodu kullanabiliriz:
#define new player new <- data. frame (hours=c(5), program=as. factor (c(3))) #use the fitted model to predict the points for the new player predict(fit, newdata=new) 1 18.01923
Model, bu yeni oyuncunun 18,01923 puan alacağını öngörüyor.
Yeni oyuncunun değerlerini uygun regresyon denklemine yerleştirerek bunun doğru olduğunu doğrulayabiliriz:
- puan = 6,3013 + 0,9744 (saat) + 2,2949 (program 2) + 6,8462 (program 3)
- puan = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
- puan = 18.019
Bu, R’deki tahmin() işlevini kullanarak hesapladığımız değerle eşleşir.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de basit doğrusal regresyon nasıl gerçekleştirilir
R’de çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de artık arsa nasıl oluşturulur