22 Ekim 2022 tarihli R ile veri analizi dersinde RMarkdown konusuna kaldığımız yerden devam ettik.
R Markdown’ın kod, metin, tablo ve grafiklerden oluşan raporlar oluşturmasını sağlayan güçlü bir araç olduğunu öğrenmiştim.
Bu derste ise, R Markdown kullanarak nasıl yapılandırılmış bir rapor oluşturulacağını ve her bir bileşenin nasıl entegre edileceğini öğrenmeye çalıştım.

Kurulum

R Markdown dosyası oluşturulduğunda, varsayılan olarak knitr::opts_chunk$set(echo = TRUE) ayarı otomatik olarak eklenmektedir.

Bu ayarın, kod bloklarının çıktıyla birlikte gösterilmesini sağladığını öğrendim.

Kurulum bölümünde ek olarak bazı seçenekler ayarlanabileceğinin farkına vardım.

Bu seçenekler sayesinde raporun düzenlenmesi daha kontrollü bir şekilde yapılabilir.

Öğrendiğim ilk adım, paketin doğru kurulumu ve R Markdown’da işlevlerin nasıl optimize edildiği oldu. knitr belgelerine göz atarak, daha fazla seçenek ve ayarlama yapılabileceğini keşfettim. Bu, raporların daha esnek hale getirilmesini sağlıyor.

Yapı ve İçindekiler Tablosu

R Markdown’ın yapısı oldukça esnek. Başlıklar # işareti kullanılarak oluşturuluyor ve bu başlıklardan otomatik olarak içindekiler tablosu (TOC) yaratılabiliyor.

Bu tablo, raporun uzunluğuna ve içerik sıklığına bağlı olarak okuyucuların belge içinde kolayca gezinebilmesini sağlar. Bu dosyada da başlık oluşturuldu ve başlıklar ararı gezmek ödevi yaparken bile işimi kolaylaştırdı.

Kendi raporlarımda da bu yapıyı oluşturmanın oldukça kullanışlı olduğunu gördüm.

Kod bloklarının nasıl oluşturulacağı ve bunların metin ile nasıl bütünleşeceği üzerinde çalıştım. Örneğin, aşağıdaki gibi bir veri yükleme işlemi gerçekleştirdim:

library(datasets)
data(iris)
#Bu yapı sayesinde, verilerin analizini doğrudan R Markdown belgesi üzerinden yapma imkanına sahip oldum.

Kod Blokları ve Yorumlar

Kod blokları oluşturulurken, bloklar içine yorum eklemenin önemli olduğunu öğrendim. Özellikle karmaşık işlemler gerçekleştirildiğinde, kodun ne yaptığını açıklayan yorumlar hem kendim hem de başkaları için faydalı oldu.

Örneğin:

# Toplam satır sayısını bulma
n <- nrow(iris)

#Yukarıdaki gibi açıklayıcı yorumlar, kodun anlaşılabilirliğini artırır. Yorumlamanın bir sanatı olduğuna dikkat çektim ve başkalarının kodlarını inceleyerek kendi kodlarımı nasıl daha iyi açıklayabileceğimi öğrenmeye çalıştım.

Satır İçi Kodlar

R Markdown’da satır içi kod ekleyerek hesaplama sonuçlarını doğrudan metne eklemek mümkündür. Bu özellik sayesinde, elde edilen değerler metin içinde gösterilir ve belgenin dinamik yapısı korunur.

Örneğin:

# analiz
library(dplyr)
setosa_petal <-filter(iris, Species == "setosa") %>%  pull(Petal.Length)
virginica_petal <-filter(iris, Species == "virginica") %>%  pull(Petal.Length)
petal_test <-t.test(setosa_petal, virginica_petal)

