🧩 Ödev 2: Simpson Paradoksunu Kesfetmek – Palmer Penguins Örnegi

1. 📔Genel Yapı

1.1. Paketleri Aktif Etme

İlk olarak install.packpage() fonksiyonu ile veri setinin içerisinde bulunduğu palmerpenguins paketi yüklenmiştir. Bunun yanı sıra, veri setinin olduğu palmerpenguins ve analiz sürecinde kullanılabilecek olan dplyr,ggplot2, tidyverse openintro paketleri library() fonksiyonu ile aktif edilmiştir. Kütüphanelerin aktif edilmesinin ardından, penguins veri setinin süreçte daha rahat takip edilmesi için set <- penguins tanımlaması yapılmıştır.

library(palmerpenguins)
## 
## Attaching package: 'palmerpenguins'
## The following objects are masked from 'package:datasets':
## 
##     penguins, penguins_raw
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(openintro)
## Loading required package: airports
## Loading required package: cherryblossom
## Loading required package: usdata
set <- penguins

1.2. Veri Setinin Genel Yapısı

Veri setinin kaç gözlem ve değişkenden oluştuğunu öğrenmek için dim() fonksiyonu, veri setindeki değişkenlerin değişken adı gibi çeşitli yapılarda özet bir şekilde incelenmesi için head() fonksiyonu kullanılmıştır. Bu doğrultuda setin 8 değişken ve 344 gözlemden oluştuğu saptanmıştır.

dim(set)
## [1] 344   8
head(set)
## # A tibble: 6 × 8
##   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
## 1 Adelie  Torgersen           39.1          18.7               181        3750
## 2 Adelie  Torgersen           39.5          17.4               186        3800
## 3 Adelie  Torgersen           40.3          18                 195        3250
## 4 Adelie  Torgersen           NA            NA                  NA          NA
## 5 Adelie  Torgersen           36.7          19.3               193        3450
## 6 Adelie  Torgersen           39.3          20.6               190        3650
## # ℹ 2 more variables: sex <fct>, year <int>

1.3. Veri Setinde Degisken Adlarını Güncelleme

Veri setinde değişkenlerin adlarının daha rahat takip edilmesi amacıyla sette bulunan değişkenlerin adı rename() fonksiyonu ile Türkçe olacak şekilde düzenlenmiştir. Bu düzenleme sonunda oluşacak yeni set “set1” olarak adlandırılmıştır. Setteki değişkenlerin Türkçeleştirilmesinin ardından colnames() fonksiyonu ile düzenlemeler kontrol edilmiştir.

set1 <- set %>% 
  rename(tur = species,
         ada = island,
         gaga_uzunlugu = bill_length_mm,
         gaga_derinligi = bill_depth_mm,
         yuzgec_uzunlugu = flipper_length_mm,
         vucut_kutlesi = body_mass_g,
         cinsiyet = sex,
         yil = year)
colnames(set1)
## [1] "tur"             "ada"             "gaga_uzunlugu"   "gaga_derinligi" 
## [5] "yuzgec_uzunlugu" "vucut_kutlesi"   "cinsiyet"        "yil"

1.4. Veri Setinde Kayıp Verileri Saptama ve Kayıp Veri Silme

Set1 kapsamındaki kayıp verileri saptamak amacıyla colSums(is.na()) fonksiyonu kullanılmıştır. Bu uygulama sonucunda, gaga uzunluğu değişkeninde 2, gaga derinliği değişkeninde 2, yüzgeç uzunluğu değişkeninde 2, vücut kütlesi değişkeninde 2 ve cinsiyet değişkeninde 11 adet eksik veri saptanmıştır.Bu eksik verilerin yanı sıra setin boyutunun yeniden ele alınması için dim() fonksiyonu kullanılmıştır ve 344 satır, 8 sütun saptanmıştır.

colSums(is.na(set1))
##             tur             ada   gaga_uzunlugu  gaga_derinligi yuzgec_uzunlugu 
##               0               0               2               2               2 
##   vucut_kutlesi        cinsiyet             yil 
##               2              11               0
dim(set1)
## [1] 344   8

