Rationale

In agenda-setting theory, the idea is that the media doesn’t tell us what to think, but rather what to think about. There are different levels to agenda-setting. The second level of agenda-setting involves how the media influences viewers’ perceptions of an issue. 

Considering what the theory says, immigration could be the most important problem facing the U.S. right now because that is what the networks CNN and Fox want viewers to think. 

Depending on a consumer’s preferred network, that could determine if immigration is, in fact, the most important problem facing the U.S. right now. 

Hypothesis

The number of participants who think immigration is the most important problem facing the U.S. right now will be different depending on whether they watch CNN or Fox.

Variables & method

A total of 600 frequent Fox or CNN viewers who participated in a larger national survey conducted in September of 2023 were asked about their “preferred network”. The same viewers were then asked, “What is the most important problem facing the U.S. right now?” Viewers who are coded as 1 Top issue named “immigration” as the most important problem. Viewers who are coded 2 Not top issue named something else as the most important problem facing the country.

The dependent variable in the analysis was a categorical measure of whether subjects viewed “immigration” as the most important problem facing the U.S. right now. The independent variable was a measure, also categorical, indicating whether viewers preferred to watch “Fox” or “CNN”

A chi-square test of independence was conducted to determine if a viewer’s preferred network determined whether they thought immigration was the biggest problem facing the United States.

Results & discussion

The graph and crosstabulation table below summarize the association between the dependent and independent variables. The chi-square results are shown as well.

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

The results supported the hypothesis. A higher proportion of Fox viewers consider immigration to be the biggest problem in the U.S. (38.3%), compared to CNN viewers (11.7%). The chi-square test found the association to be statistically significant.

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") #Edit

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

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