📚 İçindekiler

Veri Hazırlığı

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(openintro)
## Zorunlu paket yükleniyor: airports
## Zorunlu paket yükleniyor: cherryblossom
## Zorunlu paket yükleniyor: usdata
library(palmerpenguins)
## 
## Attaching package: 'palmerpenguins'
## The following objects are masked from 'package:datasets':
## 
##     penguins, penguins_raw
data("penguins")
head(penguins)
## # 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>
#Değişken isimlerini Türkçeleştirme
penguins_tr <- penguins %>%
  rename(
    gaga_uzunlugu = bill_length_mm,
    gaga_derinligi = bill_depth_mm,
    yuzgec_uzunlugu = flipper_length_mm,
    vucut_kutlesi = body_mass_g,
    tur = species,
    cinsiyet = sex
  )
#Eksik Veri temizliği öncesi veri seti boyutu inceleme
dim(penguins_tr)
## [1] 344   8
#Eksik Veri temizleme
penguins_ev <- na.omit(penguins_tr)
#Eksik Veri temizliği Sonrası veri seti  boyutu
dim(penguins_ev)
## [1] 333   8
#BMI değişkeni oluşturma
penguins_bmi<-penguins_ev %>% mutate(bmi=vucut_kutlesi/ yuzgec_uzunlugu)
#Türlere göre veri setini gruplayarak ortalamasını, standart sapmasını, minimum ve maksimum değerlerini hesaplama
ozet_tablo <- penguins_bmi %>%
  group_by(tur)  %>%
  summarize(
    ortalama_bmi = mean(bmi),
    sd_bmi = sd(bmi),
    min_bmi = min(bmi),
    max_bmi = max(bmi)
  )
#Sonuç görüntüleme
ozet_tablo
## # A tibble: 3 × 5
##   tur       ortalama_bmi sd_bmi min_bmi max_bmi
##   <fct>            <dbl>  <dbl>   <dbl>   <dbl>
## 1 Adelie            19.5   2.18    15.2    25.3
## 2 Chinstrap         19.0   1.60    14.1    22.9
## 3 Gentoo            23.4   1.88    19.0    28.5
#Kutu grafiği oluşturma
library(ggplot2)
ggplot(penguins_bmi, aes(x=tur,y=bmi,fill = tur)) +
geom_boxplot()+
labs(title="Türlere gore BMI Dağılımı",x="\nTür", y="Bmi\n")+
theme_minimal()

Grafiğe göre üç penguen türü arasında BMI (vücut kütlesi / yüzgeç uzunluğu oranı) açısından farklılıklar görülmektedir. Buna göre; Gentoo türü penguenlerin BMI değerleri diğer türlere göre daha yüksektir. Adelie türü penguenlerin BMI değerleri orta seviyededir. Dağılım Gentoo’ya göre daha düşük olmakla birlikte Chinstrap’tan biraz daha yüksektir. Chinstrap türü penguenler, üç tür arasında en düşük BMI değerlerine sahiptir. Bu türün kutu üstünde ve altında birkaç aykırı değer bulunmaktadır.

Görev 1: Toplam Düzeyde Analiz