Eksik verilerin saptanmasının ardından veri setinde bulunan eksik verilerin silinmesi amacıyla na.omit() fonksiyonu kullanılmıştır. Bu silinme işlemi sonrasında boyutların saptanması amacıyla dim() fonksiyonu kullanılarak 333 satır, 8 sütun saptanmıştır. Son olarak set1, set2 olarak tanımlanmıştır.

set2 <- na.omit(set1)
dim(set2)
## [1] 333   8

1.5. BMI Değiskeninin Oluşturulması

Setten verilerin çıkartılmasının ardından “BMI” değerinin elde edilmesi ve değişken olarak eklenmesi amacıyla mutate fonksiyonu kullanılarak “vucut_kutlesi/yuzgec_uzunlugu” işlemi gerçekleştirilmiştir. Bu doğrutluda değişkenin eklenip eklenmediğini kontrol etmek amacıyla colnames() fonksiyonu kullanılmıştır. (Set 3 olarak tanımlama yapılmıştır.)

set3 <- set2 %>% 
  mutate(bmi = vucut_kutlesi/yuzgec_uzunlugu)
colnames(set3)
## [1] "tur"             "ada"             "gaga_uzunlugu"   "gaga_derinligi" 
## [5] "yuzgec_uzunlugu" "vucut_kutlesi"   "cinsiyet"        "yil"            
## [9] "bmi"
set3
## # A tibble: 333 × 9
##    tur    ada       gaga_uzunlugu gaga_derinligi yuzgec_uzunlugu vucut_kutlesi
##    <fct>  <fct>             <dbl>          <dbl>           <int>         <int>
##  1 Adelie Torgersen          39.1           18.7             181          3750
##  2 Adelie Torgersen          39.5           17.4             186          3800
##  3 Adelie Torgersen          40.3           18               195          3250
##  4 Adelie Torgersen          36.7           19.3             193          3450
##  5 Adelie Torgersen          39.3           20.6             190          3650
##  6 Adelie Torgersen          38.9           17.8             181          3625
##  7 Adelie Torgersen          39.2           19.6             195          4675
##  8 Adelie Torgersen          41.1           17.6             182          3200
##  9 Adelie Torgersen          38.6           21.2             191          3800
## 10 Adelie Torgersen          34.6           21.1             198          4400
## # ℹ 323 more rows
## # ℹ 3 more variables: cinsiyet <fct>, yil <int>, bmi <dbl>

1.6. Türlere Göre Betimsel Istatistikler

BMİ değerinini eklenmesinin ardından grup bazında ortalama, standart sapma, minimum-maksimum değer ve veri sayısına yönelik inceleme gerçekleştirilmiştir. Bu inceleme sürecinde group_by() fonksiyonu ile grup temellendirmesi türlere göre yapılmıştır. Ardından summarise() fonksiyonu içerisinde belirtilen değerler hesaplanmıştır.

betimsel_ist <- set3 %>% 
  group_by(tur) %>% 
  summarise(ort = mean(bmi),
            st_sap = sd(bmi),
            minimum = min(bmi),
            maksimum = max(bmi),
            n = n()
  )
betimsel_ist
## # A tibble: 3 × 6
##   tur         ort st_sap minimum maksimum     n
##   <fct>     <dbl>  <dbl>   <dbl>    <dbl> <int>
## 1 Adelie     19.5   2.18    15.2     25.3   146
## 2 Chinstrap  19.0   1.60    14.1     22.9    68
## 3 Gentoo     23.4   1.88    19.0     28.5   119

