Ö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.