Herkese merhaba!
R uygulamalar serisinin ilk bölümünde bir veri setinin basit doğrusal regresyon ile modellenmesini incelemiştik. Basit doğrusal regresyon analizi ile ilgili yazdığım yazıya ulaşmak için tıklayınız. Serinin ikinci bölümünde çoklu doğrusal regresyon analizine değineceğim.
Çoklu doğrusal regresyon, bir bağımlı değişken birden fazla bağımsız değişkenle açıklanmak istendiğinde kullanılan analiz yöntemlerinden biridir. Aşağıda çoklu doğrusal regresyon modeli gösterilmektedir:
Y=\beta_0+\beta_1X_1+\beta_2X_2+...+\beta_nX_n+\epsilon
Buradaki amacımız n tane bağımsız değişken kullanılarak bağımlı değişkeni tahmin etmeye çalışmaktır. Her bir bağımsız değişken için beta parametreleri (eğimler) kullanılmaktadır. Epsilon, hata terimini; Y ise bağımlı değişkeni göstermektedir.
Şimdi bir örnek veri seti ile başlayalım. R’da datarium paketi içerisinde marketing veri seti bulunmaktadır. Veri setini R’a yüklemek için kodlar aşağıda gösterilmektedir.
1 2 3 |
install.packages("datarium") library(datarium) data(marketing) |
İlk olarak veri setini tanıyalım. Veri seti 3 bağımsız değişkenden oluşmaktadır: youtube, facebook, newspaper. Bağımlı değişken ise sales değişkenidir. Buradaki amaç, farklı platformlardan reklam yapılarak bunun satış üzerindeki etkisini araştırmaktır. Şimdi veri setinin tanımlayıcı istatistiklerini elde edelim:
Tanımlayıcı İstatistikler
R’da summary() fonksiyonu kullanılarak tanımlayıcı istatistikler elde edilebilir:
1 |
summary(marketing) |
Burada her bir değişken için tanımlayıcı istatistik değerlerine ulaşılabilir. Örneğin; youtube için ortalama değer 176.45 olarak görülmektedir. Değişkenler arasındaki ilişkiyi incelemek için matris grafiğini oluşturalım.
Matris Grafiği
R’da plot() fonksiyonu kullanılarak matris grafiği oluşturulabilir.
1 |
plot(marketing) |
Burada değişkenlerin arasındaki ilişkiyi görebiliriz. Örneğin youtube ve sales değişkenleri arasında doğrusala yakın bir ilişki olduğunu söyleyebiliriz.
Şimdi çoklu doğrusal regresyon analizi uygulayarak çıktıyı yorumlayalım.
Çoklu Doğrusal Regresyon Modeli
Çoklu doğrusal regresyon modeli ve özet çıktı aşağıda gösterilmektedir:
1 2 |
model<-lm(sales~.,data=marketing) summary(model) |
R programlama dilinde anlamlı olan değişkenler * sembolü ile gösterilmektedir. Bağımlı değişkeni en iyi açıklayan değişkenler *** sembolü ile gösterilir. Burada youtube ve facebook değişkenleri bağımlı değişkeni en iyi açıklayan değişkenlerdir. Bunun için hipotez testi oluşturabiliriz. Oluşturulan hipotez testleri aşağıda gösterilmektedir:

