| name | statistical-analysis-identifying-trends |
| description | Sub-skill of statistical-analysis: Identifying Trends (+2). |
| version | 1.0.0 |
| category | data-analytics |
| type | reference |
| scripts_exempt | true |
Identifying Trends (+2)
Identifying Trends
Moving averages to smooth noise:
df['ma_7d'] = df['metric'].rolling(window=7, min_periods=1).mean()
df['ma_28d'] = df['metric'].rolling(window=28, min_periods=1).mean()
Period-over-period comparison:
- Week-over-week (WoW): Compare to same day last week
- Month-over-month (MoM): Compare to same month prior
- Year-over-year (YoY): Gold standard for seasonal businesses
- Same-day-last-year: Compare specific calendar day
Growth rates:
Simple growth: (current - previous) / previous
CAGR: (ending / beginning) ^ (1 / years) - 1
Log growth: ln(current / previous) -- better for volatile series
Seasonality Detection
Check for periodic patterns:
- Plot the raw time series -- visual inspection first
- Compute day-of-week averages: is there a clear weekly pattern?
- Compute month-of-year averages: is there an annual cycle?
- When comparing periods, always use YoY or same-period comparisons to avoid conflating trend with seasonality
Forecasting (Simple Methods)
For business analysts (not data scientists), use straightforward methods:
- Naive forecast: Tomorrow = today. Use as a baseline.
- Seasonal naive: Tomorrow = same day last week/year.
- Linear trend: Fit a line to historical data. Only for clearly linear trends.
- Moving average forecast: Use trailing average as the forecast.
Always communicate uncertainty. Provide a range, not a point estimate:
- "We expect 10K-12K signups next month based on the 3-month trend"
- NOT "We will get exactly 11,234 signups next month"
When to escalate to a data scientist: Non-linear trends, multiple seasonalities, external factors (marketing spend, holidays), or when forecast accuracy matters for resource allocation.