1. Veri Yapısı

1.1. Veri Seçimi

Ödev kapsamında, 1974 yılında yayımlanan “Motor Trens US” dergisindeki arabaların özelliklerine yönelik oluşturulan mtcars seti tercih edilmiştir. Bu veri setinde, 32 farklı araba modeline yönelik 11 farklı değişken bulunmaktadır. Ayrıca,bu değişkenler araçların yakıt tüketimi, motor gücü, ağırlığı, silindir sayısı ve hızlanma performansı gibi teknik özellikleri yansıtmaktadır. Bu veri setine yönelik internet üzerinde gerçekleştirdiğim incelemeler kapsamında da veri setinin ilişkisel incelemeler açısından uygun olduğunu gözlemlemiş bulunmaktayım. Bu doğrultuda R kapsamında base yapısında bulunan mtcars ile birlikte veri setini RMarkdown’a aktarmış bulunmaktayım.

1.2. Paketleri Aktif Etme

Veri setinin incelemesinde kullanılması planlanan dplyr, ggplot2, tidyverse, patchwork,corrplot, ggpubr, ggally,psych ve PerformanceAnalytics paketleri library() komutu ile aktif edilmiştir.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ lubridate 1.9.4     ✔ tibble    3.3.0
## ✔ purrr     1.1.0     ✔ tidyr     1.3.1
## ✔ readr     2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr)
library(patchwork)
library(corrplot)
## corrplot 0.95 loaded
library(GGally)
library(psych)
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## 
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## 
## Attaching package: 'PerformanceAnalytics'
## 
## The following object is masked from 'package:graphics':
## 
##     legend

1.3. Veri Setini Aktarma

Paketlerin aktif edilmesinin ardından base içerisindeki mtcars seti data() fonksiyonuyla birlikte set1 seti olarak aktarılmıştır.

data(mtcars)
set1 <- mtcars

1.4. Veri Setinin Genel Yapısı

Veri setinin yüklenmesinin ardından setin genel yapısının incelenmesi gerekmektedir. Bu kapsamda ilk olarak değişken yapılarının gözlenmesi amacıyla dim() fonksiyonu kullanılmıştır. Ardından setteki değişkenlerin, veri türünün incelenmesi amacıyla glimpse() fonksiyonu kullanılmıştır. Belirtilen fonksiyonların çalıştırılmasıyla birlikte sette 32 gözlem ve 11 değişken saptanmıştır. Bu doğrultuda sette 32 farklı arabanın incelendiği söylenebilir. Bununla birlikte arabaların incelenmesi kapsamında mpg, cyl, disp, hp,wt gibi değişkenlere yer verildiği de ifade edilebilir. Son olarak, tüm verilerin türü ise dbl dir.

dim(set1)
## [1] 32 11
glimpse(set1)
## Rows: 32
## Columns: 11
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,…
## $ cyl  <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,…
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 16…
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180…
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92,…
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.…
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18…
## $ vs   <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,…
## $ am   <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
## $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3,…
## $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,…

1.5 Veri Setindeki Degisken Adlarının Guncellenmesi

Veri setindeki değişken adlarının belirlemesinin ardından kısaltılmış araba terimleri hakkında bilgisi olmayan kişilerin (kendim gibi) değişkenleri daha iyi anlayabilmesi ve veri setinin kullanışlılığını arttırmak için rename() fonksiyonu ile set Türkçeleştirilmiştir. Türkçeleştirmenin tamamlanmasının ardından ise gerçekleştirilen düzenlemelerin kontrolü amacıyla colnames() fonksiyonu kullanılmıştır.

1974’teki verilere dayanan bu setteki değişkenler incelendiğinde ise yakit_tuketimi değişkeni arabaların bir galon benzinle kaç mil yol gittiğini, silindir_sayisi motorun silindir adedini, motor_hacmi aracın motorundaki silindirlerde yer alan toplam hacmi/motor büyüklüğünü, motor_gucu ise arabanın beygir gücünü ifade etmektedir. Ayrıca, arka_aks_oranı aracın diferansiyel oranını, agırlık libre cinsinden ağırlığı, hızlanma_suresi arabanın çeyrek milde kaç saniye de gittiğini, motor_tipi motor yapısını, şanzıman_tipi şanzıman tipini, vites_sayısı aracın ileri vites sayısını, karbüratör_sayısı ise motorda bulunan karbüratör adedini göstermektedir.

Tüm bu değişkenler, otomobillerin performans, yakıt verimliliği ve teknik özellikleri arasındaki ilişkileri çok boyutlu olarak analiz etmeye olanak sağlamaktadır. Son olarak yeniden adlandırılmalı veri seti set2 olarak tanımlanmıştır.

library(dplyr)