Youtube ve facebook değişkenlerinde p değerinin 0.05’in altında olduğu görülmektedir. Yani H0 hipotezi reddedilir ve bu değişkenlerin anlamlı olduğunu söyleyebiliriz. Newspaper değişkeni ise anlamsız çıkmıştır. R kare değerinin ise 0.89 olduğunu görüyoruz. Yani satışlardaki toplam değişimin %89’u youtube, facebook ve newspaper değişkenlerindeki değişim tarafından açıklanmaktadır, yorumu yapılabilir. R kare değerinin bu model için iyi olduğunu söyleyebiliriz. Ancak newspaper değişkeninin çıkarılması gerekebilir. Bunu daha iyi anlayabilmek açısından stepwise regresyonu kullanabiliriz.
Stepwise Regresyon
Forward Selection (İleri Seçim)
İleri seçim ile hangi değişkenlerin modelde kalması gerektiğini görebiliriz. R kodları aşağıda gösterilmektedir:
1 2 3 |
install.packages("olsrr") library(olsrr) stepw_forward<-ols_step_forward_p(model) |
Bu çıktıya bakarak modele giren değişkenlerin youtube ve facebook olduğunu söyleyebiliriz. Stepwise için kullanılan diğer yöntem ise backward elemination (geriye doğru eleme) yöntemidir.
Backward Elemination (Geriye Doğru Eleme)
Bu yöntem ile hangi değişkenin modelden çıktığını görebiliriz. R kodları ve çıktı aşağıda gösterilmektedir:
1 |
stepw_backward<-ols_step_backward_p(model) |
Çıktıya göre newspaper değişkeninin modelden çıkması gerektiği yorumu yapılabilir.
İlk yazımda da bahsettiğim gibi gerçeğe yakın değerler elde edebilmek için doğrusal regresyonun bazı varsayımları sağlaması gerekiyor. Çoklu doğrusal regresyonda ise çoklu doğrusal bağlantı problemi oluşabilir. Bunun kontrolünüde yaparak analize devam edebiliriz. Bunun için R’da car kütüphanesinin içerisinde vif() fonksiyonu kullanılabilir.
1 2 3 |
install.packages("car") library(car) vif(model) |
Variance inflation factor (vif) değeri görüldüğü üzere 1’e çok yakın çıkmıştır. Bu değer genellikle 10’a yakın ve 10’un üzerinde olduğunda çoklu doğrusal bağlantı problemi olduğu yorumu yapılabilir. Bizim modelimizde böyle bir problem olmadığı görülmektedir.
Şimdi newspaper değişkenini çıkararak yeniden model kuralım ve varsayımları kontrol edelim.
Model 2
1 2 |
model2<-lm(sales~youtube+facebook,data=marketing) summary(model2) |
Değişkenlerin anlamlı olduğunu ve R kare değerinin 0.89 olduğunu görüyoruz. Şimdi varsayım kontrolüne bakalım.
1 2 |
par(mfrow=c(2,2)) plot(model2) |
QQ grafiğine baktığımızda artıkların normal dağılmadığını söyleyebiliriz. Varyans homojenliği için kesin bir yorum yapamayız. Normallik ve varyans homojenliği için “Shapiro – Wilk” ve “studentized Breusch – Pagan” testleri uygulanabilir. Şimdi R’da bu testleri uygulayalım.
1 2 |
shapiro.test(model2$residuals) bptest(sales~youtube+facebook,data=marketing) |
Shapiro – Wilk normallik testine göre p değeri 0.05’in altında çıkmıştır. Artıklar normal dağılmamaktadır, yorumu yapılabilir. Studentized Breusch – Pagan testine göre varyansların homojen olduğu söylenebilir. O halde dönüşüm uygulayarak artıkların normal dağılmasını sağlayalım ve yeniden model kuralım.
Model 3
Youtube değişkenine karekök dönüşümü uygulayabiliriz. Bunun için R kodu aşağıda gösterilmektedir.
1 |
youtube_new<-sqrt(marketing$youtube) |
Böylece youtube değişkenine karekök dönüşümü uygulamış olduk. Şimdi yeniden model oluşturalım.
1 2 |
model3<-lm(marketing$sales~youtube_new+marketing$facebook) summary(model3) |
Değişkenlerin anlamlı olduğunu ve R kare değerinin yükseldiğini görüyoruz. Şimdi varsayım kontrolüne bakalım:
1 2 |
par(mfrow=c(2,2)) plot(model3) |
Şimdi artıkların normale yaklaştığını görüyoruz. Kesin yorum yapabilmek için testleri uygulayalım.
1 2 |
shapiro.test(model3$residuals) bptest(marketing$sales~youtube_new+marketing$facebook) |
Evet, şimdi artıklar normal dağılmaktadır. Ancak ufak bir sorunumuz var, varyans homojenliğinin bozulduğunu görüyoruz. Artık analizinin yapıldığı grafiğe baktığımızda 131. gözlemin aykırı değer olduğunu söyleyebiliriz. O halde bu gözlemi çıkartarak analizimize devam edelim.
Model 4
İlk olarak 131. Gözlemi modelimizden çıkartıyoruz ve tekrardan youtube değişkenine karekök dönüşümü uyguluyoruz. R kodları aşağıda gösterilmektedir.
1 2 |
marketing_new<-marketing[-c(131),] youtube_x<-sqrt(marketing_new$youtube) |
Şimdi modelimizi oluşturalım:
1 2 |
model4<-lm(marketing_new$sales~youtube_x+marketing_new$facebook) summary(model4) |
R kare değerinin yükseldiğini görüyoruz, ayrıca değişkenlerin anlamlı olduğunu söyleyebiliriz. Şimdi varsayım kontrolünü yapalım.
1 2 |
par(mfrow=c(2,2)) plot(model4) |
1 2 |
shapiro.test(model4$residuals) bptest(marketing_new$sales~youtube_x+marketing_new$facebook) |
Her iki teste göre p değerlerinin 0.05’in üzerinde olduğunu söyleyebiliriz. Varyans homojenliği ve normalliğin sağlandığını görüyoruz.
Sonuç olarak oluşturulan 4. model çoklu doğrusal regresyon için en başarılı modeldir, yorumunu yapabiliriz. Böylece birden fazla bağımsız değişken olduğunda bu veri setini çoklu doğrusal regresyon ile nasıl modellememiz gerektiğini öğrenmiş olduk. Yaptığım analiz ile ilgili düşünceleriniz ve eleştirilerinizi yorum bölümünde belirtebilirsiniz. Bir sonraki bölümde görüşmek üzere…
Herkese sağlıklı günler dilerim 🙂
Diğer yazılarıma ulaşmak için tıklayınız.