Bu hesaplamanın ardından ise ggplot() fonksiyonuyla birlikte betimsel istatistiklere yönelik olarak kutu grafiği oluşturulmuştur.Bu kapsamda geom_boxplot() ile kutu grafiği, theme_minimal() ile minimal tema, labs() ile başlıklandırmalar ve legend.position() ile lejan konumu oluşturulmuştur. Elde edilen kutu grafiğinde ise veri setindeki üç penguen türü arasındaki BMI dağılımının karşılıştırılması amaçlanmıştır. Süreçte Gentoo penguenlerinin 23 puan civarıyla en yüksek medyan değerine sahip olduğu saptanmıştır. Bunun yanı sıra Adelie ve Chinstrap türlerinin ise 19-20 aralığında bir medyan değerine sahip olduğu gözlenmiştir. Bu medyan çizgilerinin belirgin ayrımına bağlı olarak BMI açısından Chinstrap-Adelie ve Gentoo türleri arasından anlamlı fark olabileceği söylenebilir. Bunun yanı sıra, Chinstrap türünde aykırı değerlerde gözlemlenmiştir.

ggplot(set3, aes(x=tur, y=bmi, fill=tur))+
  geom_boxplot()+
  theme_minimal()+
  labs(title = "BMI Temelli Karsilastirma", x= "Turler", y= "BMI")+
  theme(legend.position = "top")

2. 🔍 Görev 1: Toplam Düzeyde Analiz

Total veri yapısındaki gaga_uzunlugu ve gaga_derinligi arasındaki ilişkiyi görmek için ggplot ile scatter plot oluşturulmuştur. Süreçte geom_point() fonskiyonu ile scatter plot, geom_smooth() fonksiyonu ile regresyon çizgisi, theme_minimal() ile tema, labs() ile de başlıklandırmalar eklenmiştir. Elde edilen scatter plot doğrultusunda regresyon doğrusunun aşağı doğru eğimli olduğu gözlenmektedir. Bu doğrultuda negatif bir yapı olduğu yani gaga uzunluğunun arttığı durumlarda, gaga derinliğinin azalma eğiliminde olduğu söylenebilir.

ggplot(set3, aes(x=gaga_uzunlugu, y=gaga_derinligi, fill = "tur"))+
  geom_point()+
  geom_smooth(method = "lm", se= TRUE)+
  theme_minimal()+
  labs(title="Gaga Uzunlugu ve Derinligi Arası İliski", x="gaga uzunlugu", y="gaga derinligi")
## `geom_smooth()` using formula = 'y ~ x'

Regresyon temelli scatter plotın oluşturulmasının ardından lm() fonksiyonu ile basit doğrusal regresyon modeli kurulmuştur. Kurulan model hakkında özet bilgi elde edilmesi amacıyla summary() fonksiyonu kullanılmıştır. Elde edilen katsayılar doğrultusunda istatistiksel olarak anlamlı ve negatif yönlü bir ilişki saptanmıştır. Buna karşın, Rkare değerinin düşük olması ilişkinin açıklanmasında gaga uzunluğunun yetersiz kaldığını göstermektedir.

regresyon_modeli <- lm(gaga_derinligi ~ gaga_uzunlugu, data = set3)
summary(regresyon_modeli)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = set3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.1548 -1.4291  0.0122  1.3994  4.5004 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   20.78665    0.85417  24.335  < 2e-16 ***
## gaga_uzunlugu -0.08233    0.01927  -4.273 2.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.92 on 331 degrees of freedom
## Multiple R-squared:  0.05227,    Adjusted R-squared:  0.04941 
## F-statistic: 18.26 on 1 and 331 DF,  p-value: 2.528e-05

3. 🐧 Görev 2: Tür Bazında Analiz

