install.packages(“palmerpenguins”) install.packages(“dplyr”) install.packages(“ggplot2”)

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)

Veri setini çağırma

data("penguins")

Veri setinin ilk birkaç satırını görüntüleme

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>

###Görev 1

penguenler <- penguins %>%
  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
  )

###Yeni adlar ve eksik verilerle ilgili işlemler

# Yeni adlar
colnames(penguenler)
## [1] "tur"             "ada"             "gaga_uzunlugu"   "gaga_derinligi" 
## [5] "yuzgec_uzunlugu" "vucut_kutlesi"   "cinsiyet"        "yil"
# Eksik veri sayısı
colSums(is.na(penguenler))
##             tur             ada   gaga_uzunlugu  gaga_derinligi yuzgec_uzunlugu 
##               0               0               2               2               2 
##   vucut_kutlesi        cinsiyet             yil 
##               2              11               0
# Eksik veri çıkarmadan önceki boyut
dim(penguenler)
## [1] 344   8
# Eksik verileri kaldır
penguenler_v1 <- na.omit(penguenler)

# Eksik veri çıkarıldıktan sonraki boyut
dim(penguenler_v1)
## [1] 333   8

Yeni degisken bmi

penguenler_v1 <- penguenler_v1 %>%
  mutate(bmi = vucut_kutlesi / yuzgec_uzunlugu)

head(penguenler_v1)
## # A tibble: 6 × 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
## # ℹ 3 more variables: cinsiyet <fct>, yil <int>, bmi <dbl>

#Türlere gore betimsel istatistikler

bmi_ozet <- penguenler_v1 %>%
  group_by(tur) %>%
  summarise(
    ortalama = mean(bmi),
    std_sapma = sd(bmi),
    min_bmi = min(bmi),
    max_bmi = max(bmi)
  )

#Türlere gore grafik

ggplot(penguenler_v1, aes(x = tur, y = bmi, fill = tur)) +
  geom_boxplot() +
  labs(
    title = "Turlere Göre Penguen bmi dagilimi",
    x = "Tür",
    y = "bmi (Vucut Kutlesi / Yuzgec Uzunluğu)"
  ) +
  theme_minimal()

Grafikte türler arasında bmi farkları gözlemleniyor.

Gentoo penguenleri, Adelie ve Chinstrap türlerine göre daha yüksek bmi değerlerine sahiptir. Adelie ve Chinstrap türleri arasında ise büyük bir fark gözlenmemektedir.

Bu da Gentoo penguenlerinin genellikle daha büyük olduğunu destekler niteliktedir.

#gaga uzunlugu-derinlik iliski