set2 <- set1 %>%
  rename(
    yakit_tuketimi = mpg,
    silindir_sayisi = cyl,
    motor_hacmi = disp,
    motor_gucu = hp,
    arka_aks_orani = drat,
    agirlik = wt,
    hizlanma_suresi = qsec,
    motor_tipi = vs,
    sanziman_tipi = am,
    vites_sayisi = gear,
    karburator_sayisi = carb
  )
colnames(set2)
##  [1] "yakit_tuketimi"    "silindir_sayisi"   "motor_hacmi"      
##  [4] "motor_gucu"        "arka_aks_orani"    "agirlik"          
##  [7] "hizlanma_suresi"   "motor_tipi"        "sanziman_tipi"    
## [10] "vites_sayisi"      "karburator_sayisi"

1.6. Kayıp Veri Saptama ve Kayıp Verileri Temizleme

Set 2 kapsamındaki kayıp verileri saptamak amacıyla colSums(is.na()) fonksiyonu kullanılmıştır. Bu doğrultuda veri seti içerisinde herhangi bir kayıp veriye saptanmamıştır. Eğer kayıp veri saptansaydı na.omit(), drop_na() ve complete.cases() fonksiyonlarıyla birlikte veri setini düzenleyebilirdik.

colSums(is.na(set2))
##    yakit_tuketimi   silindir_sayisi       motor_hacmi        motor_gucu 
##                 0                 0                 0                 0 
##    arka_aks_orani           agirlik   hizlanma_suresi        motor_tipi 
##                 0                 0                 0                 0 
##     sanziman_tipi      vites_sayisi karburator_sayisi 
##                 0                 0                 0

1.7. Veri Setindeki Degerleri Turkiye Sistemine Uygulama

Veri seti kapsamındaki değerler Amerikan sistemine göre yapılmıştır. Bu yapının Türkiye sistemine uyarlanması için mutate() fonksiyonuyla birlikte yakit_tuketimi, motor_hacmi, agirlik ve motor_gucu değişkenlerini düzenledim. Bu kapsamda mil/galon -> L/100km, inç3 -> litre, 1000 lb -> kg ve hp -> kW değişimler gerçekleştirildi. Ardından değişimin kontrol edilmesi amacıyla glimpse() fonksiyonu kullanılmıştır.

set3 <- set2 %>%
  mutate(
    yakit_tuketimi_l_100km = 235.214 / yakit_tuketimi,       # mil/galon → L/100 km
    motor_hacmi_litre = motor_hacmi * 0.016387,              # inç³ → litre
    agirlik_kg = agirlik * 1000 * 0.453592,                  # 1000 lb → kg
    motor_gucu_kw = motor_gucu * 0.7457                      # hp → kW
  ) %>%
  select(yakit_tuketimi_l_100km, silindir_sayisi, motor_hacmi_litre, motor_gucu_kw,
         arka_aks_orani, agirlik_kg, hizlanma_suresi, motor_tipi, sanziman_tipi,
         vites_sayisi, karburator_sayisi)

glimpse(set3)
## Rows: 32
## Columns: 11
## $ yakit_tuketimi_l_100km <dbl> 11.200667, 11.200667, 10.316404, 10.991308, 12.…
## $ silindir_sayisi        <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8,…
## $ motor_hacmi_litre      <dbl> 2.621920, 2.621920, 1.769796, 4.227846, 5.89932…
## $ motor_gucu_kw          <dbl> 82.0270, 82.0270, 69.3501, 82.0270, 130.4975, 7…
## $ arka_aks_orani         <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69,…
## $ agirlik_kg             <dbl> 1188.4110, 1304.0770, 1052.3334, 1458.2983, 156…
## $ hizlanma_suresi        <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84…
## $ motor_tipi             <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0,…
## $ sanziman_tipi          <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ vites_sayisi           <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3,…
## $ karburator_sayisi      <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4,…

2. Tum Degiskenler Arası Ilişkileri Inceleme

Bu kapsamda aşağıdaki değişkenler arası ilişki ele alınmıştır.

2.1. geom_point() ve geom_jitter() ile Degiskenler Arası Iliski

Bu grafik kapsamında motor hacmi ve motor gücü arasındaki ilişkinin şanzıman tipi gruplarına göre ele alınması hedeflenmiştir.Bu kapsamda geom_point() ve geom_jitter() fonksiyonlarıyla birlikte grafikler oluşturulmuştur. Bu süreçte her iki grafikte de noktaların boyutu size ile 4 olarak, nokta renkleri color ile kırmızı, saydamlık yapısı alpha ile 0.4 olarak ayarlanmıştır. Buna karşın, standart hataların grafiklerde yansıtılması sürecinde geom_smooth() kapsamında se=TRUE ile standart hata yansıtılırken, geom_jitter() (box_plot temelli) kapsamında se=FALSE ile standart hata yansıtılmamıştır. Ayrıca her iki grafikte de stat_regline_equation() ile oluşan regresyon denklemleri sol üst köşede yansıtılmıştır. Gruplar arasındaki ayrımın elde edilmesi için ise facet_wrap() fonksiyonuna şanzıman tipi ataması gerçekleştirilmiştir. Son olarak, her iki grafikte de theme_dark() ile tema ataması, geom_vline() ile orta çizgi ataması mor renkli ve kesikli olacak şekilde atanmıştır. Ayrıca patchwork paketinden faydalanarak grafikler yan yana konulmuştur.

