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.
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.
fig.width = 8, fig.height = 5: Varsayılan grafik genişliği ve yüksekliği ayarlar.
echo = FALSE: Kod bloklarının görünürlüğünü ayarlar (Eğer FALSE olarak ayarlanırsa, kodlar işlenen belgede görünmez.)
warning ve message gibi seçenekler, fonksiyonlardan gelen uyarı ve mesajları görüntüleyip görüntülememeyi kontrol eder.
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.
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:
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:
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ı.
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.
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;
Bu grafikleri oluşturarak, görsel analizlerin raporlara nasıl eklendiğini ve nasıl özelleştirilebileceğini öğrendim.
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")
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.
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.
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.
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.
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.