Open the Required 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)

Import & Name Dataset

Dataset6.1 <- read_excel("D:/SLU/AdvAppliedAnalytics/Dataset6.1.xlsx")

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

No Tutoring (M = 71.90, SD = 7.68) and Tutoring (M = 78.40, SD = 7.18)

Create Histograms for Each Group

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

For the No Tutoring Histogram, the data appears symmetrical (normal). The kurtosis also appears bell-shaped (normal)

  1. Tutoring
hist(Dataset6.1$Exam_Score[Dataset6.1$Group == "Tutoring"],
     main = "Histogram of Tutoring Scores",
     xlab = "Value",
     ylab = "Frequency",
     col = "lightgreen",
     border = "black", 
     breaks = 10)

For the Tutoring Histogram, the data appears symmetrical (normal). The kurtosis also appears bell-shaped (normal)

Create Boxplots for Each Group

ggboxplot(Dataset6.1, x = "Group", y = "Exam_Score",
          color = "Group",
          palette = "jco",
          add = "jitter")

In the Tutoring group, the dots are close to the whiskers and the data looks normal. In the No Tutoring group, few dots are little bit far from the whisker and the data looks normal. Therefore, the data is not normally distributed.

Shapiro-Wilk Test of Normality

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

The data for No Tutoring(p-value = 0.94) was normal (p > .05)

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

The data for Tutoring(p-value = 0.95) was normal (p > .05) After conducting all three normality tests, it is clear we must use a Independent T-Test

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

p-value = 0.000233 which is less than 0.05, this means the results were SIGNIFICANT(p < .05).

Calculate the Effect Size - Cohen’s D for Independent T-Test

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.

The effect size was large (Cohen’s d = −0.86). Indicating a strong difference between the group.

Report the Results

No Tutoring (M = 71.95, SD = 7.68) was significantly different from Tutoring (M = 78.36, SD = 7.18), t(78) = −3.86, p = .0002 The effect size was large (Cohen’s d = −0.86).