Arabalar Verisinde Analizler

🚗 Bölüm 1: Veri Seti Seçimi

Analizlerde mtcars veri seti kullanılmıştır. Bu veri setinde farklı araba modelleri ve bu modellerin motor performans özellikleri yer almaktadır. Veri setini inceleyelim.

data("mtcars")
head(mtcars)
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

Veri setinde mpg (yakıt verimliliği), hp (motor gücü), wt (ağırlık) gibi değişkenler bulunmaktadır. Ben ağırlık (wt) ile yakıt verimliliği (mpg) arasındaki ilişkiyi inceleyeceğim.

🎨 Bölüm 2: İlişkiyi Görselleştirme

ggplot ile Grafik Oluşturma

Arac ağırlığı ile yakıt verimliliği arasındaki ilişkiyi incelemek için saçılım grafiği yapalım.

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "orange", alpha = 0.7, shape = 7) +
  labs(title = "\nArac Agırlıgı ile Yakıt Tuketimi Arasındaki İliski\n",
       x = "\nAgırlık\n",
       y = "\nYakıt Tuketimi\n") +
  theme_minimal()

Ağırlık arttıkça yakıt verimliliğinin azaldığı görülüyor. Yani negatif doğrusal bir ilişki var.

Regresyon eğrisi ekleyelim.

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "orange", alpha = 0.7, shape = 7) +
  geom_smooth(method = "lm", color = "darkblue", se = TRUE) +
  labs(title = "\nAgırlık-Yakıt Tuketimi İliskisi\n",
       x = "\nAgırlık\n",
       y = "\nYakıt Tuketimi\n") +
  theme_light()
## `geom_smooth()` using formula = 'y ~ x'

Doğrusal bir model (mavi çizgi) korelasyonun güçlü ve negatif olduğunu daha net ortaya koyuyor.

Korelasyon katsayısını hesaplayalım.

cor(mtcars$wt, mtcars$mpg)
## [1] -0.8676594

Sonuç yaklaşık -0.87. Bu oldukça güçlü negatif bir ilişkiyi göstermektedir.

Korelasyon katsayısı ekleyelim.

ggscatter(mtcars, x = "wt", y = "mpg",
          add = "reg.line",
          add.params = list(color = "darkblue"),
          conf.int = TRUE,
          cor.coef = TRUE,
          cor.method = "pearson",
          color = "orange",
          shape = 7,
          xlab = "\nAgırlık\n",
          ylab = "\nYakıt Tuketimi\n",
          title = "\nAgırlık-Yakıt Tuketimi İliskisi\n") +
  theme_light()

Korelasyon katsayısının -0.87 olduğu grafiğe eklendi.

Kutu grafikleri ekleyelim.

mtcars <- mtcars %>%
  mutate(agirlik_grup = cut(wt, breaks = 5))

ggplot(mtcars, aes(x = agirlik_grup, y = mpg)) +
  geom_boxplot(outlier.alpha = 0) +  
  geom_jitter(color = "orange", width = 0.2, alpha = 0.7, shape = 7) + 
  labs(title = "\nAgırlık Gruplarına Gore Yakıt Tuketimi\n",
       x = "\nAgırlık Grupları\n",
       y = "\nYakıt Tuketimi\n") +
  theme_light()

wt (ağırlık) değişkenini cut() ile 5 kategoriye bölüp agirlik_grup adlı yeni bir değişken oluşturdum. Her grup için mpg (yakıt verimliliği) değerlerinin kutu grafiğini çizdirdim. Ardından geom_jitter() ile noktaları serpiştirdim. Araçlar ağırlaştıkça yakıt verimliliğinin düştüğü görülmektedir.

pairs ve ggpairs ile Grafik Oluşturma

mtcars veri setinden birkaç değişken seçip yeni bir veri seti oluşturacağım.

veri <- mtcars %>%
  select(mpg, wt, hp, disp)

mtcars verisinden ağırlık (wt), motor hacmi (disp), yakıt verimliliği (mpg) ve motor gücü (hp) sütunları seçilerek yeni bir veri seti oluşturulmuştur.

pairs(veri,
      main = "Degiskenler Arası İliskiler",
      pch = 7,
      lower.panel = NULL,
      col = "orange")

