library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom)
library(ggplot2)

Bu bölümde analiz için gerekli paketler yüklenmiştir. tidyverse veri düzenleme işlemleri için, ggplot2 grafik oluşturmak için, broom ise test sonucunu daha düzenli göstermek için kullanılmıştır.

Veri Setinin Oluşturulmas

egzersiz_veri <- data.frame(
  id = 1:8,

  egzersiz_oncesi = c(
    31, 28, 30, 27,
    29, 32, 26, 30
  ),

  egzersiz_sonrasi = c(
    26, 24, 27, 23,
    25, 28, 22, 26
  )
)

egzersiz_veri
##   id egzersiz_oncesi egzersiz_sonrasi
## 1  1              31               26
## 2  2              28               24
## 3  3              30               27
## 4  4              27               23
## 5  5              29               25
## 6  6              32               28
## 7  7              26               22
## 8  8              30               26

Bu bölümde egzersiz programına katılan öğrencilerin egzersiz öncesi ve egzersiz sonrası stres puanları girilmiştir.

Veriyi Uzun Formata Çevirmek

veri_long <- egzersiz_veri %>%
  pivot_longer(
    cols = c(egzersiz_oncesi, egzersiz_sonrasi),
    names_to = "zaman",
    values_to = "stres"
  )

veri_long
## # A tibble: 16 × 3
##       id zaman            stres
##    <int> <chr>            <dbl>
##  1     1 egzersiz_oncesi     31
##  2     1 egzersiz_sonrasi    26
##  3     2 egzersiz_oncesi     28
##  4     2 egzersiz_sonrasi    24
##  5     3 egzersiz_oncesi     30
##  6     3 egzersiz_sonrasi    27
##  7     4 egzersiz_oncesi     27
##  8     4 egzersiz_sonrasi    23
##  9     5 egzersiz_oncesi     29
## 10     5 egzersiz_sonrasi    25
## 11     6 egzersiz_oncesi     32
## 12     6 egzersiz_sonrasi    28
## 13     7 egzersiz_oncesi     26
## 14     7 egzersiz_sonrasi    22
## 15     8 egzersiz_oncesi     30
## 16     8 egzersiz_sonrasi    26

Bu bölümde veri seti uzun formata çevrilmiştir. pivot_longer() fonksiyonu sayesinde egzersiz öncesi ve egzersiz sonrası puanlar tek bir sütunda toplanmıştır. Bu işlem grafik çizimini daha kolay hale getirmiştir.

Çizgi Grafiği

ggplot(
  veri_long,
  aes(
    x = zaman,
    y = stres,
    group = id
  )
) +
  geom_line(alpha = 0.4) +
  geom_point(size = 2) +
  labs(
    title = "Egzersiz Oncesi ve Sonrasi Stres",
    x = "Zaman",
    y = "Stres"
  ) +
  theme_minimal()

Bu grafik egzersiz öncesi ve egzersiz sonrası stres puanlarındaki değişimi göstermektedir. Genel olarak egzersiz sonrası stres puanlarının daha düşük olduğu görülmektedir.

Kutu Grafiği

ggplot(
  veri_long,
  aes(
    x = zaman,
    y = stres,
    fill = zaman
  )
) +
  geom_boxplot(alpha = 0.6) +
  geom_jitter(
    width = 0.1,
    alpha = 0.6
  ) +
  theme_minimal()

Kutu grafiği incelendiğinde egzersiz sonrası stres puanlarının egzersiz öncesine göre daha düşük olduğu görülmektedir. Bu durum egzersiz programının stres düzeyi üzerinde etkili olabileceğini düşündürmektedir.

Wilcoxon Signed Rank Testi

sonuc_stres <- wilcox.test(
  egzersiz_veri$egzersiz_oncesi,
  egzersiz_veri$egzersiz_sonrasi,
  paired = TRUE
)
## Warning in wilcox.test.default(egzersiz_veri$egzersiz_oncesi,
## egzersiz_veri$egzersiz_sonrasi, : cannot compute exact p-value with ties
sonuc_stres
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  egzersiz_veri$egzersiz_oncesi and egzersiz_veri$egzersiz_sonrasi
## V = 36, p-value = 0.01038
## alternative hypothesis: true location shift is not equal to 0

Bu bölümde Wilcoxon Signed Rank testi uygulanmıştır. Bu test aynı bireylerin iki farklı zamandaki puanlarını karşılaştırmak için kullanılır. paired = TRUE ifadesi ölçümlerin bağımlı olduğunu belirtmektedir.

Test Sonucunu Tablo Halinde Gösterme

wilcox.test(
  egzersiz_veri$egzersiz_oncesi,
  egzersiz_veri$egzersiz_sonrasi,
  paired = TRUE
) %>%
  tidy()
## Warning in wilcox.test.default(egzersiz_veri$egzersiz_oncesi,
## egzersiz_veri$egzersiz_sonrasi, : cannot compute exact p-value with ties
## # A tibble: 1 × 4
##   statistic p.value method                                           alternative
##       <dbl>   <dbl> <chr>                                            <chr>      
## 1        36  0.0104 Wilcoxon signed rank test with continuity corre… two.sided

tidy() fonksiyonu test sonucunu daha düzenli bir tablo halinde göstermektedir. Bu sayede test istatistiği ve p değeri daha kolay okunabilmektedir.

Sonuç ve Yorum

Wilcoxon Signed Rank testi sonucunda egzersiz öncesi ve egzersiz sonrası stres puanları arasında anlamlı bir fark olup olmadığı incelenmiştir. p değeri 0.05’ten küçük ise egzersiz öncesi ve sonrası stres puanları arasında anlamlı fark olduğu söylenebilir. Bu durumda egzersiz programından sonra öğrencilerin stres puanlarının azaldığı yorumu yapılabilir.

Raporlama

Egzersiz programı öncesi ve sonrası stres puanları arasındaki farkı incelemek amacıyla Wilcoxon Signed Rank testi uygulanmıştır. Analiz sonucunda p değerine göre egzersiz sonrası stres puanlarında anlamlı bir azalma olup olmadığı değerlendirilmiştir.