Elde edilen grafikler doğrultusunda ise her iki şanzıman tipinde de hacmin arttığı durumlarda motor gücünde de artış gerçekleştiği gözlenmiştir.Bununla birlikte, “0” kodlu şanzıman tipi açısından bakıldığında y=19x+31 regresyon denklemi elde edilmiştir. Bu doğrultuda her bir litre hacim artışında motor gücünün 19 kW arttığı ifade edilebilir. Bunun yanı sıra, “1” kodlu şanzıman tipi incelendiğinde ise y=41x-0.75 denklemi elde edilmiştir. Bu doğrultuda her bir litreik artışta motor gücünün 41 kw kadar artış olduğunu ifade edebiliriz. Bu iki denklem kapsamında “1” numaralı şanzımanın daha fazla güç verimliliği sağladığı ifade edilebilir. İkinci grafikte ise ek olarak, kutu grafikleri incelendiğinde şanzıman tipi sıfır olanlarda güç medyanının 130 kW civarında olduğu, şanzıman tipi bir olanda ise 80 kW civarı olduğu gözlenmiştir.

library(ggpubr) 
library(patchwork)

a<- ggplot(data = set3, aes(x = motor_hacmi_litre, y = motor_gucu_kw)) +
    geom_point(size = 4, color = "red", alpha = 0.4) +
    geom_smooth(method = "lm", color = "black", se = TRUE) +
  stat_regline_equation() +
  facet_wrap(~sanziman_tipi)+
  labs(
    title = "Motor Hacmi ve Motor Gucu Arası İliski",
    x = "Motor Hacmi (LT)",
    y = "Motor Gucu (kW)"
  ) +
    theme_dark()+
   geom_vline(xintercept = 4, linetype = "dashed", color = "purple", size = 2)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
b<- ggplot(data = set3, aes(x = motor_hacmi_litre, y = motor_gucu_kw)) +
  geom_boxplot()+
    geom_jitter(size = 4, color = "red", alpha = 0.4, width = 2) +
    geom_smooth(method = "lm", color = "black", se = FALSE) +
  stat_regline_equation() +
  facet_wrap(~sanziman_tipi)+
  labs(
    title = "Motor Hacmi ve Motor Gucu Arası İliski",
    x = "Motor Hacmi (LT)",
    y = "Motor Gucu (kW)"
  ) +
    theme_dark()+
   geom_vline(xintercept = 4, linetype = "dashed", color = "purple", size = 2)

(a | b)
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## `geom_smooth()` using formula = 'y ~ x'

2.2.corrplot() Temelli Iliskisel Analiz

Corrplot fonksiyonuyla birlikte mtcars veri setindeki sayısal veriler arasındaki ilişkinin ele alınması hedeflenmiştir. Bu kapsamda ilk olarak select() fonksiyonuyla birlikte sayısal değerler seçilmiştir ve sayisal_degerliler olarak atanmıştır. Ardından rcorr ile matris ataması oluşturulup corr_res$p/r ile de korelasyon katsayıları ve anlamlılık değerleri hesaplanmıştır. Gerçekleştirilen hesaplamanın ardından ise corplot() fonksiyonuyla birlikte iki farklı şekilde grafik oluşturulmuştur. Bu grafiklerden ilkinde oluşturma metodu olarak color, ikincisinde ise square seçilmiştir. Bunun yanı sıra, ilkinde oluşturma yönü açısından upper, ikincisinde ise lower seçilmiştir. Sütunlarda yazan renkler açısından ise tl.col kodu ile ilkinde yazılar mavi renkle, ikincisinde ise kırmızı renkle şekillendirme gerçekleştirilmiştir. Ardından her iki grafikte title ve hc.order atamaları ise aynı tutulmuştur. Bu grafikleri oluştururken tek takıldığım nokta ise grafikteki yazıların boyutunu istediğim gibi yapamamam oldu.

Oluşturulan grafiklerden yola çıkarak ise renkler ve karelerden yola çıkarak motor hacmi, motor gücü, yakıt tüketimi ve ağırlık değişkenleri arasında güçlü pozitif korelasyon olduğu gözlenmektedir. Buna karşın, grafikte renklerin kırmızıya veya kare boyutunun küçülmesine bağlı olarak negatif korelasyon yapısının oluştuğu gözlemlenmektedir.

library(dplyr)
library(Hmisc)
## 
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
## 
##     describe
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
library(corrplot)