# rapor edilecek degerleri yorumlama
t <- petal_test$statistic %>% round(2)
df <- petal_test$parameter %>% round(1)
p <- petal_test$p.value %>% round(3)
# p-değerleri < .001 ata
p_symbol <- ifelse(p < .001, "<", "=") ## kodun bu kısmı elde edilen p değeri .001'den küçük ise p_symbol değerine <, değil ise = atar.
if (p < .001) p <- .001 

# sonucları birleştirme
petal_result <- glue::glue("t = {t}, df = {df}, p {p_symbol} {p}")
#virginica çiçeklerinin yaprakları setosa çiçeklerinin yapraklarından uzundur(`r petal_result`). metnini yazdığımızda aşağıdaki çıktıyı elde ederiz.

Virginica çiçeklerinin yaprakları setosa çiçeklerinin yapraklarından uzundur(t = -49.99, df = 58.6, p < 0.001).

t <- petal_test$statistic %>% round(2)
#Bu tür satır içi kodlarla hesaplamaların sonuçlarını doğrudan raporun içinde gösterebilirim.

Bu özellik, raporların etkileşimli olmasını sağladı ve güncellenebilir raporlar oluşturmanın yolunu açtı.

Tablolar

R Markdown’da tablolar oluşturmak ve görüntülemek için kable gibi fonksiyonlar kullanılabilir.

Bu, raporlara betimsel bilgilerin eklenmesi açısından oldukça önemlidir.

Örneğin, iris veri seti üzerinde çalışarak türlere göre ortalama yaprak uzunluklarını gösteren bir tablo oluşturdum

library(dplyr)
iris_summary <- iris %>%
  group_by(Species) %>%
  summarise(
    Frekans = n(),
    Ortalama = mean(Petal.Length),
    Sd = sd(Petal.Length)
  )
knitr::kable(iris_summary)
Species Frekans Ortalama Sd
setosa 50 1.462 0.1736640
versicolor 50 4.260 0.4699110
virginica 50 5.552 0.5518947

Bu süreçte, tablo formatlamasının çok önemli olduğunu fark ettim. Tabloyu daha profesyonel hale getirmek için kableExtra gibi ek fonksiyonların da kullanılabileceğini öğrendim.

Çalışmaların yöntem bölümüne betimsel bilgiler eklemek istediğimizde

ozet_tablo <- iris %>%
  group_by(Species) %>%
  summarise(
    n = n(),
    ortalama = mean(Petal.Length),
    sd = sd(Petal.Length)
  )
ozet_tablo
## # A tibble: 3 × 4
##   Species        n ortalama    sd
##   <fct>      <int>    <dbl> <dbl>
## 1 setosa        50     1.46 0.174
## 2 versicolor    50     4.26 0.470
## 3 virginica     50     5.55 0.552
# Özet tablo şu şekildedir:
# Species        n    ortalama    sd
# setosa         50    1.46        0.174
# versicolor     50    4.26        0.470
# virginica      50    5.55        0.552

!!! Yukarıdaki tablo etkileşimli görünümde tibble biçiminde yazdırılacak, ancak ördüğünüzde YAML başlığındaki df_print ayarındaki biçimi kullanacaktır.

Yukarıdaki tabloda, sütun etiketlerini değiştirerek, ortalamaları yuvarlayarak ve bir başlık ekleyerek daha okuyucu dostu hale getirlebilir. Bunun için knitr::kable() işlevini veya tablolarınızı biçimlendirmek için diğer paketlerdeki daha özel fonksiyonlarını kullanabilirsiniz.

Grafikler

Grafiklerin raporlara nasıl entegre edileceği üzerinde çalıştım.

Grafiklerin altına açıklayıcı başlıklar eklemek, grafiklerin neyi ifade ettiğini göstermek açısından oldukça faydalıdır.

Örneğin;

library(ggplot2)
ggplot(iris, aes(x = Species, y = Petal.Length)) +
  geom_boxplot()

Bu grafikleri oluşturarak, görsel analizlerin raporlara nasıl eklendiğini ve nasıl özelleştirilebileceğini öğrendim.

Resimler