Tür bazında analizlerin gerçekleştirilmesi için group_by() fonksiyonu ile gruplandırma süreci gerçekleştirilmiştir. Bunun ardından grup bazlı şekilde scatter plot ggplot() fonksiyonuyla oluşturulmuştur. Süreçte geom_point() fonskiyonu ile scatter plot, geom_smooth() fonksiyonu ile regresyon çizgisi, theme_minimal() ile tema, labs() ile de başlıklandırmalar eklenmiştir. Elde edilen grafik doğrultusunda önceki elde edilen grafiğin tam tersi şekilde tüm türlerde pozitif yönlü bir eğri vardır. Bu doğrultuda her türde gaga uzunluğu arttıkça gaga derinliğinin arttığı söylenebilir. Tür bazında detaylı bakıldığında, Gentoo ve Chinstrap türlerinde çizgiye yakın yığılmalar gözlenmiştir. Bu doğrultuda bu iki tür için daha güçlü ilişki gözlendiği söylenebilir. Sonuç olarak, türler arası büyük ortalama farklar olmasına rağmen, türlerin her birinin kendi içindeki gaga boyutları arasında tutarlı, pozitif bir ilişki mevcuttur.

set4 <- set3 %>% 
  group_by(tur)
set4
## # A tibble: 333 × 9
## # Groups:   tur [3]
##    tur    ada       gaga_uzunlugu gaga_derinligi yuzgec_uzunlugu vucut_kutlesi
##    <fct>  <fct>             <dbl>          <dbl>           <int>         <int>
##  1 Adelie Torgersen          39.1           18.7             181          3750
##  2 Adelie Torgersen          39.5           17.4             186          3800
##  3 Adelie Torgersen          40.3           18               195          3250
##  4 Adelie Torgersen          36.7           19.3             193          3450
##  5 Adelie Torgersen          39.3           20.6             190          3650
##  6 Adelie Torgersen          38.9           17.8             181          3625
##  7 Adelie Torgersen          39.2           19.6             195          4675
##  8 Adelie Torgersen          41.1           17.6             182          3200
##  9 Adelie Torgersen          38.6           21.2             191          3800
## 10 Adelie Torgersen          34.6           21.1             198          4400
## # ℹ 323 more rows
## # ℹ 3 more variables: cinsiyet <fct>, yil <int>, bmi <dbl>
ggplot(set4, aes(gaga_uzunlugu, gaga_derinligi, color = tur)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE) +
  theme_minimal() +
  labs(title="Turlere Gore Gaga Uzunlugu ve Derinligi Arası İliski", x="gaga uzunlugu", y="gaga derinligi")
## `geom_smooth()` using formula = 'y ~ x'

Scatter plotın oluşturulmasının ardından tür bazından regresyon modelleri lm() fonksiyonu ile oluşturulmuştur. Elde edilen değerler summary() değeri ile de özetlenmiştir. Elde edilen veriler doğrultusunda “Chinstrap” penguenlerinde gaga uzunluğu ile gaga derinliği arasında pozitif, orta düzeyde güçlü ve anlamlı bir ilişki olduğu, Gentoo penguenlerinde de gaga uzunluğu ile derinliği arasında güçlü, pozitif ve anlamlı bir ilişki olduğu gözlenmektedir. Ayrıca Adelie penguenlerinde gaga uzunluğu ile gaga derinliği arasındaki ilişki pozitif fakat zayıftır. Genel doğrultuda bakarsak tüm penguen türlerinde gaga uzunluğu ile gaga derinliği arası pozitif ilişki olduğu yanni tüm türlerde gaga uzunluğu arttıkça derinliğinde arttığı söylenebilir. Bu durum total veri üzerinden yaptığımız incelemenin tam zıttı bir yapıdadır.