sayisal_degerliler <- set3 %>%
  select(yakit_tuketimi_l_100km, motor_hacmi_litre, motor_gucu_kw, agirlik_kg, hizlanma_suresi)

corr_res <- rcorr(as.matrix(sayisal_degerliler))
r <- corr_res$r
p <- corr_res$P

corrplot(r, method ="color", type="upper", tl.col = "blue", title ="Sayisal Degiskenler Arasi Ilıski", hc.order = TRUE)
## Warning in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt =
## tl.srt, : "hc.order" is not a graphical parameter
## Warning in text.default(pos.ylabel[, 1], pos.ylabel[, 2], newrownames, col =
## tl.col, : "hc.order" is not a graphical parameter
## Warning in title(title, ...): "hc.order" is not a graphical parameter

sayisal_degerliler <- set3 %>%
  select(yakit_tuketimi_l_100km, motor_hacmi_litre, motor_gucu_kw, agirlik_kg, hizlanma_suresi)

corr_res <- rcorr(as.matrix(sayisal_degerliler))
r <- corr_res$r
p <- corr_res$P

corrplot(r, method ="square", type="lower", tl.col = "red", title ="Sayisal Degiskenler Arasi Ilıski", hc.order = TRUE)
## Warning in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt =
## tl.srt, : "hc.order" is not a graphical parameter
## Warning in text.default(pos.ylabel[, 1], pos.ylabel[, 2], newrownames, col =
## tl.col, : "hc.order" is not a graphical parameter
## Warning in title(title, ...): "hc.order" is not a graphical parameter

2.3. ggcorplot() Temelli Degiskenler Arası Iliski

Bu grafik kapsamında değişkenlerin tamamı arasındaki korelasyonun hesaplanmasını hedefledim. Bu kapsamda ggcorplot() ile gerekli grafiği oluşturdum. Süreçte ilk olarak cor() fonksiyonuyla birlikte tüm değişkenler arasındaki ilişkiyi ele aldım. Ardından ggcorplot() fonksiyonuyla birlikte grafiğin temelini oluşturdum. Bu kapsamda method olarak circle ataması, her dairenin içinde korelasyon katsayısının gözükmesi iin lab = TRUE, korelasyon değerlerinin boyutunu ayarlamak için lab_size= fonksiyonuyla 2 ataması ve title yapısıyla birlikte grafiğe başlık ataması yapmış bulunmaktayım.

İlk ortaya çıkan grafikte karmaşık bir yapının hakim olmasına bağlı olarak coord_fixed() fonksiyonuyla birlikte en-boy oranı ayarlaması yapmış bulunmaktayım. Tema ataması için ise theme_minimal() fonksiyonunu ve temadaki boyutları ayarlamak için theme(axis.text.x/y = element_text (size=6/5)) ataması yaptım. Ardından x eksenindeki yazıların anlaşılır olmamasına bağlı olarak angle= yapısıyla birlikte 45 derecelik atama yaparak yazıların okunurluğunu arttırmaya çalıştım. Son olarak, lejant pozisyonunu ise üst kısma ayarlamış bulunmaktayım.

Elde edilen grafik doğrultusunda ise motor hacmi-silindir sayısı, ağırlık-yakıt tüketimi arasında güçlü korelasyonlar gözlenmişken, motor gücü- hızlanma arasında negatif güçlü korelasyon gözlenmiştir. Ayrıca, motor tipi- hızlanma süresi arasında da güçlü pozitif ilişki gözlenmiştir. Bu grafik kapsamında tüm ilişkilere yönelik yorum yapılabilir. Buna karşın, özet bir bilgi niteliğinde bu paragrafı yazmış bulunmaktayım.

library(ggcorrplot)
corr_matrix <- cor(set3)
ggcorrplot(corr_matrix, method = "circle", lab = TRUE,lab_size = 2,
           title = "mtcars Veri Seti Korelasyon Matrisi")+
  coord_fixed()+
  theme_minimal()+
  theme(axis.text.y = element_text(size= 6),axis.text.x = element_text(size= 5, angle = 45), legend.position = "top")+
  labs(x= "Değişkenler", y = "Değişkenler")
## 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.
## Coordinate system already present.
## ℹ Adding new coordinate system, which will replace the existing one.

2.4.ggpairs() Temelli Degiskenler Arası Iliski