ggpairs(data = veri, 
  title = "Degiskenler Arası İliskiler",
  upper = list(continuous = "cor"),  
  lower = list(continuous = "smooth"), 
  diag = list(continuous = "densityDiag"), 
  progress = FALSE) +
  theme_minimal() 

Bu grafikler, değişkenlerin birbirine göre saçılımını göstermektedir. mpg ile diğer değişkenler arasında negatif, diğer tüm değişkenler arasında pozitif ilişki görünmektedir.

corrplot ile Grafik Oluşturma

Önce yukarda oluşturduğumuz veri ile korelasyon matrisi oluşturalım.

corr_matrix <- cor(veri)
corr_matrix
##             mpg         wt         hp       disp
## mpg   1.0000000 -0.8676594 -0.7761684 -0.8475514
## wt   -0.8676594  1.0000000  0.6587479  0.8879799
## hp   -0.7761684  0.6587479  1.0000000  0.7909486
## disp -0.8475514  0.8879799  0.7909486  1.0000000

Şimdi matrisi corrlot ile görselleştirelim.

corrplot(corr_matrix,
         method = "color",
         type = "upper",
         addCoef.col = "black",
         tl.col = "black",
         title = "\nKorelasyon Matrisi\n",
         mar = c(0,0,1,0))

Bu grafikte, mavi = pozitif ilişki, kırmızı = negatif ilişkiyi, rengin koyuluğu ise ilişkinin gücünü göstermektedir. Mpg diğer hepsi ile negatif ilişkideyken diğer değişkenler birbirleri ile pozitif ilişki içindedir.

ggcorrplot ile Grafik Oluşturma

ggcorrplot(corr_matrix,
           hc.order = TRUE, 
           type = "lower",   
           lab = TRUE,     
           colors = c("red", "white", "blue"),
           title = "\nKorelasyon Grafigi\n") +
  theme_minimal()
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggcorrplot package.
##   Please report the issue at <https://github.com/kassambara/ggcorrplot/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Bu grafik diğerleri gibi mpg, wt, hp ve disp değişkenleri arasındaki korelasyonları göstermektedir. mpg (yakıt verimliliği) değişkeninin wt (ağırlık), hp (motor gücü) ve disp (motor hacmi) ile güçlü negatif korelasyon gösterdiği görülmektedir. Yani araçların ağırlığı, motor gücü ve hacmi arttıkça yakıt verimliliği azalmaktadır. Diğer yandan, wt, hp ve disp değişkenleri kendi aralarında pozitif yönde güçlü ilişkiler vardır.

📑 Öğrenme Günlüğü

pch base pakette olduğu için ggplot grafiğimde çalıştıramadım. Onun yerine shape argümanını kullandım. Sayıların karşılıkları her ikisinde de neredeyse aynıymış. Shape 83 yapınca adımın baş harfi “S” oluyor 😊 Sayıların sembol karşılıkları şöyleymiş:

stat_regline_equation() fonksiyonu ile grafiğe regresyon denklemi eklenir.

patchwork ile grafikler birlikte verilebilir.

ggscatter() ile korelasyon katsayısı ve anlamlılık değeri otomatik yazdırılır.

Kutu grafiklerinde kategorik veriler kullanıldığı için sayısal bir değişkeni cut() ve breaks argümanlarıyla gruplara ayırır.

geom_boxplot(outlier.alpha = 0) komutu aykırı değerleri gizler.

geom_jitter() fonksiyonunun verileri birbirine çakışmadan gösterir.

geom_text(aes(label = xxx)) yaparak kutu grafiğindeki noktaların üzerine numara yazdırılabiliyor.

Logaritmik dönüşümler: ilişkiyi görmeyi kolaylaştırır. coord_trans grafiğin koordinatları; scale_x_log10 ve scale_y_log10 her eksenin log (taban-10) dönüşümü için kullanılır.

corrplot: Korelasyon matrisini görsel kareler veya dairelerle gösterir.

ggcorrplot: Aynı matrisi ggplot estetiğiyle daha düzenli biçimde çizer.

pairs: Değişken çiftleri için otomatik saçılım grafikleri üretir.

ggpairs: Daha gelişmiş bir sürüm. Histogram, korelasyon değeri ve scatter plot’ları bir arada sunar.

alpha ve jitter grafiğin okunabilirliği artırır.