PUBLISHED LINK: https://rpubs.com/Haileab/1400203

# CHOSEN TEST

# INDEPENDET T-TEST Because of the two (2) separate/independent groups (students who participated in tutoring vs. students who did not) 

# To Simply put it Different Groups/People measured once = Independent T-Test

# Step 1: Install the Required Packages (run once)
#install.packages("readxl")
#install.packages("ggpubr")
#install.packages("dplyr")
#install.packages("effectsize")
#install.packages("effsize")

# Step 2: Open the Installed Packages
library(readxl)
library(ggpubr)
## Loading required package: ggplot2
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(effectsize)
library(effsize)

# Step 3: Import and Name Dataset
Dataset6.1 <- read_excel("/Users/ha113ab/Desktop/datasets/Dataset6.1.xlsx")

# Step 4: Calculate Descriptive Statistics for Each Group
Dataset6.1 %>%
  group_by(Group) %>%
  summarise(
    Mean = mean(Exam_Score, na.rm = TRUE),
    Median = median(Exam_Score, na.rm = TRUE),
    SD = sd(Exam_Score, na.rm = TRUE),
    N = n()
  )
## # A tibble: 2 × 5
##   Group        Mean Median    SD     N
##   <chr>       <dbl>  <dbl> <dbl> <int>
## 1 No Tutoring  71.9   71.5  7.68    40
## 2 Tutoring     78.4   78.7  7.18    40
# Step 5: Create Histograms for Each Group
# Tutoring group histogram
hist(Dataset6.1$Exam_Score[Dataset6.1$Group == "Tutoring"],
     main = "Histogram of Tutoring Group Scores",
     xlab = "Value",
     ylab = "Frequency",
     col = "green",
     border = "black",
     breaks = 10)

# No Tutoring group histogram
hist(Dataset6.1$Exam_Score[Dataset6.1$Group == "No Tutoring"],
     main = "Histogram of Non-Tutoring Group Scores",
     xlab = "Value",
     ylab = "Frequency",
     col = "navyblue",
     border = "black",
     breaks = 10)

# Step 6: Create Boxplots for Each Group
ggboxplot(Dataset6.1, x = "Group", y = "Exam_Score",
          color = "Group",
          palette = "jco",
          add = "jitter")

# Step 7: Shapiro-Wilk Test of Normality
# Tutoring group
shapiro.test(Dataset6.1$Exam_Score[Dataset6.1$Group == "Tutoring"])
## 
##  Shapiro-Wilk normality test
## 
## data:  Dataset6.1$Exam_Score[Dataset6.1$Group == "Tutoring"]
## W = 0.98859, p-value = 0.953
# No Tutoring group
shapiro.test(Dataset6.1$Exam_Score[Dataset6.1$Group == "No Tutoring"])
## 
##  Shapiro-Wilk normality test
## 
## data:  Dataset6.1$Exam_Score[Dataset6.1$Group == "No Tutoring"]
## W = 0.98791, p-value = 0.9398
# Step 8: Conduct Inferential Test (Independent T-Test)
t.test(Exam_Score ~ Group, data = Dataset6.1, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  Exam_Score by Group
## t = -3.8593, df = 78, p-value = 0.000233
## alternative hypothesis: true difference in means between group No Tutoring and group Tutoring is not equal to 0
## 95 percent confidence interval:
##  -9.724543 -3.105845
## sample estimates:
## mean in group No Tutoring    mean in group Tutoring 
##                  71.94627                  78.36147
# Step 9: Calculate Effect Size (Cohen's d)
cohens_d_result <- cohens_d(Exam_Score ~ Group, data = Dataset6.1, pooled_sd = TRUE)
print(cohens_d_result)
## Cohen's d |         95% CI
## --------------------------
## -0.86     | [-1.32, -0.40]
## 
## - Estimated using pooled SD.
# Step 10: Report the Results
# Descriptive statistics from Step 4:
# Tutoring group: Mean = 73.64, SD = 8.46, Median = 74.00
# No Tutoring group: Mean = 64.89, SD = 11.48, Median = 63.50
# t-test: t(38) = 2.72, p = .009
# Effect size: Cohen's d = 0.86 (large)

# Effect size interpretation guide:
# ± 0.00 to 0.19 = ignore
# ± 0.20 to 0.49 = small
# ± 0.50 to 0.79 = medium
# ± 0.80 to 1.29 = large
# ± 1.30 to +    = very large

# Final Report:
# The Tutoring group (M = 73.64, SD = 8.46) was significantly different from the No Tutoring group (M = 64.89, SD = 11.48) in exam scores, t(38) = 2.72, p = .009. The effect size was large (Cohen's d = 0.86).

```