ggplot(penguenler_v1, aes(x = gaga_uzunlugu, y = gaga_derinligi, color = tur)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(
    title = "Gaga Uzunluğu ve Gaga Derinliği Arasındaki İlişki",
    x = "Gaga Uzunluğu (mm)",
    y = "Gaga Derinliği (mm)"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

#Grafikte çizgilerin yukarı yönlü olması pozitif, aşağı yönlü olması ise negatif ilişkiyi gösterir. Bu durumda genellikle pozitif bir ilişki gözlemlenir; bu da gaga uzunluğu arttıkça gaga derinliğinin de arttığı anlamına gelir.

#Gaga derinliği model

model <- lm(gaga_derinligi ~ gaga_uzunlugu, data = penguenler_v1)
summary(model)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = penguenler_v1)
## 
## 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

#Simpson paradoksu

ggplot(penguenler_v1, aes(x = gaga_uzunlugu, y = gaga_derinligi, color = tur)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Simpson Paradoksu: iliskiler",
       x = "Gaga Uzunluğu (mm)",
       y = "Gaga Derinliği (mm)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

GÖREV 2: Tür Bazında İnceleme ve Regresyon

library(dplyr)
library(ggplot2)

unique(penguenler_v1$tur) 
## [1] Adelie    Gentoo    Chinstrap
## Levels: Adelie Chinstrap Gentoo

Türlere göre ayrı veri setleri

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

Analiz bulguları değerlendirildiğinde, gaga uzunluğu arttıkça gaga derinliğinin azaldığı söylenebilir.

Görev 2 T scatter plot ve regresyon doğruları belirleme

ggplot(penguenler_v1, aes(x = gaga_uzunlugu, y = gaga_derinligi, color = tur)) +
  geom_point(size = 2, alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(
    title = "Tür Bazında Gaga Uzunluğu ve Derinliği İlişkisi",
    x = "Gaga Uzunluğu (mm)",
    y = "Gaga Derinliği (mm)",
    color = "Tür"
  ) +
  theme_minimal()  
## `geom_smooth()` using formula = 'y ~ x'

#Adelie türü için regresyon
model_adelie <- lm(gaga_derinligi ~ gaga_uzunlugu, data = adelie)
summary(model_adelie)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = 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
# Chinstrap türü için regresyon
model_chinstrap <- lm(gaga_derinligi ~ gaga_uzunlugu, data = chinstrap)
summary(model_chinstrap)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = 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
# Gentoo türü için regresyon
model_gentoo <- lm(gaga_derinligi ~ gaga_uzunlugu, data = gentoo)
summary(model_gentoo)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunlugu, data = 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

#Sonuçlar

sonuclar <- data.frame(
  Tur = c("Adelie", "Chinstrap", "Gentoo"),
  Eğim = c(coef(model_adelie)[2],
           coef(model_chinstrap)[2],
           coef(model_gentoo)[2]),
  P_degeri = c(summary(model_adelie)$coefficients[2,4],
               summary(model_chinstrap)$coefficients[2,4],
               summary(model_gentoo)$coefficients[2,4])
)

print(sonuclar)
##         Tur      Eğim     P_degeri
## 1    Adelie 0.1766834 1.514901e-06
## 2 Chinstrap 0.2222117 1.525539e-09
## 3    Gentoo 0.2076116 7.336624e-16

#Her penguen türünde gaga uzunluğu ile gaga derinliği arasında pozitif bir ilişki gözleniyor; Adelie, Chinstrap ve Gentoo penguenlerinde gaga uzadıkça derinlik de artıyor. Fakat tüm veriyi bir arada incelediğimizde bu ilişki tersine dönüyor gibi görünüyor. Yani türlere göre bakıldığında pozitif olan ilişki, toplam veri içinde negatifmiş gibi algılanabiliyor. Bu durum, tür bazlı analiz ve görselleştirmelerle daha iyi anlaşılabiliyor.

Görev 3: Yorum ve Tartışma

#Soru 1: Toplam veri setinde neden negatif ilişki gözlemlediniz? #Cevap: Türler arasında sistematik farklılık vardır. Örneğin Gentoo penguenlerinin gagaları daha uzun ama daha incedir; Adelie penguenlerinin ise daha kısa ama derin gagaları vardır. Bu tür farklar karıştırıldığında genel eğilim tersine dönmektedir.

#Soru 2: Tür bilgisi eklendiğinde neden ilişki yön değiştirdi? #Cevap:Tür bazında analiz, benzer özellikteki bireyleri karşılaştırır. Her tür arasında aslında pozitif ilişki vardır; fakat türler bir araya geldiğinde bu farklılıklar “Simpson Paradoksu” etkisi yaratmaktadır.

#Soru 3: Bu durumu Simpson Paradoksu çerçevesinde nasıl açıklarsınız? #Cevap: Simpson Paradoksu, alt gruplardaki ilişkilerin yönünün, veriler birleştirildiğinde tersine dönmesi durumudur. Bu örnekte, her türde pozitif ilişki olmasına rağmen toplu veride ilişki negatif olmaktadır.

#Soru 4: Bu örnek, verileri alt gruplara göre incelemenin neden önemli olduğunu nasıl göstermektedir? #Cevap: Toplu veriye bakmak, penguenlerde uzun gagaların daha sığ olduğu gibi hatalı bir izlenim yaratabilir. Oysaki alt gruplar incelendiğinde bu ilişkinin yönü değişir; bu da veri analizinde bağlamın ve alt grupların göz ardı edilmemesi gerektiğini kanıtlar.

Sonuç

#Bu çalışma, Palmer Penguins veri setinde Simpson Paradoksu’nun açık bir örneğini göstermektedir. Analizler, tür farklarının dikkate alınmaması durumunda ilişkilerin tersine dönebileceğini kanıtlamaktadır.