Bu grafik kapsamında yukarıda oluşturulmuş olan sayisal_degerliler setindeki değişkenler arasındaki ilişkiyi ele almayı hedefledim.Bu kapsamda süreçte ggpairs() ile korelasyon katsayısı, saçılma grafiği ve yoğunluk grafiği oluşturmayı hedefledim. Bu doğrultuda başlık atamasını title() yapısı ile gerçekleştirdim. Ayrıca upper/lower/diag = list(continuous = wrap("cor/densitydiag/smooth", size = 2, color = "blue", alpha=)) değerleriyle birlikte korelasyon, yoğunluk grafiği ve saçılım grafiklerine yönelik düzenleme gerçekleştirdim. Tema ataması için ise theme_minimal() fonksiyonunu ve temadaki boyutları ayarlamak için theme(axis.text.x/y = element_text (size=5)) ataması yaptım. Ardından x eksenindeki yazıların anlaşılır olmamasına bağlı olarak angle= yapısıyla birlikte 45 derecelik atama yaparak yazıların okunurluğunu arttırmaya çalıştım. Bu konuda yaşadığım tek sıkıntı sağ kısımdaki yazıların düzenlenmesi oldu.

Oluşturulan bu grafik doğrutlusunda sayısal değişkenler arasındaki ilişkilerin korelasyon, anlamlılık gibi yapılarla ele alınması amaçlanmıştır. Bu doğrultuda elde edilen sonuçlarda saçılım grafiği incelendiğinde en güçlü ve pozitif olan korelasyonun yakıt tüketimi-ağırlık ve motor hacmi- ağırlık arasında olduğu gözlenmektedir. Bu doğrultuda ağır ve büyük motorlu arabalarda yakıt tüketiminin arttığı söylenebilir. Buna karşın, motor gücü- hızlanma süresi arasındaki ilişkiye bakıldığında ise güçlü negatif korelasyon gözlenmiştir. Bu doğrultuda motor gücü arttıkça hızlanma süresinin kısaldığını ifade edebiliriz. Bu grafik kapsamında tüm ilişkilere yönelik yorum yapılabilir. Buna karşın, özet bir bilgi niteliğinde bu paragrafı yazmış bulunmaktayım.

library(GGally)
ggpairs(
  sayisal_degerliler,
  title = "Sayısal Degiskenler Arasındaki Iliskiler",
  upper = list(continuous = wrap("cor", size = 2, color = "blue")),   
  lower = list(continuous = wrap("smooth", alpha = 0.3, color = "red")),
  diag = list(continuous = wrap("densityDiag", alpha = 0.5, fill = "purple"))
) +
  labs(x = "Degiskenler", y = "Degiskenler")+
  theme_minimal() +
  theme(
    plot.title = element_text(size = 8, face = "bold"),
    axis.text.x = element_text(size = 5, angle = 45),
    axis.text.y = element_text(size = 5)
  )

3. Iki Degisken Arası Iliski Denemeleri

Bu süreç kapsamında tüm kodlarda benzer bir yapı olması hedeflenmiştir. Süreç kapsamında geom_boxplot ve geom_jitter fonksiyonlarıyla birlikte iki grafiğin birleştirilmesi hedeflenmiştir. Bu grafiklerin oluşturulması sürecinde y ekseni sabit tutulmakla birlikte x ekseni tüm grafiklerde değiştirilmiştir. geom_jitter yapısı baksamında boyut ayarlaması için size, renk ayarlaması için color, saydamlık ayarlaması için alpha ve şekilsel ekleme için ise shape yapıları kullanılmıştır. Bunun ardından geom_smooth fonksiyonu ele alınmıştır ve bu kapsamda method olarak lm yapısı, renk için color, standart hata yapısının ayarlanması için ise se yapıları kullanılmıştır. Ardından regresyon denkleminin oluşturulması amacıyla ise stat_regline_equation(), korelasyon değerlerinin ele alınması için ise stat_cor yapısını kullanmış bulunmaktayım. Bu yapıyı kendi araştırmalarımla birlikte öğrenmiş olmakla birlikte doğru kullandığımı düşünmekteyim. İstatistiksel değerlerin eklenmesinin ardından ise okunurluğu arttırmak amacıyla labs fonksiyonuyla birlikte x,y,başlık ataması, theme_dark() ile tema ataması ve geom_vline() fonksiyonuyla da sabit çizgi ataması yapmış bulunmaktayım.

Üstteki grafik kapsamında motor tipi temelli şekilde arka aks oranı ve hızlanma süresi arasındaki ilişkinin ele alınması hedeflenmişitr. Bu kapsamda arka aks oranının artmasıyla birlikte hızlanma sürecinin düştüğünü ifade edebiliriz. Tip 1 motor kapsamında da benzer bir yapıya ulaşılmıştır. Ancak bu yapı kapsamında ilişki anlamsız bulunmuştur. Sol alt köşedeki grafiğe bakıldığı zaman ise ağırlık ve hızlanma süresi arasındaki ilişkiye bakılmıştır. Bu kapsamda Tip 0 motor açısından bakıldığında anlamsız bir ilişki bulunmuşken, tip 1 motor kapsamında ise güçlü, anlamlı ve negatif bir korelasyon sapnamıştır. Bu doğrultuda ağır araçların kısa sürede hızlandığı ifade edilebilir. Sağ alt köşedeki grafikte ise motor gücü ve hızlanma süresi arasındaki ilişki ele alınmıştır. Bu kapsamda Tip 0 motor kapsamında motor gücü anlamlı şekilde hızlanmaya sebep olur. Buna karşın, Motor Tipi 1 grubunda korelasyon çok zayıf ve istatistiksel olarak anlamsızdır , bu da bu grupta Motor Gücü’nün performans üzerindeki etkisinin güvenilir bir şekilde saptanamadığını gösterir.

