Priming theory says that media content can influence later, unrelated attitudes and behaviors; however, those effects are only short-term. The theory explains this concept by depicting memory as nodes and associative pathways, where varying activity can dictate how a person responds to certain media. There are many areas in priming research, including the idea that media priming can induce short-term aggressive behaviors and attitudes in individuals who consume them. Specifically, if children were exposed to violent media, they would have more aggressive behavior a short time later.
The total time children spend in aggressive acts differs across each lesson group.
135 fifth-graders at a large suburban elementary school were randomly divided into three groups of 45 students each. About 30 minutes before recess, teachers assigned each group of students a specific lesson in the same time frame. The first group completed a math lesson that involved a computer game where the player got to punch a computer-controlled opponent every time they gave a correct answer. The second group completed a similar math lesson, but it involved a computer game where the player added blocks to a structure for each correct answer. The third group completed an art lesson involving a color wheel for an abstract design. At the end of the 30 minutes, the students were dismissed for a 30-minute recess, and were measured by the amount of time, in minutes, each student spent engaged in any kind of aggressive act.
The dependent variable is a continuous measure of the amount of time each student engages in an aggressive act. The three independent variables are categorical measures of which lesson each group of students completed.
A one-way ANOVA test was conducted to compare and contrast the independent variables with each other. A Shapiro-Wilk Normality Test was conducted to test whether each group’s distribution is statistically significant.
Below are the results of the one-way ANOVA test. The graph shows a box plot of the experiment along with a descriptive statistics table that lists the average and participant count of each group. The Shapiro-Wilk Normality Test shows that the relationship between the three independent variables is statistically significant. The Tukey HSD post hoc test shows the differences between each group and that each difference is statistically significant.
| 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 |
| Tukey HSD Post-hoc Results | ||||
| Comparison | diff | lwr | upr | p adj |
|---|---|---|---|---|
| Nonviolent game-Art project | 0.90 | 0.38 | 1.42 | < .001 |
| Violent game-Art project | 5.79 | 5.27 | 6.30 | < .001 |
| Violent game-Nonviolent game | 4.89 | 4.37 | 5.40 | < .001 |
The results support the hypothesis. Specifically, the biggest differences involve the violent game group. They spend more time engaging in aggressive acts than both the nonviolent game and art project groups.
Below is the code used to conduct the analysis.
# ============================================================
# 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