Ö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.
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
Paketlerin aktif edilmesinin ardından base içerisindeki
mtcars seti data() fonksiyonuyla birlikte
set1 seti olarak aktarılmıştır.
data(mtcars)
set1 <- mtcars
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,…
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"
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
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,…
Bu kapsamda aşağıdaki değişkenler arası ilişki ele alınmıştır.
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'
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
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.
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)
)
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'
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'
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.