library(ggpubr)
library(patchwork)

ab<- ggplot(data = set3, aes(x = arka_aks_orani, y = hizlanma_suresi)) +
  geom_boxplot()+
    geom_jitter(size = 3, color = "yellow", alpha = 0.5, shape = 5) +
    geom_smooth(method = "lm", color = "black", se = TRUE) +
  stat_regline_equation() +
  stat_cor(
    method = "pearson", 
    cor.coef.name = "R", 
    label.x.npc = "left", 
    label.y.npc = "bottom")+
  facet_wrap(~motor_tipi)+
  labs(
    title = "Arka Aks Oranı ve Hızlanma Suresi Arası İliski",
    x = "Arka Aks Orani",
    y = "Hızlanma Suresi"
  ) +
    theme_dark()+
   geom_vline(xintercept = 4, linetype = "dashed", color = "purple", size = 2)

bc <- ggplot(data = set3, aes(x = agirlik_kg, y = hizlanma_suresi)) +
  geom_boxplot()+
    geom_jitter(size = 4, color = "red", alpha = 0.6, width = 3, shape = 3) +
    geom_smooth(method = "lm", color = "black", se = TRUE) +
  stat_regline_equation() +
  stat_cor(
    method = "pearson", 
    cor.coef.name = "R", 
    label.x.npc = "left", 
    label.y.npc = "bottom")+
  facet_wrap(~sanziman_tipi)+
  labs(
    title = "Agirlik ve Hizlanma Suresi Arası Iliski",
    x = "Agirlik",
    y = "Hizlanma Suresi"
  ) +
    theme_dark()+
   geom_vline(xintercept = 1250, linetype = "dashed", color = "purple", size = 2)

cd <- ggplot(data = set3, aes(x = motor_gucu_kw, y = hizlanma_suresi)) +
  geom_boxplot()+
    geom_jitter(size = 4, color = "pink", alpha = 0.8, width = 2, shape = 4) +
    geom_smooth(method = "lm", color = "black", se = FALSE) +
  stat_regline_equation() +
  stat_cor(
    method = "pearson", 
    cor.coef.name = "R", 
    label.x.npc = "left", 
    label.y.npc = "bottom")+
  facet_wrap(~motor_tipi)+
  labs(
    title = "Motor Gucu ve Hizlanma Suresi Arası İliski",
    x = "Motor Gucu",
    y = "Hizlanma Suresi"
  ) +
    theme_dark()+
   geom_vline(xintercept = 4, linetype = "dashed", color = "purple", size = 2)

(ab) / (bc | cd)
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## `geom_smooth()` using formula = 'y ~ x'

3.1. Iki Degisken Arası Iliski Denemeleri (İkinci Tür)

Bu grafik oluşturma sürecinde ilk olarak cor() fonksiyonuyla birlikte değişkenler arasındaki korelasyon katsayısını Pearson temelli şekilde hesaplamış bulunmaktayım. Ardından geom_point ile saçılım grafiğini, geom_smooth ile regresyon eğrisi ekleme süreçlerini gerçekleştirmiş bulunmaktayım. Oluşturulan grafiklerde korelasyon katsayısını yansıtmak amacıyla annotate("", x=, y=, label=, hjust=, color=) fonksiyonuyla birlikte açıklayıcı not eklemiş bulunmaktayım. Ardından grafiklerin x, y eksenlerine ve başlığına yönelik isim atamak amacıyla labels() fonksiyonunu kullanmış bulunmaktayım. En son olarak da (doğru anladığımdan emin değilim) boxplotları grafiğin dış kısmında yansıtmak amacıyla ggmarginal(set,type = "", fill="") fonksiyonun kullanıldığını öğrendim ve uygulamaya çalıştım.

Birinci grafik kapsamında zayıf pozitif bir korelasyon gözlenmektedir. Regresyon eğrisiyle ve noktaların dağılımından yola çıkarak arka aks oranının hızlanma süresini anlamlı veya öngörülebilir bir şekilde etkilemediğini söylenebilir. İkinci grafik kapsamında ise zayıf negatif bir korelasyon gözlenmiştir. Dağınık veri noktaları ve yataya yakın regresyon çizgisi, ağırlık artışının hızlanma süresini güçlü bir şekilde etkilemediğini göstermektedir. Üçüncü grafik kapsamında ise motor gücü ve hızlanma arasında güçlü negatif korelasyon gözlenmiştir. Bu durum motor gücündeki artışın hızlanma süresini güvenilir bir şekilde kısalttığını göstermektedir.

