Rationale

The Priming Theory suggests that exposure to or consumption of violent media content can trigger aggressive thought or emotions, increasing the likelihood of aggressive behavior shortly after. When individuals are exposed to violent cues in media, those cues can “prime” aggressive scripts, making aggressive behavior more likely to occur immediately after exposure.This effect tends to diminish over time as the primed associations fade.

In this experiment, a total of 135 elementary-school-age children were randomly assigned to play one of three video games before recess: a non-violent life simulation game (The Sims), a time-pressured but non-violent cooking game, and a combat-oriented building game (Minecraft) featuring weapons and explosions.

Following gameplay, each child participated in a 30-minute recess period. The researcher recorder the number of minutes each child spend engaging in physical or verbal aggression during recess, which served as the dependent variable (continuously). The independent variable was categorical and indicated which video game each child played: Sims, Cooking, or Minecraft.

If Priming Theory holds true, the group exposed to violent video games should display more aggressive behavior during recess compared to those exposed to non-violent video games.

Hypothesis

Average aggression levels during recess will differ for at least two of the groups, with higher aggression expected among children who played the violent video game (Minecraft).

Variables & method

Aggression, measured continuously as the number of minutes each child engaged in aggressive behavior during recess, served as the dependent variable (DV). The independent variable (IV) was categorical and indicated which video game each child played: Sims, Cooking, or Minecraft.

Because the independent variable included three groups, a one-way ANOVA was used to test for statistically significant differences in average aggression across the groups. Prior to the analysis, the data were checked for normality (Shapiro–Wilk test) and equality of variances (Levene’s test). When assumptions were not met, a Kruskal–Wallis test was used instead, followed by Dunn’s post-hoc comparisons.

Results & discussion

The boxplots below illustrate the distributions of aggression across three groups, with black diamonds marking the group means.

Descriptive statistics showed that the Minecraft group exhibited the highest mean aggression, followed by the Cooking group, while the Sims group displayed the lowest mean aggression.

The normality test (Shapiro–Wilk) was performed which indicated that the data were approximately normal for each group, and Levene’s test confirmed that variances were sufficiently similar to proceed with ANOVA.

The one-way ANOVA found a statistically significant difference in mean aggression among the three groups. Post-hoc Tukey’s HSD tests indicated that aggression levels were significantly higher among children who played Minecraft compared to those who played The Sims. Differences involving the Cooking game group were not statistically significant.

When ANOVA assumptions were not satisfied, the nonparametric Kruskal–Wallis test confirmed a significant effect of game type. Dunn’s test identified a significant difference between Minecraft and Sims.

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

These results supported the hypothesis and aligned with Priming Theory, showing that brief exposure to violent media content can increase short-term aggressive behavior in children.

Code

# ============================================================
#  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