adel_regresyon_modeli <- lm(gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% filter(tur == "Adelie"))
summary(adel_regresyon_modeli)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% 
##     filter(tur == "Adelie"))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1487 -0.7926 -0.0842  0.5550  3.4990 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   11.48771    1.37010   8.385 4.23e-14 ***
## gaga_uzunlugu  0.17668    0.03521   5.018 1.51e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.129 on 144 degrees of freedom
## Multiple R-squared:  0.1489, Adjusted R-squared:  0.1429 
## F-statistic: 25.18 on 1 and 144 DF,  p-value: 1.515e-06
chin_regresyon_modeli <- lm(gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% filter(tur == "Chinstrap"))
summary(chin_regresyon_modeli)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% 
##     filter(tur == "Chinstrap"))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.65742 -0.46033 -0.01862  0.61473  1.69801 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    7.56914    1.55053   4.882 6.99e-06 ***
## gaga_uzunlugu  0.22221    0.03168   7.015 1.53e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8659 on 66 degrees of freedom
## Multiple R-squared:  0.4271, Adjusted R-squared:  0.4184 
## F-statistic: 49.21 on 1 and 66 DF,  p-value: 1.526e-09
gent_regresyon_modeli <- lm(gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% filter(tur == "Gentoo"))
summary(gent_regresyon_modeli)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = set4 %>% 
##     filter(tur == "Gentoo"))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.57143 -0.52974 -0.04479  0.45417  2.96109 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     5.1210     1.0583   4.839 4.02e-06 ***
## gaga_uzunlugu   0.2076     0.0222   9.352 7.34e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7491 on 117 degrees of freedom
## Multiple R-squared:  0.4277, Adjusted R-squared:  0.4229 
## F-statistic: 87.45 on 1 and 117 DF,  p-value: 7.337e-16

4. 🧠 Görev 3: Yorum ve Tartışma

  1. Toplam veri setinde neden negatif ilişki gözlemlediniz?

    Ele alınan üç tür bazında bakıldığında gaga uzunluğu ve gaga derinliği arasında pozitif yönlü ilişki saptanmışken, total veri üzerinde inceleme yapıldığında ilişki yönü tam tersine dönmüştür. Bunun temel nedeni olarak, her türün gaga yapısındaki uzunluk ve derinlik açısından farklılık olarak ifade edebiliriz. Bu farklılık durumu, total veri üzerinde regresyon doğrusunun yönünü olumsuz etkileyerek yanıltıcı bir eğilim vermiştir. Bu durum ise “Simpson paradoksunu” yansıtan bir durum olarak ifade edilebilir.

  2. Tür bilgisi eklendiğinde neden ilişki yön değiştirdi?

    Tür temelli analiz süreciyle birlikte gaga uzunluğu ve gaga derinliği arasında pozitif yönlü ilişki saptanmıştır. Bunun temel nedeni olarak, group_by() fonksiyonuyla birlikte gerçekleştirilen sınıflama doğrultusunda sadece türlerin kendi içerisinde değerlendirilmesi yani benzer özellikteki penguen türlerinin ele alınması olarak ifade edebiliriz. Kısacası, tür içerisindeki özellik varyansyonu olarak bahsedilebilir.

  3. Bu durumu Simpson Paradoksu çerçevesinde nasıl açıklarsınız?

    Simposın Paradoksu, ele alınan verilerin tamamıyla gerçekleştirilen analiz ile gruplara ayrılarak gerçekleştirilen analizlerde yön değişimi durumunu temsil etmektedir. Bu doğrultuda penguenlerin tamamına yönelik olan analiz ile türlere göre alınan analiz sürecindeki değişim durumu bu yapıyı yansıtmaktadır.

  4. Bu örnek, verileri alt gruplara göre incelemenin neden önemli olduğunu nasıl göstermektedir?

    Gerçekleştirilen bir analiz sürecinde total veriye bakıldığında yanıltıcı sonuçlar elde edilebileceğini gösteren bir yapı olmuştur. Bu doğrultuda bir analiz sürecinde alt gruplarında göz önünde bulundurulması gerektiğini anladım. Bununla birlikte, alt gruplara yönelik verilerin ele alınması sürecinde görselleştirme de önemli bir yapı olarak ifade edilebilir.

5. 📖RMarkdown’dan Ögrendiklerim

