Ödev için gerekli kütüphaneleri ve veri setini açarak başladım. Palmerpenguins paketi yüklü olmadığı için öncelikle, sağ menüden install packages kısmından bu paket indirdim ve böylelikle penguins verisetini açılabildim.
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(palmerpenguins)
## 
## Attaching package: 'palmerpenguins'
## The following objects are masked from 'package:datasets':
## 
##     penguins, penguins_raw
data(penguins)
Değişkenlerin isimlerini Türkçe yapmakla başladım.Rename fonksiyonu ile değişkenlere Türkçe isimler atadım, veri setini yeni isimleri ile penguins_tr isimli nesneye atadım.
penguins_tr<- penguins %>% 
  rename(tur=species, ada=island, gaga_uzunluğu=bill_length_mm,gaga_derinligi=bill_depth_mm,yuzgec_uzunlugu=flipper_length_mm, vucut_kutlesi=body_mass_g,cinsiyet=sex, yıl=year)
Eksik verileri silmeden önce veri setinin boyutu: 344 satır 8 sütun. Veri setinin boyutunu incelemek için dim fonksiyonunu kullandım.
dim(penguins_tr)
## [1] 344   8
Veri setinde sütun bazında kaç tane eksik veri olduğunu bulmak için colSums(is.na(penguins_tr)) fonksiyonunu kullandım. 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, cinsiyet değişkeninde 11 adet eksik veri vardır.
colSums(is.na(penguins_tr))
##             tur             ada   gaga_uzunluğu  gaga_derinligi yuzgec_uzunlugu 
##               0               0               2               2               2 
##   vucut_kutlesi        cinsiyet             yıl 
##               2              11               0
Eksik verileri (na.omit()) komutu ile sildim, penguins_temiz nesnesine atadım.
penguins_temiz <- na.omit(penguins_tr)
Eksik verileri çıkardıktan sonraki veri seti boyutu: 333 satır ve 8 sütun.1 satır azalma vardır.
dim(penguins_temiz)
## [1] 333   8
Vücut kütlesinin yüzgeç uzunluğuna oranından hesaplanan bmi isimli yeni bir değişken oluşturdum ve penguins_temiz veri setine ekledim.
penguins_temiz<-penguins_temiz %>% mutate(bmi=vucut_kutlesi/yuzgec_uzunlugu)
Türlere göre (species) bu değişkenin, ortalamasını, standart sapmasını, minimum ve maksimum değerleri tablo halinde göstermek için, önce group_by fonksiyonu ile türlerine göre veriyi grupladım ve daha sonra summarise fonksiyonu ile ortalama, standart sapma, minumun ve maksimum değerlerini hesapladım.
penguins_temiz %>% group_by(tur)%>%
                   summarise(ortalama_bmi = mean(bmi),sd_bmi = sd(bmi),                            min_bmi = min(bmi), max_bmi = max(bmi))
## # 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
Bmi değişkeninin türlere göre kutu grafiği ile gösterimi aşağıdadır. Grafiğe göre, Gentoo penguenleri diğer iki türe göre daha yüksek bir bmi değerine sahiptir, Adelie ve Chinstrap türlerinin BMI dağılımları ise birbirine oldukça yakındır.Chrinstap türünde birkaç aykırı değer bulunmaktadır.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.1
ggplot(penguins_temiz, aes(x = tur, y=bmi, fill = tur)) + 
  geom_boxplot()
Gaga uzunluğu ile gaga derinliği arasındaki ilişkiyi geom_point() komutu kullanılarak inceledim. Regresyon eğrisi oluşturmak için, geom_smooth(method=“lm”) fonksiyonunu kullandım, görsel daha anlaşılır olsun diye standart hata eklemedim (SE=FALSE) .Görsele göre bu iki değişken arasındaki ilişki negatiftir.
library(ggplot2)
ggplot(penguins_temiz, aes(x = gaga_uzunluğu, y=gaga_derinligi)) + 
  geom_point()+ 
  geom_smooth(method="lm", se=FALSE)
## `geom_smooth()` using formula = 'y ~ x'
Bu ilişkiyi doğrulamak için basit bir doğrusal regresyon modeli kurdum, model nesnesine atadım ve summary fonksiyonu ile kurulan modelin özetini incelendim. Model kurulurken lm fonksiyonun içerisinde bağımsız ve bağımlı değişken tilde işareti ile bağladım. Tilde’nin solundaki değişken gaga_derinligi, bağımlı değişkendir(y). Yani, açıklamaya veya tahmin etmeye çalıştığımız değişkendir, tilde’nin sağındaki değişken, gaga_uzunluğu bağımsız değişkendir(x). Yani, bağımlı değişkeni açıklamak için kullandığımız değişkendir.Çıkan özet incelendiğinde, eğim negatiftir çünkü estimate sütunu sonucu negatiftir (-0.08233), ilişki anlamlıdır çünkü p = < 0.05’dir. Sonuç olarak kurulan model ile gaga uzunluğu arttıkça, gaga derinliğinin istatistiksel olarak anlamlı şekilde azaldığı doğrulanmıştır.
model <- lm(gaga_derinligi ~ gaga_uzunluğu, data = penguins_temiz)
summary(model)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunluğu, data = penguins_temiz)
## 
## 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_uzunluğu -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
penguins_temiz %>% group_by(tur)
## # A tibble: 333 × 9
## # Groups:   tur [3]
##    tur    ada       gaga_uzunluğu 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>, yıl <int>, bmi <dbl>
  ggplot(penguins_temiz, aes(x = gaga_uzunluğu, y=gaga_derinligi, color=tur)) + 
  geom_point()+ 
  geom_smooth(method="lm", se=FALSE) +
  facet_wrap(~ tur)
