R ile iki değişkenli (bivariate) analiz

Share on:

İki değişkenli analiz amacıyla yapılabilecek ilk analizlerden birisi dağılım grafiği (scatterplot) çizmektir. Dağılım grafiği iki değişken arasındaki ilişkiyi görsel olarak ortaya koymakta, birlikte artıp azalmalarını veya zıt bir biçimde hareket edip etmediklerini görmemizi sağlamaktadır. Dağılım grafiği çizerken değişkenleri bağımlı ve bağımsız değişken mantığıyla değerlendirebiliriz. Bu doğrultuda bağımlı değişkeni y, bağımsız değişkeni de x ekseni üzerine oturtabiliriz.

Örnek olarak yine mtcars verisetinde bulunan değişkenleri analiz edelim. Öncelikle araçların beygir gücüyle yakıt sarfiyatı (bir milde harcadığı yakıt miktarı) arasındaki ilişkiye göz atalım:

plot(mtcars$hp,mtcars$mpg)

Grafikte öncelikli olarak iki değişken arasında bir ilişki olup olmadığını, bağımlı değişkenin ve bağımsız değişkenin birlikte hareket edip etmediğini gözlemlemeliyiz. İkinci olarak ilişkinin şeklini incelememiz gerekmekte. Doğrusal bir ilişki var mı, veya verileri dönüştürerek doğrusal hale getirebilir miyiz? Bu sorular veri analizi için önem arzetmektedir. Yukarıdaki grafikte araçların beygir gücü arttıkça bir galon yakıtla gidebildiği mesafenin azaldığını, yani yakıt sarfiyatlarının arttığını görmekteyiz.

İki değişken arasındaki ilişkiyi numerik olarak ölçmek için korrelasyon analizi kullanılmaktadır. İki değişken arasındaki correlasyon değerini cor() komutuyla hesaplamaktayız.

cor(mtcars$hp,mtcars$mpg)
## [1] -0.7761684

Korrelasyon değeri sıfır ile bir arasında değişen bir değerdir. Korrelasyon değeri sıfıra yaklaştıkça değişken arasında zayıf bir ilişki olduğu ve bire yaklaştıkça güçlü bir ilişki olduğunu söyleyebiliriz. Korrelasyon değerinin negatif olması değişkenler arasında ters bir ilişki olduğunu, yani değişkenlerden birisi artarken diğerinin azaldığını ortaya koymaktadır. Yukarıdaki analizimizde korrelasyon değerinin negatif oluşunu dağılım grafiğiyle de doğrulamak mümkün. Görüldüğü gibi araçların beygir gücü arttıkça, yakıt performansı kötüleşmektedir.

İki değişken arasındaki ilişkiyi regresyon analiziyle de numerik olarak ortaya koyabiliriz. Regresyon analizi R’da lm() fonksiyonuyla üretilmektedir.

reg <- lm(mtcars$mpg~mtcars$hp)
summary(reg)
## 
## Call:
## lm(formula = mtcars$mpg ~ mtcars$hp)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.7121 -2.1122 -0.8854  1.5819  8.2360 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 30.09886    1.63392  18.421  < 2e-16 ***
## mtcars$hp   -0.06823    0.01012  -6.742 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.863 on 30 degrees of freedom
## Multiple R-squared:  0.6024, Adjusted R-squared:  0.5892 
## F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07

Regresyon analizinin detaylarını başka bir yazıya bırakarak temel istatistikleri yorumlayalım. Öncelikli olarak analiz sonuçlarını reg ismini verdiğimiz değişkene atadık ve summary() komutuyla analiz sonuçlarını ekrana getirdik. Analizde beygir gücüyle yakıt sarfiyatı arasında istatiksel olarak anlamlı ve negatif bir ilişki olduğunu görmekteyiz. (hp ile başlayan satırın sonunda yer alan üç nokta değişkenler arasında anlamlı ilişki olduğunu göstermektedir.)

Regresyon analizinde gördüğümüz ilişkiyi abline() komutuyla görsel olarak dağılım grafiği üzerinde de görebilriiz.

reg <- lm(mtcars$mpg~mtcars$hp)
par(cex=.8)
plot(mtcars$hp,mtcars$mpg)
abline(reg)

Burada aynı regresyon analizini tekrar yapıyoruz. Ardından cex parametresiyle dağılım grafiğindeki noktaları biraz küçültüyoruz. Üçüncü satırda grafiği oluşturup, dördüncü satırda regresyon hattını grafik üzerine çiziyoruz. Regresyon hattının yönü değişkenler arasındaki negatif ilişkiyi göstermektedir.

İki değişken arasındaki ilişkiyi gözlemleyebileceğimiz temel analiz çeşitlerinden birisi de iki-yönlü tablo (two-way table) üretmektir. Daha çok kategorik verilerin analizinde kullanılan bu yöntem diğer veri türlerinde de (biraz uzunca tablolar üretmekle birlikte) kullanılabilir.

table (mtcars$cyl,mtcars$carb)
##    
##     1 2 3 4 6 8
##   4 5 6 0 0 0 0
##   6 2 0 0 4 1 0
##   8 0 4 3 6 0 1

Yukarıdaki tabloda araçların silindir sayısıyla karbüratör sayısı arasındaki ilişki görülebilmektedir. Satırlar silindir sayısını ve sütunlar karbüratör sayısını göstermektedir. Silindir sayısı arttıkça, karbüratör miktarı da artmaktadır. table() yerine ftable() fonksiyonuyla görsel olarak biraz daha düzgün tablolar üretebiliriz.