Rational

First-level agenda-setting theory posits that media influence what the public perceives as the most important issues of the day. Rather than shaping the attributes of how we think about an issue (second-level), first-level agenda-setting focuses on issue salience — whether or not an issue rises to the top of people’s agendas. In this case, immigration serves as the issue under examination. Different news networks prioritize issues in distinct ways, and audiences may internalize these priorities depending on their preferred network. For example, Fox News has historically devoted more attention to immigration as a pressing concern, while CNN often emphasizes other issues. According to first-level agenda-setting theory, we would expect the salience of immigration as a “top issue” to vary depending on network preference.

Hypothesis

The proportion of participants identifying immigration as the top issue will differ depending on whether their preferred news network is CNN or Fox. Specifically, it is predicted that Fox viewers will identify immigration as the top issue at a higher rate than CNN viewers.

Variables and Methods

Independent Variable (IV): Preferred news network (CNN or Fox). Dependent Variable (DV): Whether the respondent identifies immigration as the top issue (Yes or No).

Results and Discussion

The results supported the hypothesis. While participants from both network groups sometimes identified immigration as the top issue, proportionally more participants who preferred Fox considered it so (38.3%) than participants who preferred CNN (11.7%) The chi-square test found this association to be statistically significant.

Crosstabulation of DV by IV
Counts and (Column Percentages)
CNN Fox
1 Top issue 35 (11.7%) 115 (38.3%)
2 Not top issue 265 (88.3%) 185 (61.7%)
Chi-squared Test Results
Test of Independence between DV and IV
Test Chi-squared Statistic Degrees of Freedom p-value
Chi-squared Test of Independence 55.476 1 0.000

Code

# ------------------------------
# Setup: Install and load packages
# ------------------------------
if (!require("tidyverse")) install.packages("tidyverse")   # Data wrangling & plotting
if (!require("gmodels")) install.packages("gmodels")       # Crosstabs
if (!require("gt")) install.packages("gt")                 # Table formatting

library(tidyverse)
library(gmodels)
library(gt)

# ------------------------------
# Load the data
# ------------------------------
# Replace "YOURFILENAME.csv" with your dataset name
mydata <- read.csv("TopIssue.csv")

# ------------------------------
# Define Dependent (DV) and Independent (IV) variables
# ------------------------------
# Replace YOURDVNAME and YOURIVNAME with actual column names in your data
mydata$DV <- mydata$Immigration
mydata$IV <- mydata$PreferredNetwork

# ------------------------------
# Visualization: Stacked bar chart of IV by DV
# ------------------------------
Graph <- ggplot(mydata, aes(x = IV, fill = DV)) +
  geom_bar(colour = "black") +
  scale_fill_brewer(palette = "Paired") +
  labs(
    title = "Distribution of DV by IV",
    x = "Independent Variable",
    y = "Count",
    fill = "Dependent Variable"
  )

#Show the graph
Graph

# ------------------------------
# Crosstabulation of DV by IV (DV = rows, IV = columns)
# ------------------------------

crosstab <- mydata %>%
  count(DV, IV) %>%
  group_by(IV) %>%
  mutate(RowPct = 100 * n / sum(n)) %>%
  ungroup() %>%
  mutate(Cell = paste0(n, "\n(", round(RowPct, 1), "%)")) %>%
  select(DV, IV, Cell) %>%
  pivot_wider(names_from = IV, values_from = Cell)

# Format into gt table
crosstab_table <- crosstab %>%
  gt(rowname_col = "DV") %>%
  tab_header(
    title = "Crosstabulation of DV by IV",
    subtitle = "Counts and (Column Percentages)"
  ) %>%
  cols_label(
    DV = "Dependent Variable"
  )

# Show the polished crosstab table
crosstab_table

# ------------------------------
# Chi-squared test of independence
# ------------------------------
options(scipen = 999)  # Prevents scientific notation
chitestresults <- chisq.test(mydata$DV, mydata$IV)

# ------------------------------
# Format Chi-squared test results into a table
# ------------------------------
chitest_summary <- tibble(
  Test   = "Chi-squared Test of Independence",
  Chi_sq = chitestresults$statistic,
  df     = chitestresults$parameter,
  p      = chitestresults$p.value
)

chitest_table <- chitest_summary %>%
  gt() %>%
  # Round χ² and p-value to 3 decimals, df to integer
  fmt_number(columns = c(Chi_sq, p), decimals = 3) %>%
  fmt_number(columns = df, decimals = 0) %>%
  tab_header(
    title = "Chi-squared Test Results",
    subtitle = "Test of Independence between DV and IV"
  ) %>%
  cols_label(
    Test   = "Test",
    Chi_sq = "Chi-squared Statistic",
    df     = "Degrees of Freedom",
    p      = "p-value"
  )

# Show the formatted results table
chitest_table