Rationale

The first-level agenda-setting theory considers how the media decides which topics to highlight in their coverage. When there is greater coverage of a topic, there is an increased tendency for people to believe it is important. This project looks at coverage of Taylor Swift compared to the economy on APNews.com. While Taylor Swift is one of the most widely discussed public figures in the world, the economy impacts everyone but is not always top billing on headlines.

This research will compare a cultural figure with a major national issue—one which impacts everyone; if coverage of Taylor Swift grows to rival or even exceed that of the coverage of the economy over a span of time, this shows how entertainment stories stand up to hard news in terms of space on the media agenda.

Hypothesis

APNews.com coverage of the economy will be higher overall, but Taylor Swift will have noticeable spikes in coverage during major events like her Eras Tour, new music releases, or public appearances.

Variables & method

The dependent variable consists of the total number of articles published weekly about each topic on APNews.com. The total number of articles per week is measured on a continuous scale.

The independent variable is the topic of the story, and there is a code for each topic, either “Taylor Swift” or “Economy.”

To identify stories, each topic is defined by keywords:

Taylor Swift keywords: “Taylor Swift,” “Eras Tour,” “Swifties,” “The Tortured Poets Department,” “Travis Kelce.”

Economy keywords: “Economy,” “Inflation,” “Recession,” “Unemployment,” “Jobs report,” “Interest rate,” “Federal Reserve.”

The weekly number of stories related to each topic was then graphed to demonstrate trends in coverage. A paired-samples t-test will then be conducted to check for statistical significance for the difference of coverage of the topics.

Results & discussion

The chart below demonstrates the weekly coverage in 2025 on APNews.com of Taylor Swift and the economy.

Media coverage of Taylor Swift surged surrounding large events like tour announcements or album/news releases. In some instances, the notice was large enough to be comparable to the economy and sometimes exceed the economy.

The media coverage of the economy was fairly consistent across weeks but peaked when specific updates about the financial sector were released (e.g., inflation reports or Federal Reserve updates).

In conclusion, the results indicate how, while the economy is fairly consistent coverage, the cultural impact of Taylor Swift produces short bursts of extreme coverage. This lends mapping toward the idea of celebrity and entertainment news saturating the media landscape for periods, even comparatively to significant national issues.

Code:

# Install and load packages
if (!require("tidyverse")) install.packages("tidyverse")
if (!require("tidytext")) install.packages("tidytext")

library(tidyverse)
library(tidytext)

# Fetch and load APNews dataset
FetchedData <- readRDS(url("https://github.com/drkblake/Data/raw/refs/heads/main/APNews.rds"))
saveRDS(FetchedData, file = "APNews.rds")
rm(FetchedData)

APNews <- readRDS("APNews.rds")

# -----------------------------
# Topic 1: Taylor Swift
# -----------------------------
phrases <- c(
  "Taylor Swift",
  "Eras Tour",
  "Swifties",
  "The Tortured Poets Department",
  "Travis Kelce"
)

escaped_phrases <- str_replace_all(
  phrases,
  "([\\^$.|?*+()\\[\\]{}\\\\])",
  "\\\\\\1"
)

pattern <- paste0("\\b", escaped_phrases, "\\b", collapse = "|")

APNews <- APNews %>%
  mutate(
    Full.Text.clean = str_squish(Full.Text),  # normalize whitespace
    Topic1 = if_else(
      str_detect(Full.Text.clean, regex(pattern, ignore_case = TRUE)),
      "Yes",
      "No"
    )
  )

# -----------------------------
# Topic 2: Economy
# -----------------------------
phrases <- c(
  "Economy",
  "Inflation",
  "Recession",
  "Unemployment",
  "Jobs report",
  "Interest rate",
  "Federal Reserve"
)

escaped_phrases <- str_replace_all(
  phrases,
  "([\\^$.|?*+()\\[\\]{}\\\\])",
  "\\\\\\1"
)

pattern <- paste0("\\b", escaped_phrases, "\\b", collapse = "|")

APNews <- APNews %>%
  mutate(
    Full.Text.clean = str_squish(Full.Text),
    Topic2 = if_else(
      str_detect(Full.Text.clean, regex(pattern, ignore_case = TRUE)),
      "Yes",
      "No"
    )
  )

# -----------------------------
# Plot Weekly Counts
# -----------------------------
if (!require("plotly")) install.packages("plotly")
library(plotly)

Topic1_weekly <- APNews %>%
  filter(Topic1 == "Yes") %>%
  group_by(Week) %>%
  summarize(Count = n(), .groups = "drop") %>%
  mutate(Topic = "Taylor Swift")

Topic2_weekly <- APNews %>%
  filter(Topic2 == "Yes") %>%
  group_by(Week) %>%
  summarize(Count = n(), .groups = "drop") %>%
  mutate(Topic = "Economy")

Weekly_counts <- bind_rows(Topic1_weekly, Topic2_weekly)

Weekly_counts <- Weekly_counts %>%
  tidyr::complete(
    Topic,
    Week = full_seq(range(Week), 1),
    fill = list(Count = 0)
  ) %>%
  arrange(Topic, Week)

AS1 <- plot_ly(
  data = Weekly_counts,
  x = ~Week,
  y = ~Count,
  color = ~Topic,
  colors = c("hotpink", "steelblue"),
  type = "scatter",
  mode = "lines+markers",
  line = list(width = 2),
  marker = list(size = 6)
) %>%
  layout(
    title = "Weekly APNews Coverage: Taylor Swift vs. The Economy (2025)",
    xaxis = list(
      title = "Week Number (starting with Week 1 of 2025)",
      dtick = 1
    ),
    yaxis = list(title = "Number of Articles"),
    legend = list(title = list(text = "Topic")),
    hovermode = "x unified"
  )

AS1