KULLANILACAK PAKETLERİN KURULUMU VE BELGENİN R’A OKUTULMASI

library (tidyverse)
library(openintro)
library(ggplot2)
library(dplyr)
library(readr)
student_mat <- read_delim("student-mat.csv", 
    delim = ";", escape_double = FALSE, trim_ws = TRUE)
#Açmaya çalıştığın belge adının doğru olması ve ilgili belgenin çalıştığın klasör içinde bulunması R'ın o belgeyi okuyabilmesi için şarttır.

OKUTULAN BELGENİN İNCELENMESİ

#Veri düzenleme işlemlerinin kodları yazılır.

#Veriye göz atmak

glimpse(student_mat)
## Rows: 395
## Columns: 33
## $ school     <chr> "GP", "GP", "GP", "GP", "GP", "GP", "GP", "GP", "GP", "GP",…
## $ sex        <chr> "F", "F", "F", "F", "F", "M", "M", "F", "M", "M", "F", "F",…
## $ age        <dbl> 18, 17, 15, 15, 16, 16, 16, 17, 15, 15, 15, 15, 15, 15, 15,…
## $ address    <chr> "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U",…
## $ famsize    <chr> "GT3", "GT3", "LE3", "GT3", "GT3", "LE3", "LE3", "GT3", "LE…
## $ Pstatus    <chr> "A", "T", "T", "T", "T", "T", "T", "A", "A", "T", "T", "T",…
## $ Medu       <dbl> 4, 1, 1, 4, 3, 4, 2, 4, 3, 3, 4, 2, 4, 4, 2, 4, 4, 3, 3, 4,…
## $ Fedu       <dbl> 4, 1, 1, 2, 3, 3, 2, 4, 2, 4, 4, 1, 4, 3, 2, 4, 4, 3, 2, 3,…
## $ Mjob       <chr> "at_home", "at_home", "at_home", "health", "other", "servic…
## $ Fjob       <chr> "teacher", "other", "other", "services", "other", "other", …
## $ reason     <chr> "course", "course", "other", "home", "home", "reputation", …
## $ guardian   <chr> "mother", "father", "mother", "mother", "father", "mother",…
## $ traveltime <dbl> 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 2, 1, 1, 1, 3, 1, 1,…
## $ studytime  <dbl> 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 2, 3, 1, 3, 2, 1, 1,…
## $ failures   <dbl> 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,…
## $ schoolsup  <chr> "yes", "no", "yes", "no", "no", "no", "no", "yes", "no", "n…
## $ famsup     <chr> "no", "yes", "no", "yes", "yes", "yes", "no", "yes", "yes",…
## $ paid       <chr> "no", "no", "yes", "yes", "yes", "yes", "no", "no", "yes", …
## $ activities <chr> "no", "no", "no", "yes", "no", "yes", "no", "no", "no", "ye…
## $ nursery    <chr> "yes", "no", "yes", "yes", "yes", "yes", "yes", "yes", "yes…
## $ higher     <chr> "yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes", "ye…
## $ internet   <chr> "no", "yes", "yes", "yes", "no", "yes", "yes", "no", "yes",…
## $ romantic   <chr> "no", "no", "no", "yes", "no", "no", "no", "no", "no", "no"…
## $ famrel     <dbl> 4, 5, 4, 3, 4, 5, 4, 4, 4, 5, 3, 5, 4, 5, 4, 4, 3, 5, 5, 3,…
## $ freetime   <dbl> 3, 3, 3, 2, 3, 4, 4, 1, 2, 5, 3, 2, 3, 4, 5, 4, 2, 3, 5, 1,…
## $ goout      <dbl> 4, 3, 2, 2, 2, 2, 4, 4, 2, 1, 3, 2, 3, 3, 2, 4, 3, 2, 5, 3,…
## $ Dalc       <dbl> 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,…
## $ Walc       <dbl> 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 1, 4, 3,…
## $ health     <dbl> 3, 3, 3, 5, 5, 5, 3, 1, 1, 5, 2, 4, 5, 3, 3, 2, 2, 4, 5, 5,…
## $ absences   <dbl> 6, 4, 10, 2, 4, 10, 0, 6, 0, 0, 0, 4, 2, 2, 0, 4, 6, 4, 16,…
## $ G1         <dbl> 5, 5, 7, 15, 6, 15, 12, 6, 16, 14, 10, 10, 14, 10, 14, 14, …
## $ G2         <dbl> 6, 5, 8, 14, 10, 15, 12, 5, 18, 15, 8, 12, 14, 10, 16, 14, …
## $ G3         <dbl> 6, 6, 10, 15, 10, 15, 11, 6, 19, 15, 9, 12, 14, 11, 16, 14,…
#Verinin baştan ilk 10 satırını görmek

