Rationale
Framing theory tells us that how a media message’s consumer views and responds to the media, whether through their action or judgements, is effected by cues built into the messages themselves. These cues push the consumers to respond in a certain way by viewing the messages in particular framing, which leads to the responses given.
Considering this theory, depending on what media sources the consumer views and which cues are embedded in said media, the consumer’s judgement could be swayed about the information being provided, specifically the news channel might influence whether the viewer believes immigration is a “top issue” or a “not top issue.”
Hypothesis
The proportion of participants judging whether immigration is a “top issue” will differ depending on which news source provided the information.
Variables and method
A total of 600 Fox News or CNN viewers were pulled for a national larger survey. One group (n=300) viewed the discussion of Immigration on Fox News, while the other group (n=300) viewed the discussion on CNN. After their viewing, the participants completed a survey that included the question “What is the most important problem facing the U.S. right now?” Viewers who named immigration as the most important problem were coded under “top issue,” while viewers who named something else as the most important problem facing the country were coded under “not top issue.”
The dependent variable in the analysis was the categorical measure of whether subjects had judged immigration as a “top issue” or a “not top issue.” The independent variable was a categorical measure indicating whether the subject watched Fox News or CNN.
A chi-square test of independence was conducted to examine whether the association between news outlet and perceived issue-relevance was statistically significant.
Results and discussion
The graph and cross-tabulation table below summarize the association between the dependent and the 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. While majorities of both groups considered the information was not a top issue, more participants among the CNN viewers considered it so (88.3%) than amongt the Fox viewers (61.7%). The chi-square test found the association between the two 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 "TopIssue.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