CapiData 2026
// Data Science Project

How this data was collected and analyzed

This project was created as part of the Data Science course at Kiel University. The goal of the project was to collect data from publicly available APIs, find a topic that interested us, and use the collected data to investigate six self-defined research questions.

We chose to investigate the relationship between YouTube and Steam because gaming and social media are areas we are already familiar with and genuinely interested in. We collected data from both platforms through their public APIs and combined the datasets to create a broader view of video content and its performance.

Before analyzing the data, we cleaned and prepared the collected datasets to make them suitable for further analysis. We then explored the data using statistical methods and visualizations, creating plots to identify patterns, trends, and relationships that could help us answer our six research questions.

1. Channel sample

We found 307 YouTube channels using the YouTube Data API. To get a balanced sample, we grouped channels by genre and channel size. We used three size groups: big (more than 1M subscribers), medium (100k–1M), and small (10k–100k). We searched for channels in seven different genres. For each genre and size group. For RQ3, we also added 9 channels that mainly create AI-generated or AI-assisted content.

CookingNewsLifestyleSportsGamingBeautyEducation/Science

2. Video collection

We checked the tracked YouTube channels every hour for new videos using the YouTube Data API. For each video, we collected information such as views, likes, comments, title, and upload date. We also collected the older videos from each channel, so our dataset covers several years. For videos that were less than 14 days old, we collected their statistics multiple times. This allowed us to see how quickly videos gained views, likes, and comments after being published.

3. Steam player-count tracking (RQ4)

For RQ4, we wanted to find out whether YouTube videos can have an effect on a game's player count. We therefore collected the current player count of the top 1000 games using the Steam Web API. We regularly recorded how many people were playing each game. We then compared the player counts before and after periods with many YouTube videos about the same game.

4. Storage

During the project, we stored the collected data in a MongoDB database. After collecting the data, we exported everything into CSV files. These files are now the main source for the website. Smaller datasets are used directly on the website, while the large video dataset is stored in a SQLite database. This makes it possible to browse the videos without loading the entire dataset at once.

5. Analysis

Each of our six research questions has its own Python analysis script. The scripts read the collected data, clean it, calculate the results, and create the data used for the charts on this website. We used several methods to make our results more reliable:

  • Median instead of mean: The median is the middle value when all values are sorted from smallest to largest. We mainly use it to describe typical video performance. This is useful because YouTube data can contain a few extremely successful videos that have much higher view counts than most other videos. The mean would be strongly affected by these outliers, while the median gives a better idea of what a typical video looks like.
  • Normalization: Some values are difficult to compare directly because channels have very different sizes or videos have been online for different amounts of time. We therefore normalize some of our measurements. For example, we can look at views per day or views relative to the number of subscribers. This allows us to compare smaller and larger channels more fairly.
  • Spearman correlation: Spearman correlation measures whether two variables tend to increase or decrease together. For example, we can use it to investigate whether longer videos tend to receive more views. The result ranges from -1 to +1: values close to +1 indicate a strong positive relationship, values close to -1 indicate a strong negative relationship, and values around 0 indicate little or no relationship.
  • Permutation tests: Permutation tests help us determine whether an observed difference or relationship could simply be the result of random chance. We repeatedly shuffle the relevant data thousands of times and calculate the result for each shuffled version. We then compare the actual result with these random results. If results as extreme as ours are very rare in the shuffled data, this provides evidence that the observed pattern is unlikely to be caused by chance alone.
  • Benjamini–Hochberg correction: When we test many relationships at the same time, some results can appear significant purely by chance. The Benjamini–Hochberg method helps us control this problem. It adjusts the significance thresholds of multiple statistical tests so that we reduce the number of false positive findings while still keeping a reasonable chance of detecting real relationships.
  • Channel-level testing: For some comparisons, we use the channel as the unit of analysis instead of individual videos. This is important because some channels upload much more frequently than others. If every video were treated as an independent data point, very active channels could have a much larger influence on the results. By first calculating one value per channel, we make the comparison between groups more balanced.

We also set minimum sample sizes for our analyses. If there are too few data points for a reliable result, we leave the result out instead of presenting a potentially misleading number.

6. This website

This website was built with SvelteKit. The charts are created from the results of our Python analysis scripts. When we run the analysis again, the updated results can be added to the website. The channel directory and video browser use the complete exported datasets, so you can explore the data beyond the charts shown in the individual research questions.