ggplot(penguins_ev, aes(x = gaga_derinligi, y = gaga_uzunlugu)) +
  geom_point(color = "steelblue") +
  geom_smooth(method = "lm", se = TRUE, color = "darkred") +
  labs(
    title = "Gaga Derinliği ile Gaga Uzunluğu Arasındaki İlişki",
    x = "\nGaga Derinliği (mm)",
    y = "Gaga Uzunluğu(mm)\n"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Grafik incelendiğinde, gaga derinliği ile gaga uzunluğu arasında negatif yönlü bir ilişki olduğu görülmektedir. Gaga derinliği arttıkça, gaga uzunluğunun azalma eğiliminde olduğu söylenebilir.

model <- lm(gaga_uzunlugu ~ gaga_derinligi, data = penguins_ev)
summary(model)
## 
## Call:
## lm(formula = gaga_uzunlugu ~ gaga_derinligi, data = penguins_ev)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -12.9498  -3.9530  -0.3657   3.7327  15.5025 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     54.8909     2.5673  21.380  < 2e-16 ***
## gaga_derinligi  -0.6349     0.1486  -4.273 2.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.332 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

Analiz sonuçları, gaga uzunluğu ile gaga derinliği arasında negatif yönlü ve istatistiksel olarak anlamlı bir ilişki olduğunu göstermektedir (b = -0.63, p < .001). Bu bulguya göre penguenlerin gaga derinliği arttıkça, gaga uzunluğu azalma eğilimi göstermektedir.

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

2.1. Türlere göre sınıflandırma

adelie<- penguins_ev %>% filter(tur=="Adelie")
chinstrap<- penguins_ev %>% filter(tur=="Chinstrap")
gentoo <- penguins_ev %>% filter(tur == "Gentoo")

2.2. Türlere Göre Scatter Plot Oluşturma

ggplot(penguins_ev,aes(x =gaga_derinligi , y =gaga_uzunlugu , color = tur))+
geom_point() +
facet_wrap(.~tur)+
geom_smooth(method="lm",se=FALSE)+  
labs(
    title = "Türlere Göre Gaga Derinliği - Gaga Uzunluğu İlişkisi",
    x = "\nGaga Derinliği (mm)",
    y = "Gaga Uzunluğu (mm)\n"
  ) +
  theme_minimal() 
## `geom_smooth()` using formula = 'y ~ x'

2.3. Tür Bazında Regresyon

# Adelie türü
adelie_reg <-lm(gaga_uzunlugu ~ gaga_derinligi, data = adelie)
summary(adelie_reg)
## 
## Call:
## lm(formula = gaga_uzunlugu ~ gaga_derinligi, data = adelie)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.5431 -1.8369  0.0158  1.7181  6.5104 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     23.3668     3.0869   7.570 4.10e-12 ***
## gaga_derinligi   0.8425     0.1679   5.018 1.51e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.465 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
# Chinstrap türü
chinstrap_reg <- lm(gaga_uzunlugu ~ gaga_derinligi, data = chinstrap)
summary(chinstrap_reg)
## 
## Call:
## lm(formula = gaga_uzunlugu ~ gaga_derinligi, data = chinstrap)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1163 -1.2641 -0.1254  1.4807 10.3590 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      13.428      5.057   2.655  0.00992 ** 
## gaga_derinligi    1.922      0.274   7.015 1.53e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.547 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
# Gentoo türü
gentoo_reg <- lm(gaga_uzunlugu ~ gaga_derinligi, data = gentoo)
summary(gentoo_reg)
## 
## Call:
## lm(formula = gaga_uzunlugu ~ gaga_derinligi, data = gentoo)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -7.914 -1.445  0.125  1.315  7.904 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     16.6702     3.3110   5.035 1.75e-06 ***
## gaga_derinligi   2.0603     0.2203   9.352 7.34e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.36 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

2.4. Karşılaştırma

Tablo <- data.frame(
  Tur = c("Adelie", "Chinstrap", "Gentoo"),
  egim = c(
    round(coef(adelie_reg)[2],3),
    round(coef(chinstrap_reg)[2],3),
    round(coef(gentoo_reg)[2],3)
  ),
  p_degeri = c(
    summary(adelie_reg)$coefficients[2,4],
    summary(chinstrap_reg)$coefficients[2,4],
    summary(gentoo_reg)$coefficients[2,4])
  
)

print(Tablo)
##         Tur  egim     p_degeri
## 1    Adelie 0.842 1.514901e-06
## 2 Chinstrap 1.922 1.525539e-09
## 3    Gentoo 2.060 7.336624e-16

Tür bazında yapılan regresyon analizine göre; türlerin hepsinde eğim pozitiftir, gaga uzunluğu ile gaga derinliği arasında pozitif yönlü ve istatistiksel olarak anlamlı bir ilişki bulunmaktadır (p < .001). Gaga derinliği arttıkça gaga uzunluğu da artmaktadır. Tüm türler birlikte analiz yapıldığında eğim negatif çıkarken, türler ayrı ayrı incelendiğinde hepsi pozitif çıkmaktadır.

Görev 3: Yorum ve Tartışma

3.1. Toplam düzeydeki ilişki

Toplam düzeyde (tüm türler bir aradayken) gaga uzunluğu ile gaga derinliği arasında negatif bir ilişki görülmüştür.

3.2. Tür bazındaki ilişki

Analiz tür bazında kendi içinde yapıldığı için,her türün doğal varyasyonu ortaya çıkmıştır.Her tür içinde gaga derinliği arttıkça gaga uzunluğunun da arttığı, yani pozitif bir ilişki olduğu görülmüştür. Toplam düzeydeki negatif ilişkinin kaynağı tür farklılıkları olması nedeniyle türleri ayırdığımızda gerçek ilişki yönü ortaya çıktı.

3.3. Simpson paradoksu

Bu örnekte olduğu gibi, veriler birleştirildiğinde elde edilen ilişkinin yönünün alt gruplara ayrıldığında tam tersine dönmesi anlamına gelmektedir. Bu, “toplam düzeydeki ilişki”nin yanıltıcı olabileceğini ve alt gruplar dikkate alınmadığında yanlış sonuçlara varılabileceğini gösterir.

3.4. Sonuç ve çıkarım

Bu örnek, analizlerde alt grupların (tür, cinsiyet, okul türü vb.) göz önünde bulundurulmasının neden kritik olduğunu göstermektedir.Sadece toplam düzeydeki analizle yetinilseydi, “gaga derinliği arttıkça gaga uzunluğu azalıyor” sonucuna varılacakken, tür faktörü dikkate alındığında tam tersi bir eğilim olduğu ortaya çıkmaktadır. Bu nedenle, anlamlı ve doğru sonuçlara ulaşmak için alt gruplar bazında analizler yapılması kritik önem taşımaktadır.

Öğrenme Günlüğü

Simpson paradoksu oldukça ilgi çekiciydi, kitlesel olarak ele aldığımız veri setlerinin analizlerin ne kadar yanıltıcı olabileceğini ve alt grupların ayrı analizlere tabi tutmanın kritik önemini fark etmeye yardımcı oldu. Bu ödevde içerik oluşturma ve başlıklandırma kısmına dikkat etmeye çalıştım. Lineer modelleme, facet_wrap ve eksik veri temizleme bu hafta aklımda kalanlardan oldu. Yaptığımız ödev ve datacamp alıştırmaları ile pek çok komuta aşina olmakla birlikte yazmaya başlayınca unuttuğum, takıldığım detaylar oluyor.