head(student_mat, 10)
## # A tibble: 10 × 33
##    school sex     age address famsize Pstatus  Medu  Fedu Mjob     Fjob   reason
##    <chr>  <chr> <dbl> <chr>   <chr>   <chr>   <dbl> <dbl> <chr>    <chr>  <chr> 
##  1 GP     F        18 U       GT3     A           4     4 at_home  teach… course
##  2 GP     F        17 U       GT3     T           1     1 at_home  other  course
##  3 GP     F        15 U       LE3     T           1     1 at_home  other  other 
##  4 GP     F        15 U       GT3     T           4     2 health   servi… home  
##  5 GP     F        16 U       GT3     T           3     3 other    other  home  
##  6 GP     M        16 U       LE3     T           4     3 services other  reput…
##  7 GP     M        16 U       LE3     T           2     2 other    other  home  
##  8 GP     F        17 U       GT3     A           4     4 other    teach… home  
##  9 GP     M        15 U       LE3     A           3     2 services other  home  
## 10 GP     M        15 U       GT3     T           3     4 other    other  home  
## # ℹ 22 more variables: guardian <chr>, traveltime <dbl>, studytime <dbl>,
## #   failures <dbl>, schoolsup <chr>, famsup <chr>, paid <chr>,
## #   activities <chr>, nursery <chr>, higher <chr>, internet <chr>,
## #   romantic <chr>, famrel <dbl>, freetime <dbl>, goout <dbl>, Dalc <dbl>,
## #   Walc <dbl>, health <dbl>, absences <dbl>, G1 <dbl>, G2 <dbl>, G3 <dbl>

ALISTIRMA 1: VERI DUZENLEME (dplyr)

Aşağıdaki işlemlerden en az üçünü uygulayınız. Yaptığınız her bir işlemi açıklayarak yapınız

#Veri düzenleme işlemlerinin kodları yazılır.

#Öğrencilerin final notlarının sütunu seçilir.

student_mat %>% 
  select(G3)
## # A tibble: 395 × 1
##       G3
##    <dbl>
##  1     6
##  2     6
##  3    10
##  4    15
##  5    10
##  6    15
##  7    11
##  8     6
##  9    19
## 10    15
## # ℹ 385 more rows
#Öğrencileri adrese göre gruplayarak çalışma saati 2 ve üzeri olan öğrencileri içeren bir sütun oluşturur.

student_mat %>%
  group_by(address) %>%
  mutate(studytime >= 2)
## # A tibble: 395 × 34
## # Groups:   address [2]
##    school sex     age address famsize Pstatus  Medu  Fedu Mjob     Fjob   reason
##    <chr>  <chr> <dbl> <chr>   <chr>   <chr>   <dbl> <dbl> <chr>    <chr>  <chr> 
##  1 GP     F        18 U       GT3     A           4     4 at_home  teach… course
##  2 GP     F        17 U       GT3     T           1     1 at_home  other  course
##  3 GP     F        15 U       LE3     T           1     1 at_home  other  other 
##  4 GP     F        15 U       GT3     T           4     2 health   servi… home  
##  5 GP     F        16 U       GT3     T           3     3 other    other  home  
##  6 GP     M        16 U       LE3     T           4     3 services other  reput…
##  7 GP     M        16 U       LE3     T           2     2 other    other  home  
##  8 GP     F        17 U       GT3     A           4     4 other    teach… home  
##  9 GP     M        15 U       LE3     A           3     2 services other  home  
## 10 GP     M        15 U       GT3     T           3     4 other    other  home  
## # ℹ 385 more rows
## # ℹ 23 more variables: guardian <chr>, traveltime <dbl>, studytime <dbl>,
## #   failures <dbl>, schoolsup <chr>, famsup <chr>, paid <chr>,
## #   activities <chr>, nursery <chr>, higher <chr>, internet <chr>,
## #   romantic <chr>, famrel <dbl>, freetime <dbl>, goout <dbl>, Dalc <dbl>,
## #   Walc <dbl>, health <dbl>, absences <dbl>, G1 <dbl>, G2 <dbl>, G3 <dbl>,
## #   `studytime >= 2` <lgl>
#Öğrencileri yaşa göre gruplayarak dışarı çıkma saati 3 ve üzeri olan ve devamsızlık sayısı 11 ve üzeri olan öğrencileri yaşa göre azalan sırada listeyerek filtreler.

student_mat %>%
  group_by (age) %>%
  filter (goout >= 3 & absences >= 11) %>%
  arrange(desc(age))