## `geom_smooth()` using formula = 'y ~ x'
adelie<- penguins_temiz %>% filter(tur == "Adelie")
model_adelie<- lm(gaga_derinligi ~ gaga_uzunluğu, data = adelie)
summary(model_adelie)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunluğu, 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_uzunluğu  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
İkinci tür için regresyon modeli aynı işlemler tekrarlanarak hazırlanmıştır. Summary fonksiyonu ile sonuçlar özetliğinde, ikinci türde eğim pozitif (estimate=0.22221 ), ve ilişki anlamlıdır (p < 0.05).
chinstrap<- penguins_temiz %>% filter(tur == "Chinstrap")
model_chinstrap <- lm(gaga_derinligi ~ gaga_uzunluğu, data = chinstrap)
summary(model_chinstrap)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunluğu, 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_uzunluğu  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
Üçüncü tür için regresyon modeli aynı işlemler tekrarlanarak hazırlanmıştır. Sonuç,üçüncü türde, eğim pozitif (estimate=0.2076), ve ilişki anlamlıdır (p < 0.05).
gentoo <- penguins_temiz %>% filter(tur == "Gentoo")
model_gentoo <- lm(gaga_derinligi ~ gaga_uzunluğu, data = gentoo)
summary(model_gentoo)
## 
## Call:
## lm(formula = gaga_derinligi ~ gaga_uzunluğu, 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_uzunluğu   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.Toplam veri ile kurulan ilk modelde eğim negatif, ilişki istatistiksel olarak anlamlı bulunmuşken, türler için ayrı ayrı model kurulduğunda her bir tür için eğim pozitiftir ve ilişki istatistiksel olarak anlamlıdır. Sonuçlarda çelişki vardır.
Gruplar birleştiğinde negatif olan ilişki, gruplar ayrı ayrı incelendiğinde pozitif olarak bulunmuştur. Bu çelişki tam olarak Simpson Paradoksu’na bir örnektir. Bunun sebebi, her bir grup için gaga uzunluğu ve gaga derinliği ortalamalarının farklı olması olabilir. Alt grupları incelememek bizi hatalı sonuçlara götürebilir. Daha doğru ve güvenilir sonuçlar için verileri alt gruplara göre de incelemek gerekmektedir.
Bu haftaki derste öncelikle, R Markdown’da çalışırken başlıklarımızın ve yazılarımızın formatını nasıl düzenleyeceğimizi öğrendim.Theme ile görsel tema seçileceğini, toc’un table of contents anlamına geldiğini, toc_dept ile belgede kaç seviyede başlık kullanılacağına karar verildiğini, toc_float ile içindekiler menüsünün kayan bir menü olarak gözüktüğünü,collapsed:true, menüyü daratılmış olarak verdiğini, smooth_scroll: true ile içindekiler tablosundaki bir başlığa tıklandığında, sayfanın o bölüme kayarak gidilmesini sağladığını öğrendim ve bu haftaki ödevimde çıktımın ayarlarını bunları dikkate alarak ayarladım.Derste simpson paradoksu ve anscombe dörtlüsü verisi üzerinde konuştuk. Simpson paradoksu durumunu örneklemek için elimizde kadın ve erkeklere ait okula kabul oranlarını veren bir veri seti vardı. Cinsiyet bazında baktığımzda kadın kabul oranı erkeklere göre düşük gözüküyordu. Fakat bölüm bazında grafiklerle incelendiğinde,çoğu bölümde kadın kabul oranının erkeklerden fazla olduğunu gördük. Bu da bize elimizdeki verinin alt gruplara göre incelenmeden bir sonuca varmanın yanlış olacağını gösterdi. Anscombe’un Dörtlüsü veri setinde ise, 4 ayrı veri setinin ortalama, standart sapma ve korelasyon katsayıları hesaplandığında sonuçlar aynı çıkmakta olduğunu, fakat görselleştirildiğinde, farklı sonuçlar elde edildiğini gördük, bu durumda, sadece özet istatistiklere güvenmek hatalı olabilir sonucunu çıkarabiliriz.Son olarak derste R Markdown’da formül yazmak için Latex sözdiziminden yararlanmayı öğrendim. Formülü metin içinde vermek için tek dolar, ayrı bir satırda göstermek için çift dolar işareti kullanılması gerektiğini öğrendim. Benim için bu formül yazma işi açıkcası çok karışık geldi.