Trend Analysis Methodology

How GGAID calculates player count trends for Roblox games using statistical analysis

GGAID provides trend analysis for every tracked Roblox game, helping players and developers understand whether a game's player base is growing, declining, or remaining stable. This page explains exactly how we calculate these trends.

Rising
+10% or more
Stable
-10% to +10%
Declining
-10% or more

Step 1: Data Collection

We collect concurrent user (CCU) data for each game at regular intervals throughout the day. This gives us multiple data points per day, capturing the natural fluctuations in player activity across different time zones and peak hours.

Data Points Used
7 Days
of historical CCU data per game

Step 2: Daily Average Aggregation

Rather than comparing raw CCU values directly, we first calculate the daily average CCU for each day. This eliminates intra-day fluctuations caused by time zones and typical peak/off-peak patterns.

// For each day:
Daily Average = Sum of all CCU samples / Number of samples

This gives us 7 daily averages (one per day) instead of hundreds of raw data points, making trend detection more reliable.

Step 3: Outlier Filtering (IQR Method)

Special events, game updates, or viral moments can cause temporary spikes that don't reflect the true trend. We use the Interquartile Range (IQR) method to handle these outliers.

IQR Calculation
Q1 = 25th percentile of daily averages
Q3 = 75th percentile of daily averages
IQR = Q3 - Q1
Lower Bound = Q1 - 1.5 × IQR
Upper Bound = Q3 + 1.5 × IQR
Winsorization (Not Removal)

Instead of removing outliers entirely, we use Winsorization: values below the lower bound are replaced with the lower bound, and values above the upper bound are replaced with the upper bound. This preserves the data point count while reducing the impact of extreme values.

Step 4: Linear Regression

We apply linear regression to the processed daily averages to find the best-fit line. The slope of this line tells us the overall direction and magnitude of the trend.

// Linear regression formula:
y = mx + b
where:
x = day number (0, 1, 2, ... 6)
y = daily average CCU
m = slope (trend direction)

The slope (m) indicates the average daily change in player count. A positive slope means the game is gaining players over time; a negative slope means it's losing players.

Step 5: Trend Classification

We calculate the percentage change over the 7-day period based on the regression line, then classify the trend using a 10% threshold:

ChangeClassification
≥ +10% Rising
-10% to +10% Stable
≤ -10% Declining

The 10% threshold prevents minor fluctuations from being misclassified as significant trends. A game needs to show meaningful, sustained change to be marked as Rising or Declining.

Why This Approach?

Daily Aggregation

Eliminates noise from time-of-day variations. A game isn't "declining" just because it's 3 AM in the US.

IQR + Winsorization

A single viral day or server outage won't skew the entire trend. Outliers are bounded, not deleted.

Linear Regression

Looks at the overall direction across all data points, not just comparing day 1 to day 7.

10% Threshold

Natural variation happens. Only meaningful, sustained changes are flagged as trends.

See It In Action

Browse any game on GGAID to see real-time trend analysis based on this methodology.

Browse Games