Media priming theory suggests that exposure to certain media content can temporarily influence people’s attitudes and behaviors by making related thoughts more accessible. In this study, we examined whether fifth-grade students who played a violent math game engaged in more aggressive behavior during recess than students who played a nonviolent math game or completed an art project. If the results show that students who played the violent game spent more time engaging in aggressive acts than students in the other two groups, this would provide support for media priming theory. Specifically, the findings would suggest that exposure to violent content can temporarily influence subsequent behavior, even when the original activity was primarily designed as a math lesson.
Students who play the violent game will spend more time engaging in aggressive behavior during recess than students who play the nonviolent game or complete the art project.
The independent variable in the analysis was the type of lesson each student completed before recess (Group), with three possible conditions: playing the violent game, playing the nonviolent game, or completing the art project. The dependent variable was the total amount of time, in minutes, each student spent engaging in aggressive acts during recess (Value). Aggressive acts included both verbal behaviors, such as taunting and threatening, and physical behaviors, such as pushing and grabbing.
A sample of 135 fifth-grade students from a large suburban elementary school was recruited for the experiment. Students were randomly divided into three groups of 45 students each. Approximately 30 minutes before recess, the first group played a math game called “Exponent Fighter,” in which correct answers allowed their characters to punch an opponent. The second group played “Exponent Builder,” a similar math game in which correct answers allowed their characters to build a structure. The third group completed an art project using a color wheel, paint, and pre-cut stencils. Following the lessons, all students participated in a 30-minute recess while trained researchers recorded the amount of time each student spent engaging in aggressive behavior.
A one-way analysis of variance (ANOVA) was used to test whether the average amount of time students spent engaging in aggressive behavior (Value) differed significantly across the three lesson groups (Group).
Clarify the aggression measurement procedure Separate variables from method details
The tables below show a Interactive Group Distribution with Means, Descriptive Statistics by Group,Shapiro-Wilk Normality Test by Group, and Anova Test Results
| Descriptive Statistics by Group | |||||
| IV | count | mean | sd | min | max |
|---|---|---|---|---|---|
| Art project | 45 | 4.96 | 1.04 | 2.3 | 7.3 |
| Nonviolent game | 45 | 5.86 | 1.06 | 3.6 | 8.4 |
| Violent game | 45 | 10.75 | 1.00 | 8.5 | 12.8 |
| Shapiro-Wilk Normality Test by Group | ||
| IV | W_statistic | p_value |
|---|---|---|
| Art project | 0.99 | 0.923 |
| Nonviolent game | 0.98 | 0.594 |
| Violent game | 0.98 | 0.699 |
| Note. If any p-value figures are 0.05 or less, if one or more group distributions appear non-normal, and any group sizes are less than 40, consider using the Kruskal-Wallis and Post-hoc Dunn’s Test results instead of the ANOVA and Tukey HSD Post-hoc results. | ||
| ANOVA Test Results | |||
| Statistic | df | df_resid | p_value |
|---|---|---|---|
| 420.86 | 2 | 87.94717 | < .001 |
With a p-value below .05 on the ANOVA Test Results we can say that the test is statistically significant and students who play the violent game will spend more time engaging in aggressive behavior during recess than students who play the nonviolent game or complete the art project.
With our Shapiro-Wilk Normality Test by Group we see that all P-values are above .05 we do not have to use any extra tests because our distribution is normal.
Descriptive Statistics by Group shows that all groups have a count greater than 40 which means we do not have to use any extra tests because our distribution is normal.
# ============================================================
# Setup: Install and Load Required Packages
# ============================================================
if (!require("tidyverse")) install.packages("tidyverse")
if (!require("gt")) install.packages("gt")
if (!require("gtExtras")) install.packages("gtExtras")
if (!require("FSA")) install.packages("FSA")
if (!require("plotly")) install.packages("plotly")
library(tidyverse)
library(gt)
library(gtExtras)
library(FSA)
library(plotly)
options(scipen = 999) # suppress scientific notation
# ============================================================
# Step 1: Load Data
# ============================================================
mydata <- read.csv("Priming.csv") # <-- Edit YOURFILENAME.csv
# Specify DV and IV (edit column names here)
mydata$DV <- mydata$Value
mydata$IV <- mydata$Group
# ============================================================
# Step 2: Visualize Group Distributions (Interactive)
# ============================================================
# Compute group means
group_means <- mydata %>%
group_by(IV) %>%
summarise(mean_value = mean(DV), .groups = "drop")
# Interactive plot (boxplot + group means)
box_plot <- plot_ly() %>%
# Boxplot trace
add_trace(
data = mydata,
x = ~IV, y = ~DV,
type = "box",
boxpoints = "outliers", # only applies here
marker = list(color = "red", size = 4), # outlier style
line = list(color = "black"),
fillcolor = "royalblue",
name = ""
) %>%
# Group means (diamonds)
add_trace(
data = group_means,
x = ~IV, y = ~mean_value,
type = "scatter", mode = "markers",
marker = list(
symbol = "diamond", size = 9,
color = "black", line = list(color = "white", width = 1)
),
text = ~paste0("Mean = ", round(mean_value, 2)),
hoverinfo = "text",
name = "Group Mean"
) %>%
layout(
title = "Interactive Group Distributions with Means",
xaxis = list(title = "Independent Variable (IV)"),
yaxis = list(title = "Dependent Variable (DV)"),
showlegend = FALSE
)
# ============================================================
# Step 3: Descriptive Statistics by Group
# ============================================================
desc_stats <- mydata %>%
group_by(IV) %>%
summarise(
count = n(),
mean = mean(DV, na.rm = TRUE),
sd = sd(DV, na.rm = TRUE),
min = min(DV, na.rm = TRUE),
max = max(DV, na.rm = TRUE)
)
desc_table <- desc_stats %>%
mutate(across(where(is.numeric), ~round(.x, 2))) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "Descriptive Statistics by Group")
# ============================================================
# Step 4: Test Normality (Shapiro-Wilk)
# ============================================================
shapiro_results <- mydata %>%
group_by(IV) %>%
summarise(
W_statistic = shapiro.test(DV)$statistic,
p_value = shapiro.test(DV)$p.value
)
shapiro_table <- shapiro_results %>%
mutate(
W_statistic = round(W_statistic, 2),
p_value = ifelse(p_value < .001, "< .001", sprintf("%.3f", p_value))
) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "Shapiro-Wilk Normality Test by Group") %>%
tab_source_note(
source_note = "Note. If any p-value figures are 0.05 or less, if one or more group distributions appear non-normal, and any group sizes are less than 40, consider using the Kruskal-Wallis and Post-hoc Dunn’s Test results instead of the ANOVA and Tukey HSD Post-hoc results."
)
# ============================================================
# Step 5a: Non-Parametric Test (Kruskal-Wallis + Dunn)
# ============================================================
kruskal_res <- kruskal.test(DV ~ IV, data = mydata)
kruskal_table <- data.frame(
Statistic = round(kruskal_res$statistic, 2),
df = kruskal_res$parameter,
p_value = ifelse(kruskal_res$p.value < .001, "< .001",
sprintf("%.3f", kruskal_res$p.value))
) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "Kruskal-Wallis Test Results")
dunn_res <- dunnTest(DV ~ IV, data = mydata, method = "bonferroni")$res
dunn_table <- dunn_res %>%
mutate(
Z = round(Z, 2),
P.unadj = ifelse(P.unadj < .001, "< .001", sprintf("%.3f", P.unadj)),
P.adj = ifelse(P.adj < .001, "< .001", sprintf("%.3f", P.adj))
) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "Post-hoc Dunn’s Test Results")
# ============================================================
# Step 5b: Parametric Test (ANOVA + Tukey)
# ============================================================
anova_res <- oneway.test(DV ~ IV, data = mydata, var.equal = FALSE)
anova_table <- data.frame(
Statistic = round(anova_res$statistic, 2),
df = anova_res$parameter[1],
df_resid = anova_res$parameter[2],
p_value = ifelse(anova_res$p.value < .001, "< .001",
sprintf("%.3f", anova_res$p.value))
) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "ANOVA Test Results")
anova_model <- aov(DV ~ IV, data = mydata)
tukey_res <- TukeyHSD(anova_model)$IV %>% as.data.frame()
tukey_table <- tukey_res %>%
rownames_to_column("Comparison") %>%
mutate(
diff = round(diff, 2),
lwr = round(lwr, 2),
upr = round(upr, 2),
`p adj` = ifelse(`p adj` < .001, "< .001", sprintf("%.3f", `p adj`))
) %>%
gt() %>%
gt_theme_538() %>%
tab_header(title = "Tukey HSD Post-hoc Results")
# ============================================================
# Step 6: Display Key Results
# ============================================================
# Interactive box plot
box_plot
# Tables
desc_table
shapiro_table
anova_table
tukey_table
kruskal_table
dunn_table