## # A tibble: 45 × 33
## # Groups:   age [7]
##    school sex     age address famsize Pstatus  Medu  Fedu Mjob     Fjob   reason
##    <chr>  <chr> <dbl> <chr>   <chr>   <chr>   <dbl> <dbl> <chr>    <chr>  <chr> 
##  1 GP     M        22 U       GT3     T           3     1 services servi… other 
##  2 MS     M        20 U       LE3     A           2     2 services servi… course
##  3 GP     F        19 U       GT3     T           3     3 other    servi… home  
##  4 GP     M        19 U       GT3     T           3     3 other    other  home  
##  5 GP     M        19 U       GT3     T           4     4 teacher  servi… reput…
##  6 GP     F        19 U       LE3     T           1     1 at_home  other  reput…
##  7 GP     F        19 R       GT3     A           3     1 services at_ho… home  
##  8 GP     M        18 U       GT3     T           2     2 services other  home  
##  9 GP     M        18 U       LE3     T           3     3 services health home  
## 10 GP     F        18 R       GT3     T           3     1 other    other  reput…
## # ℹ 35 more rows
## # ℹ 22 more variables: guardian <chr>, traveltime <dbl>, studytime <dbl>,
## #   failures <dbl>, schoolsup <chr>, famsup <chr>, paid <chr>,
## #   activities <chr>, nursery <chr>, higher <chr>, internet <chr>,
## #   romantic <chr>, famrel <dbl>, freetime <dbl>, goout <dbl>, Dalc <dbl>,
## #   Walc <dbl>, health <dbl>, absences <dbl>, G1 <dbl>, G2 <dbl>, G3 <dbl>
#Öğrencilerden kadın olanlar ve romantik ilişkisi olmayanlar filtrelenir ve frekansı bulunur..

count(student_mat %>%
       filter(sex == "F", romantic == "no"))
## # A tibble: 1 × 1
##       n
##   <int>
## 1   129
#Final notlarının ortalamasını hesaplar ve bir değişken hazırlar. Kodun tamamı parantez içine alınırsa atama yapılmasının haricinde sonucu da gösterir.

(ort_final <- mean(student_mat $ G3))
## [1] 10.41519

ALISTIRMA 2: GORSELLESTIRME (ggplot2)

İki adet grafik oluşturunuz. Örnek olarak aşağıdaki grafik türlerinden en az ikisini oluşturabilirsiniz. Anak grafiği kendinizi yaratırsanız daha mennun olurum. Oluşturduğunuz grafikleri yorumlayınız

#Veri görselleştirme işlemlerinin kodları yazılır.

#Histogram
#Öğrencilerin final notlarının cinsiyete göre dağılımı
                    
ggplot(data = student_mat, aes(x = G3, fill = sex)) +
  geom_histogram(color = "grey", bins = 20, position = "dodge") +
  theme_linedraw() +
  labs(title = "Final notlarının cinsiyete göre dağılımı",
       x = "Final notları",
       y = "Frekans",
       fill = "Cinsiyet") +
  scale_fill_manual(values = c("F" = "lightpink", "M" = "lightblue"),
                    labels = c("F" = "Kadın", "M" = "Erkek"))

#Grafikte kadın ve erkek öğrencilerin final notlarının frekans dağılımı görülmektedir. Genel olarak her iki cinsiyetin dağılımı birbirine oldukça benzer bir şekil göstermektedir. Notların büyük çoğunluğu 10 civarında yoğunlaşmış, bu da ortalama düzeyde bir başarıyı işaret etmektedir. Bununla birlikte, her iki grupta da 0 civarında dikkate değer bir yığılma görülmekte, bu durum sınava girmeyen veya çok düşük başarı gösteren öğrencilerin varlığını düşündürmektedir. Yüksek not aralığında (15 ve üzeri) frekansın belirgin biçimde azaldığı gözlenmektedir.


#Boxplot
#Öğrencilerin aile desteği alan ve almayanların, yasal vasileri ve aile iletişimleriyle kalitelerinin dağılımı

ggplot(data = student_mat, aes(x = famsup, y = famrel, color = guardian)) +
  geom_boxplot() +
  theme_linedraw() +
  labs(title = "Öğrencilerin aile etkileşimlerinin dağılımı",
       x = "Ailenin eğitim desteği", 
       y = "Aile ile iletişim kalitesi",
       color = "Yasal vasisi") +
  scale_x_discrete(labels = c("no" = "Hayır", "yes" = "Evet")) +
  scale_color_manual(values = c("father" = "darkblue", "mother" = "red", "other" = "orange"),
                     labels = c("father" = "Baba", "mother" = "Anne", "other" = "Diğer"))

#Aile desteği alan öğrenciler genel olarak yüksek bir iletişim kalitesine sahipken, özellikle baba veya anne vasisi olanlarda medyan değer 4 civarında yoğunlaşmıştır. Destek almayan öğrencilerde ise iletişim kalitesi dağılımı daha geniş ve medyan biraz daha düşüktür, bu durum aile desteği eksikliğinin iletişim kalitesini olumsuz etkileyebileceğini göstermektedir. Ayrıca, farklı yasal vasiler arasında, baba vasisi olan öğrencilerin iletişim kalitesi biraz daha homojen ve yüksek görünürken, anne veya diğer vasilerde uç değerlerin daha fazla olması dikkat çekmektedir.

ÖZ-DEĞERLENDİRME

Özellikle dplyr ve tidyverse paketindeki selectfiltergroup_byarrange ve mutate fonksiyonlarını etkin biçimde kullanmayı öğrendim. Ayrıca ggplot2 kütüphanesiyle veri görselleştirmenin temel mantığını kavradım. R Script ortamında başlangıçta zorlanmama rağmen, R Markdown’ın Visual modunun analiz sürecini daha pratik ve anlaşılır hale getirdiğini deneyimledim.