Introduction

Colleges and universities use a variety of strategies to encourage student engagement and participation in campus life. These strategies include digital communication tools, such as social media, online communities, and campus applications, as well as traditional in-person initiatives, such as student organizations, campus events, and orientation activities.

As digital communication continues to influence how institutions connect with students, it is important to examine how these different approaches are represented in news coverage. Understanding which strategies receive greater media attention can provide insight into the relative prominence of digital and in-person student engagement within higher education news.

This study uses news coverage data from MediaCloud to compare the volume of stories related to digital student engagement strategies with stories related to in-person student engagement initiatives at colleges and universities.

Research Question

How does the volume of U.S. online news coverage about digital student engagement strategies compare with coverage of in-person student engagement initiatives in higher education?

Theoretical Framework: Agenda-Setting Theory

This study is guided by agenda-setting theory, which explains how the amount of attention news media devote to particular issues can influence the importance audiences assign to those issues. Originally developed by McCombs and Shaw (1972), the theory suggests that news media play an important role in shaping which topics receive public attention.

Agenda-setting theory is particularly relevant to this study because colleges and universities increasingly use both digital and in-person strategies to encourage student involvement. News coverage of these strategies may contribute to how prominently each approach is discussed within higher education.

By comparing the volume of news stories about digital student engagement with stories about in-person engagement initiatives, this study examines the relative media salience of these two approaches. If one topic consistently receives more coverage, it may indicate that the topic occupies a more prominent position in the online news agenda.

However, this study measures news coverage rather than audience perceptions. Therefore, the findings can identify differences in media attention but cannot establish whether those differences influence what students, university administrators, or the general public consider important.

Research Hypothesis

Digital communication has become an important component of how colleges and universities connect with students, promote campus activities, and encourage participation in campus life. Social media platforms, online communities, and other digital tools provide institutions with additional opportunities to communicate with students beyond traditional face-to-face interactions.

Drawing on agenda-setting theory, this study examines whether digital student engagement strategies occupy a more prominent position in online news coverage than in-person student engagement initiatives.

H1: Digital student engagement strategies will receive a higher volume of U.S. online news coverage than in-person student engagement initiatives during the study period.

This hypothesis concerns the relative amount of news attention devoted to each topic. It does not predict that digital strategies are more effective at engaging students or that students prefer digital engagement over in-person activities.

Variables and Methodology

Data Source and Study Period

This study uses data retrieved from MediaCloud, a platform that allows researchers to examine patterns in online news coverage. Using RStudio and the MediaCloud API, news story counts were collected for two topics: digital student engagement strategies and in-person student engagement initiatives in higher education.

The analysis covers January 4, 2026, through October 10, 2026. The data were retrieved using MediaCloud’s online news search collection and organized into weekly observations.

Variables

The primary categorical variable is student engagement strategy, consisting of two categories:

  • Digital Student Engagement: News coverage containing higher education and student engagement terminology alongside references to digital communication strategies, such as social media, digital outreach, online communities, campus applications, and virtual events.
  • In-Person Student Engagement: News coverage containing the same higher education and student engagement terminology alongside references to in-person initiatives, such as campus events, student organizations, student clubs, and orientation activities.

The primary quantitative variable is weekly news story count, representing the number of stories matching each topic’s search query during a given week.

Time, measured by week, is used to examine changes in coverage volume throughout the study period.

Analytical Method

Two Boolean search queries were constructed using shared terminology related to colleges, universities, and student engagement. Each query also included terms specific to either digital or in-person engagement strategies.

The MediaCloud API was used to retrieve daily story counts for both topics. These counts were aggregated into weekly totals using R and the tidyverse and lubridate packages.

Descriptive statistics were calculated for each topic, including total stories, weekly minimum, maximum, median, mean, and standard deviation.

An interactive line graph was created using the plotly package to visualize changes in weekly news coverage and compare the relative media salience of the two topics.

