# 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).