# Install packages (run once)
#install.packages("readxl")
#install.packages("ggpubr")
#install.packages("effectsize")
#install.packages("rstatix")

# Load libraries
library(readxl)
library(ggpubr)
## Loading required package: ggplot2
library(effectsize)
library(rstatix)
## 
## Attaching package: 'rstatix'
## The following objects are masked from 'package:effectsize':
## 
##     cohens_d, eta_squared
## The following object is masked from 'package:stats':
## 
##     filter
# Import dataset
Dataset6.3 <- read_excel("/Users/ha113ab/Desktop/datasets/Dataset6.3.xlsx")

# Separate variables
Before <- Dataset6.3$Stress_Pre
After <- Dataset6.3$Stress_Post
Differences <- After - Before

# Descriptive statistics for Pre-test
mean(Dataset6.3$Stress_Pre, na.rm = TRUE)
## [1] 65.86954
median(Dataset6.3$Stress_Pre, na.rm = TRUE)
## [1] 67.33135
sd(Dataset6.3$Stress_Pre, na.rm = TRUE)
## [1] 9.496524
# Descriptive statistics for Post-test
mean(Dataset6.3$Stress_Post, na.rm = TRUE)
## [1] 57.90782
median(Dataset6.3$Stress_Post, na.rm = TRUE)
## [1] 59.14539
sd(Dataset6.3$Stress_Post, na.rm = TRUE)
## [1] 10.1712
# Histogram for Pre-test
hist(Dataset6.3$Stress_Pre,
     main = "Histogram of Stress_Pre Scores",
     xlab = "Value",
     ylab = "Frequency",
     col = "blue",
     border = "black",
     breaks = 20)

# Histogram for Post-test
hist(Dataset6.3$Stress_Post,
     main = "Histogram of Stress_Post Scores",
     xlab = "Value",
     ylab = "Frequency",
     col = "blue",
     border = "black",
     breaks = 20)

# Boxplot for Pre-test
boxplot(Dataset6.3$Stress_Pre,
        main = "Distribution of Stress_Pre Scores",
        ylab = "Stress Score",
        col = "green",
        border = "black")

# Boxplot for Post-test
boxplot(Dataset6.3$Stress_Post,
        main = "Distribution of Stress_Post Scores",
        ylab = "Stress Score",
        col = "green",
        border = "black")

# Wilcoxon signed-rank test
wilcox.test(Dataset6.3$Stress_Pre, Dataset6.3$Stress_Post, paired = TRUE)
## 
##  Wilcoxon signed rank exact test
## 
## data:  Dataset6.3$Stress_Pre and Dataset6.3$Stress_Post
## V = 518, p-value = 0.0005508
## alternative hypothesis: true location shift is not equal to 0
# Effect size calculation
df_long <- data.frame(
  id = rep(1:length(Dataset6.3$Stress_Pre), 2),
  time = rep(c("Pre", "Post"), each = length(Dataset6.3$Stress_Pre)),
  score = c(Dataset6.3$Stress_Pre, Dataset6.3$Stress_Post)
)

wilcox_effsize(df_long, score ~ time, paired = TRUE)
## # A tibble: 1 × 7
##   .y.   group1 group2 effsize    n1    n2 magnitude
## * <chr> <chr>  <chr>    <dbl> <int> <int> <ord>    
## 1 score Post   Pre      0.562    35    35 large
# Results interpretation
#Pre-test: Mdn = 67.33
#Post-test: Mdn = 59.15
#Wilcoxon test: V = 518, p < .001
#Effect size: r = 0.56 (very large)

#There was a significant difference in stress levels between Pre-test (Mdn = 67.33) and Post-test (Mdn = 59.15), V = 518, p < .001. The effect size was very large (r₍rb₎ = 0.56).