Because the analysis relies on search-term matches, the results should be interpreted as estimates of topic-specific news coverage rather than a complete census of all relevant reporting. Stories may match both queries, and differences in terminology may affect the number of results returned.

R Code and Data Collection

The following R code defines the two search queries used to identify news coverage related to digital and in-person student engagement strategies.

## Downloading: Digital Student Engagement
## Downloading: In-Person Student Engagement

Initial Results

Summary Statistics

The following table summarizes the volume of online news coverage matching each student engagement topic between January 4 and October 10, 2026. The statistics describe weekly coverage patterns for both digital and in-person engagement strategies.

MediaCloud Topic Summary Statistics
topic Total_Stories Weekly_Minimum Weekly_Maximum Weekly_Median Weekly_Mean Weekly_SD
Digital Student Engagement 77 0 8 2 1.93 1.72
In-Person Student Engagement 32 0 5 1 0.80 1.16

Interpretation of Initial Results

The initial analysis identified 77 matching news story counts for digital student engagement and 32 for in-person student engagement between January 4 and October 10, 2026. Digital engagement received approximately 2.4 times as many matches as in-person engagement within the MediaCloud collection examined.

Digital student engagement averaged 1.93 matching stories per week, compared with 0.80 for in-person engagement. The highest weekly count was eight stories for digital engagement and five for in-person engagement. These results suggest that digital student engagement was more prominent in the selected online news coverage during the study period.

The findings are consistent with the study’s hypothesis that digital student engagement strategies receive greater news coverage than in-person initiatives. From an agenda-setting perspective, this difference suggests that digital engagement may occupy a more prominent position in the news agenda represented by the selected MediaCloud collection.

However, the results do not demonstrate that digital engagement is more effective or important than in-person engagement. They also do not establish that news coverage influences audience perceptions. The analysis measures coverage volume rather than public opinion or student behavior.

Additionally, the relatively small number of matching stories and the potential for differences in search terminology limit the conclusions that can be drawn. Individual stories may match both search queries, and the analysis does not establish whether every matching story focuses primarily on student engagement strategies.

Overall, these initial findings provide preliminary support for the hypothesis while identifying opportunities to refine the analysis for the final project.

References

McCombs, M. E., & Shaw, D. L. (1972). The agenda-setting function of mass media. Public Opinion Quarterly, 36(2), 176–187. https://doi.org/10.1086/267990

MediaCloud. (n.d.). MediaCloud. https://www.mediacloud.org/

Appendix A: Complete R Code

The following code was used to retrieve, organize, analyze, and visualize the MediaCloud news coverage data.


############################################################
# STEP 1: Install and Load Required Packages
############################################################

required_packages <- c(
  "tidyverse",
  "httr2",
  "lubridate",
  "plotly",
  "knitr",
  "kableExtra"
)

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

library(tidyverse)
library(httr2)
library(lubridate)
library(plotly)
library(knitr)
library(kableExtra)


############################################################
# STEP 2: Verify Media Cloud API Key
############################################################

if (!nzchar(Sys.getenv("1fb14672982261940bed426fc36476e269f9faef"))) {
  stop(
    "No Media Cloud API key was found.\n",
    "Run the setup section once,\n",
    "then restart R and try again."
  )
}

mc_key <- Sys.getenv("1fb14672982261940bed426fc36476e269f9faef")


############################################################
############################################################
# STEP 3: Define the Date Range
############################################################

start_date <- "2026-01-04"
end_date   <- "2026-10-10"

############################################################


############################################################
# STEP 4: Define Search Queries
############################################################


digital_query <-
  '((college OR university OR campus) AND
    ("student engagement" OR "student involvement" OR
     "student participation" OR "campus life") AND
    ("social media" OR "digital outreach" OR
     "online community" OR "campus app" OR
     "digital platform" OR "virtual event"))'

inperson_query <-
  '((college OR university OR campus) AND
    ("student engagement" OR "student involvement" OR
     "student participation" OR "campus life") AND
    ("campus events" OR "student organizations" OR
     "student activities" OR "student clubs" OR
     "orientation events" OR "in-person events"))'


