Media Priming Theory suggests that media exposure can influence thoughts, behaviors and judgments by activating feelings and concepts within one’s mind. Although, this theory is only relevant for a short period of time after exposure.
In this analysis, children interacted with two different types of media material: “violent” video games and “non-violent” video games. We then monitored their behavior at recess immediately after viewing to track levels of aggression.
The odds that a child will act more aggressive at recess are higher for those who played violent video games than for those who played non-violent video games.
135 fifth-graders were divided into three groups. One group played The Sims, one played a cooking game and the last played Minecraft. While The Sims game was creative and the cooking game involved skill and time pressure, Minecraft was the only game with “violent” aspects (weapons, explosions, etc). Once the kids went out for recess immediately after playing these games, they were individually analyzed by the number of minutes spent being physically or verbally violent during the 30-minute recess period.
In the data set, the dependent variable was the number of minutes each child spent being violent during recess, while the independent variable was the video game group they were in. This was analyzed using a one-way ANOVA, a normality test, Post-hoc tests and a Kruskal-Wallis test.
The results provided support for our hypothesis, showing that exposure to violent media does increase aggressive behavior in children. Students who played Minecraft were the most aggressive, spending an average of 19.62 out of 30 minutes engaging in this behavior. In comparison, students who played the cooking game averaged 7.98 minutes being aggressive, while students who played The Sims averaged only 5.03 minutes being aggressive during recess. The box plot demonstrated this. The one-way ANOVA and Kruskal-Wallis test confirmed significant differences, and all pair comparisons were statistically significant, shown through the Tukey HSD test. Overall, these findings show strong support for our original hypothesis – brief exposure to violence in media can immediately influence aggressive behavior in kids.
Descriptive Statistics by Group | |||||
IV | count | mean | sd | min | max |
---|---|---|---|---|---|
Cooking game | 45 | 7.98 | 1.86 | 5.0 | 11.9 |
Minecraft | 45 | 19.62 | 2.48 | 15.4 | 24.8 |
Sims | 45 | 5.03 | 1.85 | 2.1 | 9.3 |
Shapiro-Wilk Normality Test by Group | ||
IV | W_statistic | p_value |
---|---|---|
Cooking game | 0.95 | 0.062 |
Minecraft | 0.96 | 0.136 |
Sims | 0.97 | 0.294 |
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 |
---|---|---|---|
516.05 | 2 | 86.69692 | < .001 |
Tukey HSD Post-hoc Results | ||||
Comparison | diff | lwr | upr | p adj |
---|---|---|---|---|
Minecraft-Cooking game | 11.64 | 10.60 | 12.68 | < .001 |
Sims-Cooking game | -2.95 | -3.99 | -1.91 | < .001 |
Sims-Minecraft | -14.59 | -15.63 | -13.55 | < .001 |
Kruskal-Wallis Test Results | ||
Statistic | df | p_value |
---|---|---|
104.92 | 2 | < .001 |
Post-hoc Dunn’s Test Results | |||
Comparison | Z | P.unadj | P.adj |
---|---|---|---|
Cooking game - Minecraft | -6.21 | < .001 | < .001 |
Cooking game - Sims | 3.95 | < .001 | < .001 |
Minecraft - Sims | 10.16 | < .001 | < .001 |
# ============================================================
# 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