library(ggplot2)
library(ggExtra)
library(patchwork)

rdeg <- cor(set3$arka_aks_orani, set3$hizlanma_suresi, method = "pearson")
abc <- ggplot(set3, aes(arka_aks_orani, y = hizlanma_suresi)) +
  geom_point(size = 2, alpha = 0.5, shape = 16) +
   geom_smooth(method = "lm", color = "black", se = TRUE)+
  annotate("text",
           x = Inf, y = Inf,
           label = paste0("r = ", round(rdeg, 2)),
           hjust = 1.2, vjust = 1.5,
           color = "white", size = 5) +
  labs(title = "Arka Aks Orani ve Hizlanma Suresi Arası İliski",
       x= "Arka Aks Orani",
       y= "Hizlanma Suresi") +
  theme_dark()
ggMarginal(abc, type = "boxplot", fill = "blue")
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

rdeg1 <- cor(set3$agirlik_kg, set3$hizlanma_suresi, method = "pearson")
abd <- ggplot(set3, aes(x = agirlik_kg, y = hizlanma_suresi)) +
  geom_point(size = 2, alpha = 0.9, shape = 8) +
   geom_smooth(method = "lm", color = "black", se = TRUE)+
  annotate("text",
           x = Inf, y = Inf,
           label = paste0("r = ", round(rdeg1, 2)),
           hjust = 1.2, vjust = 1.5,
           color = "white", size = 5) +
  labs(title = "Agirlik ve Hizlanma Suresi Arası İliski",
       x= "Agırlık",
       y= "Hizlanma Suresi") +
  theme_dark()
ggMarginal(abd, type = "boxplot", fill = "red")
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

rdeg2 <- cor(set3$motor_gucu_kw, set3$hizlanma_suresi, method = "pearson")
abe <- ggplot(set3, aes(x = motor_gucu_kw, y = hizlanma_suresi)) +
  geom_point(size = 3, alpha = 0.4, shape = 2) +
   geom_smooth(method = "lm", color = "black", se = TRUE)+
  annotate("text",
           x = Inf, y = Inf,
           label = paste0("r = ", round(rdeg2, 2)),
           hjust = 1.2, vjust = 1.5,
           color = "white", size = 5) +
  labs(title = "Motor Gucu ve Hizlanma Suresi Arası İliski",
       x= "Motor Gucu",
       y= "Hizlanma Suresi") +
  theme_dark()
ggMarginal(abe, type = "boxplot", fill = "pink")
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

4. RMarkdown Ogrenme Gunlugum (29.10.2025)

29.10.2025 tarihinde gerçekleştiridiğimiz ders kapsamında regresyon ve korelasyonun temel kodlarını öğrendiğimizi ifade edebilirim. Bu kapsamda ilk olarak önceki haftalarda öğrenmiş olduğumuz geom_smooth(method = "lm", se = T/F, color ="") yapısıyla birlikte regresyon doğrusu oluşturabileceğimizi ele aldık. Bu kapsamda se=T/F yapısının anlamını tekrardan hatırladım. Bu yapıda se=TRUE olduğunda standart hatayı da görebiliyoruz. Bunun yanı sıra, geom_point(size =) ile grafikte nokta büyüklüğü düzenleyebildiğimizi ele aldık.

Bu hafta kapsamında ele aldığımız en önemli paketin ise ggpubr() kitaplığı olduğunu düşünmekteyim. Bu kitaplık kapsamında stat_regline_equaiton() fonksiyonuyla birlikte oluşturduğumuz regresyon formulüne yönelik olarak denklem oluşturabildiğimizi öğrendim. Burada regresyon denklemini yorumlama konusunda kafa karışıklığı yaşadığımı ifade edebilirim. Bunun yanı sıra, ggscatter(data =, x="",y="", add ="reg.line", conf.int=TRUE, cor.coef =TRUE, cor.method ="pearson") fonksiyonuyla birlikte ele aldığımız yapılara yönelik regresyon katsayısını ve regresyon anlamlılığını ele alabileceğimizi anladım. Burada ilişki ele alınırken Pearson temelli bir şekilde gerçekleştirilmektedir. Buna karşın, diğer korelasyon yöntemleriyle birlikte de sürecin gerçekleştirilebileceğini anladım.