############################################################
# STEP 5: Create Topic Definitions
############################################################

topics <- c(
  "Digital Student Engagement" = digital_query,
  "In-Person Student Engagement" = inperson_query
)


############################################################
# STEP 6: Create a Function to Retrieve Daily
# Story Counts
############################################################

mc_counts_over_time <- function(
    query,
    start_date,
    end_date,
    collection_id = 34412234
) {
  
  resp <-
    request(
      "https://search.mediacloud.org/api/search/count-over-time"
    ) |>
    req_headers(
      Authorization = paste("Token", mc_key)
    ) |>
    req_url_query(
      q = query,
      start = start_date,
      end = end_date,
      platform = "onlinenews-mediacloud",
      cs = collection_id
    ) |>
    req_perform()
  
  results <- resp |>
    resp_body_json()
  
  map_dfr(
    results$count_over_time$counts,
    as_tibble
  ) |>
    mutate(
      date = as.Date(date)
    )
}


############################################################
# STEP 7: Download Daily Counts for All Topics
############################################################

topic_data <-
  imap_dfr(
    topics,
    function(search_string, topic_name) {
      
      message(
        "Downloading: ",
        topic_name
      )
      
      results <-
        mc_counts_over_time(
          query = search_string,
          start_date = start_date,
          end_date = end_date
        )
      
      Sys.sleep(35)
      
      results |>
        mutate(
          topic = topic_name
        )
    }
  )


############################################################
# STEP 8: Examine the Downloaded Daily Data
############################################################

head(topic_data)

glimpse(topic_data)


############################################################
# STEP 9: Convert Daily Counts to Weekly Counts
############################################################

weekly_counts <-
  topic_data |>
  mutate(
    week = floor_date(
      date,
      unit = "week"
    )
  ) |>
  group_by(
    topic,
    week
  ) |>
  summarise(
    stories = sum(count),
    .groups = "drop"
  )


############################################################
# STEP 10: Examine Weekly Counts
############################################################

weekly_counts


############################################################
# STEP 11: Summarize Coverage by Topic
############################################################

topic_summary <-
  weekly_counts |>
  group_by(topic) |>
  summarise(
    Total_Stories = sum(stories),
    Weekly_Minimum = min(stories),
    Weekly_Maximum = max(stories),
    Weekly_Median = median(stories),
    Weekly_Mean = round(
      mean(stories),
      2
    ),
    Weekly_SD = round(
      sd(stories),
      2
    ),
    .groups = "drop"
  ) |>
  arrange(
    desc(Total_Stories)
  )

Table <-
  topic_summary |>
  kbl(
    caption =
      "Media Cloud Topic Summary Statistics",
    align = "lrrrrrr"
  ) |>
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c(
      "striped",
      "hover",
      "condensed"
    )
  )

Table


############################################################
# STEP 12: Create an Interactive Plotly Graph
############################################################

weekly_counts <- weekly_counts |>
  mutate(
    stories_formatted = formatC(
      stories,
      format = "d",
      big.mark = ","
    )
  )

Graph <- plot_ly(
  data = weekly_counts,
  
  x = ~week,
  y = ~stories,
  
  color = ~topic,
  colors = "Set1",
  
  type = "scatter",
  mode = "lines+markers",
  
  customdata = ~topic,
  
  text = ~stories_formatted,
  
  hovertemplate =
    paste(
      "<b>%{customdata}</b><br>",
      "Week: %{x|%Y-%m-%d}<br>",
      "Stories: %{text}<br>",
      "<extra></extra>"
    )
) |>
  layout(
    title =
      "Weekly U.S. Coverage Volume",
    
    hovermode = "x unified",
    
    xaxis = list(
      title = "Week"
    ),
    
    yaxis = list(
      title = "Weekly Story Count",
      separatethousands = TRUE
    )
  )

Graph