Bu hafta gerçekleştirdiğimiz ders kapsamında RMarkdown’a yönelik yeni fonksiyonlar öğrenmiş bulunmaktayım. Süreçte, öncelikle title gibi başlıkların yer aldığı bölüme toc ve toc_depth fonksiyonlarını ekleyerek bir menü yapısı oluşturabileceğimi öğrendim. Ayrıca, toc_float: collapsed fonksiyonu sayesinde “html” çıktısının sol tarafında daha detaylı bir menü sekmesi sunulabileceğini fark ettim. Bununla birlikte, knit aracıyla elde ettiğimiz “html” çıktılarında theme fonksiyonu aracılığıyla journal, flatly, united, cosmo gibi temaları ekleyebileceğimizi öğrendim. Özellikle tema ve menü fonksiyonlarını öğrenmem, oluşturduğumuz içeriği daha rahat ve sistematik bir şekilde incelememi sağladı. Ancak smooth_scroll ifadesinin tam olarak ne işe yaradığını henüz tam olarak anlayamadığımı belirtmek isterim.

Bu yapılar yanı sıra birinci ödevimiz kapsamında yaptığımız RMarkdown hatalarına değinilmiştir. Bu doğrultuda bir başlıklandırma yapılacağı zaman ## simgesinin tercih edilmesi gerektiğini ve düz metin yazarken # simgesinin kullanılmaması gerektiğini öğrendim. Ayrıca, RMarkdown sayfasında kendi formüllerimizi çeşitli kodlarla oluşturabileceğimizi ve bu yapının latex format olarak adlandırıldığını öğrendim. Latex format ile örneğin; \(\sum_{n=1}^{8} n^3\), \(x\ge y\), \[\sqrt{25+75}\] işlemlerinin yansıtılabileceğini anladım. Buna ek olarak çift dolar işaretiyle birlikte alt satırın orta kısmında formuller gösterilebilmektedir. Örneğin: \[\sum_{n=1}^{8} n^3\]

Genel RMarkdown yapısının yanı sıra, bu hafta openintro paketi kapsamında yer alan ucb_admit veri seti üzerinde çalıştığımızı söyleyebilirim. Bu veri setinde, çeşitli değişkenlerin frekanslarını belirlemek amacıyla count() fonksiyonunu kullandık. Başlangıçta count() fonksiyonuna yalnızca tek bir değişken eklenebildiğini düşünüyordum; ancak aynı fonksiyon içerisinde birden fazla değişkenin de kullanılabildiğini öğrendim. Veri seti üzerinde çalışırken, ggplot() fonksiyonundaki fill = "" ifadesinin, renklendirmenin hangi değişkene göre yapılacağını belirlediğini fark ettim. Ayrıca, round( , ) fonksiyonu aracılığıyla elde edilen katsayıların kaç ondalık basamakla gösterileceğinin ayarlanabildiğini öğrendim.

fill = "" ifadesinin bir diğer kullanım alanının ise grafik türünün belirlendiği durumlarda olduğunu öğrendim. Örneğin, geom_bar(position = "fill") ifadesi kullanıldığında, verideki frekansların “0.00”, “0.50” gibi oran biçiminde gösterilmesini sağladığını fark ettim. fill = "" ifadesine ek olarak, tidyr paketi içerisinde yer alan pivot_wider(names_from = , values_from = ) yapısının tabloları daha geniş ve okunabilir hale getirmek için kullanıldığını öğrendim. Ayrıca, ggplot() fonksiyonu kapsamında facet_wrap(. ~ değişken) ifadesiyle değişkendeki gruplara göre grafiklerin sunulabildiğini, theme(legend.position = "top/left/right/bottom") yapısıyla da lejantın konumunun değiştirilebildiğini gördüm. Bu tür fonksiyonlar sayesinde oluşturmak istediğim grafikleri daha özgün ve işlevsel biçimde tasarlayabileceğimi anladım. Son olarak, scale_x_continuous(labels = scales::label_percent()) ifadesiyle grafikteki eksen etiketlerinin yüzde biçiminde gösterilmesini sağlayabildiğimizi ve sapply(setadı,analiztürü) fonksiyonuyla doğrudan ele alacağımız yapılara yönelik işlemler yapabileceğimizi öğrendim. Genel olarak, verimli ama bir o kadar da karışık öğrenmeler gerçekleştirdiğim bir hafta olduğunu düşünüyorum. Bununla birlikte, yeni öğrenmelere açık olduğumu fark ettim.