Bu fonksiyonlar yanı sıra, bazı durumlarda x ekseninde bulunan yapının kategorik hale getirilmesiyle birlikte y ekseni kapsamında incelenmesi gerekebilir. Bu kapsamda mutate(yeni_degisken_adı=cut(degisecek_degisken, breaks = sayi degeri)) ile sürekli veri kategorik yapıya çevrilebilir(Saçılım Grafiğinde). Bu yapı sadece sadece geom_jitter/point fonksiyonuyla değil aynı zaman boxplot ile de ele alınabilir. Hatta bu iki yapının bir arada alındığını da öğrendim. Bunun için geom_boxplot ve geom_jitter peşpeşe yapılandırılmalıymış. Bu yapının daha detaylı yorumlar yapılabilmesi açısından önemli olduğunu düşünmekteyim. Ayrıca outlier.alpha = 0 ile de aykırı noktalar olmaması açısından önemli olduğunu düşündüm(box_plot içine).

Korelasyon konusunda ise çok çeşitli yapılar öğrendim. Özellikle patchwork() paketi kapsamında grafiklerin alt alta dizilmesine yönelik yapı dikkatimi çekti. Bunun için örneğin (grafik1 I grafik2) / (grafik3 I grafik4) yapısını verebilirim (Düz çigiyi yapamadığım için I koydum). Ayrıca LOESS eğrisi ile de parabol şeklinde bir desen çizilebiliyormuş. Bunun yanı sıra, bazı verilerde karmaşık bir yapı ortaya çıktığında logaritmik dönüşüm yapılabileceğini öğrendim. Logaritmik dönüşüme yönelik olarak coord_trans(x="log10",y="log10"),scale_x/y_log10 yapılarıyla birlikte dönüşümün sağlanabileceğini anladım. Ayrıca bu yapılarda yorumda logaritmik temelli yapılmalıymış.

Aykırı değer incelemesi kapsamında ise özellikle geom_jitter ve geom_point kapsamında alpha değerinde değişiklikler yapılarak incelemenin kolaylaşabileceğini anladım. Bunun yanı sıra, bundan önce kodlarda gördüğüm element_blank() yapısıyla boş eleman tanımlaması yapabileceğimi hatırladım.

Korelasyona yönelik hesaplama sürecinde ise cor(x,y) fonksiyonuyla birlikte Pearson moment temelli hesaplamaların yapıldığını ve bu hesaplamalarda eksik veri olduğunda NA değeriyle karşılaşacağımı öğrendim. Bu yapıların kaldırılması için ise use() ya da pairwise.complete.obs() fonksiyonlarının kullanılması gerektiğini anladım. Özellikle yaptığım denemelerde pairwise.complete.obs() yapısının satırı silmesine bağlı olarak daha etkili olduğunu düşündüm.

Korelasyona yönelik grafiklerin oluşturulması sürecinde ise corrplot() ve Hmisc() paketlerinden yararlandığımızı öğrendim. Bu kapsamda rcorr(as.matrix(data)) yapısıyla birlikte verinin matrise dönüşümü sağlanmaktadır. Bunun ardından ise r<-corr_Res$r yapısıyla korelasyon katsayısı ve p <- corr_Res$p yapısıyla birlikte de anlamlılık değerinin saptandığını öğrendim. En son kısımda ise corrplot(r) ile korelasyon tablosunun oluşturulduğunu öğrendim (dairesel şekillerle). Bu fonksiyonla oluşan şekillerde de corrplot(r,method= "square", outline = T/F, addgrid.col ="renk", type="lower", orders ="hlust") yapısıyla değişiklikler yapılabilmektedir. Ayrıca, korelasyon ilişkilerini yansıttığımız r değerinin grafiğe yansıtılması için ise ggcorplot() fonksiyonunu kullanabiliriz. Bu fonksiyon kapsamında ggcorplot(r, hc.order =T/F, type= "lower",lab=T/F) yapısını kullanabiliriz. Burada hc.order yapısının TRUE olması büyükten küçüğe sıra vermektedir. Buna karşı lab değeri de TRUE olunca korelasyon değerlerini kutuların içerisinde sunar.

Oluşturulan korelasyon matrislerinin anlamlılık düzeyi ise psych() paketi kapsamında bulunan corPlot(data, [,], stars =TRUE fonksiyonu ile sunulabilmektedir. Daha detaylı grafikler oluşturmak istediğimiz de ise PerformanceAnalytics() paketinden faydalanabiliriz. Bu kapsamda chart.Correlation(data, histogram= T/F, pch =) atamasıyla birlikte tek grafikte korelasyon ilişki değerleri, histogram grafikleri ve saçılım grafikleri ele alınabilir. Buna benzer olarak GGally paketindeki ggpairs(data, title ="") ile de histogram grafiği dışındaki diğer yapıları oluşturabiliriz.

Genel olarak ders kapsamında grafiklerin bu kadar şekillendirilmesi merakımı arttırdı. Bu konuda özellikle T/F ayarlarında denemeler yaparak hangi değerin neye sebep olabileceğini keşfetmek benim ufkumu geliştirdi. Bazı zamanlar R çalışırken zorlansam da bu işi halletmek tek çarem. Ayrıca kendimi ifade ederken karmaşık bir dil kullandığım için de kusuruma bakmayın lütfen.