Kodlarla oluşturamadığınız şekilleri de resim dosyaları ile dökümana ekleyebiliriz. Örneğin;

knitr::include_graphics("https://pegem.net/uploads/p/p/R-ile-Veri-Analizi-ve-Psikometri-Uygulamalari_2.jpg?v=1671544591")  

#ya da alttaki gibi ünlem işareti kullanarak da ekleme yapabiliriz.  
# ![neden R](https://pegem.net/uploads/p/p/R-ile-Veri-Analizi-ve-Psikometri-Uygulamalari_2.jpg?v=1671544591){style="width: 50%"}

Kaynakça, Referanslar ve Bağlantılar

R Markdown, raporlarda şekiller ve tablolara referans vermek için oldukça uygun bir yapıya sahiptir.

Şekil ve tabloları \@ref() ile referanslayarak metin içinde bağlantılar oluşturmak mümkündür.

Bu, özellikle uzun raporlarda okuyucunun kolayca ilgili yerlere gitmesini sağlar.

Aynı şekilde referanslar eklenerek kaynakçalar otomatik olarak oluşturulabilir.

Kaynakça Ekleme

R Markdown’da metin içi referanslar yapmanın ve otomatik olarak bir kaynakça oluşturmanın birkaç yolu vardır.

Markdown dosyalarının, atıfta bulunmanız gereken referansları içeren bir BibTex veya JSON dosyasına (referansları belirli bir formatta içeren düz bir metin dosyası) bağlanması gerekir.

Bu dosyanın adını bibliography: refs.bib gibi YAML başlığında belirtirsiniz ve [@tidyverse] gibi bir @ sembolü ve kısa ad kullanarak metin içinde referanslara atıfta bulunursunuz.

Referanslarınızı, örneğin APA stilinde biçimlendirmek için bir Citation Style Language (.csl) dosyası da ekleyebilirsiniz.
Türkçe referans göstermek için apa-tr.csl kullanılabilir.

Referans Yazılımdan Dönüştürme

  • EndNote veya Zotero gibi çoğu referans yazılımı BibTeX formatına aktarabilen dışa aktarma seçeneklerine sahiptir. Dışa aktardıktan sonra, ortaya çıkan dosyadaki kısa adları kontrol etmeniz yeterlidir.

  • Bu yazılımlar, referansların otomatik olarak düzenlenmesini sağlar ve akademik yazım sürecini büyük ölçüde kolaylaştırır.

BibTeX Dosyası Oluşturma

  • Referansları manuel olarak da ekleyebiliriz.

  • RStudio’da* File > New File... > Text File seçeneğine gidin ve dosyayı refs.bib olarak kaydedin.

  • Ardından, YAML başlığınıza bibliography: refs.bib satırını ekleyin.

Örnek BibTeX formatı şu şekildedir:

#bibtex
#@article{kathawalla_easing_2021,
 #   title = {Easing {Into} {Open} {Science}: {A} {Guide} for {Graduate} {Students} and {Their} {Advisors}},
#volume = {7},
#issn = {2474-7394},
#url = {https://doi.org/10.1525/collabra.18684},
#doi = {10.1525/collabra.18684},
#author = {Kathawalla, Ummul-Kiram and Silverstein, Priya and Syed, Moin},
#year = {2021},
#journal = {Collabra: Psychology}

R Markdown ile raporlama, hem veri analizi yapmayı hem de bu analizleri anlamlı ve okunabilir raporlar haline getirmeyi oldukça kolaylaştırıyor. Öğrendiklerimi uygulayarak daha iyi raporlar oluşturabileceğime inanıyorum. Çok çalışmak gerektiğinin ve kolay unutulduğunun da farkına vardım.

HAFTANIN ÖDEVLERİ

Reproses paketi ile örülen çoklu regresyon ile ilgili döküman RPubs Sayfama yüklenmiştir.

İlk 5 haftanın dokümanları aynı linkte mevcuttur.