TapCub is live — analytics, insights and live chat, free on one platform
Analytics

Time series analysis for web analytics: trend, seasonality and anomalies

Time series analysis separates trend, seasonality and noise so you can tell a real change from a Monday. A 4-week worked example, the core techniques, forecasting baselines and the mistakes that mislead dashboards.

Su He Published Nov 5, 2026 6 min read Analytics
Sample data. The single dip in week 4 is a one-day tracking outage; the weekly total only fell 0.7%.Sample data

Try it on your own data

Every report in this article is in the free plan. One snippet for web and apps, up to 10 sites.

Start free

Every analytics chart is a time series, and most misreadings come from mixing up trend, weekly patterns and noise. This guide walks through four weeks of daily sessions step by step: smoothing out the weekly cycle to see the trend, measuring the weekday pattern, and catching a one-day tracking outage that a week-over-week total hid. It then covers the core techniques, forecasting baselines and common mistakes.

What you will learn

  • Separate trend, seasonality and noise before judging a change
  • Compare the same weekday or season, not adjacent periods
  • A 7-day moving average reveals trend in daily web data
  • Weekly totals can hide a one-day 20% drop
  • Beat the seasonal naive forecast before trusting a model

What is time series analysis?

Time series analysis is the set of methods for studying data recorded at regular intervals, such as daily sessions, weekly sign-ups or monthly revenue, to understand how it moves over time: its long-term direction, its repeating patterns, the noise around them, and the unusual points that break the pattern. The same methods are used to forecast what comes next.

Almost every analytics chart is a time series. The difference between glancing at a line and analyzing it is separating those components, so you can tell a real change from a Monday.

The four components of a time series

ComponentWhat it isExample in web analytics
TrendLong-term upward or downward movementOrganic traffic growing 2% a month
SeasonalityPatterns that repeat on a fixed calendarWeekdays higher than weekends; December peaks for retail
CycleLonger, irregular swingsBudget cycles, macroeconomic slowdowns
Noise (residual)What is left: random variationDay-to-day wobble of a few percent

A simple model is additive: value = trend + seasonality + noise. When seasonal swings grow with the level (a 10% weekend dip on a growing site), a multiplicative model fits better: value = trend × seasonality × noise. Most traffic data is closer to multiplicative.

ComponentWhat it isExample
TrendLong-term directionOrganic traffic +2% a month
SeasonalityFixed calendar patternWeekdays above weekends
CycleLonger irregular swingsBudget cycles
NoiseRandom variationDaily ±3% wobble

Most web traffic is closer to a multiplicative model: trend × seasonality × noise.

Worked example: four weeks of daily sessions

Daily sessions for a B2B site over four weeks, Monday to Sunday (sample data):

WeekMonTueWedThuFriSatSunTotal
11,0831,1291,1151,0849628599147,146
21,1311,1321,1461,0801,0208729517,332
31,1911,2341,1431,1291,0228879747,580
41,1961,2378891,1661,0759421,0247,529

Step 1: remove seasonality to see the trend. A 7-day moving average smooths out the weekly pattern: 1,021 at the end of week 1, 1,047 after week 2, 1,083 after week 3. Traffic is growing steadily, roughly 3% a week.

Step 2: measure the seasonality. Dividing each weekday's average by the overall average over the first three weeks gives a weekday index: Monday 1.08, Tuesday 1.11, Wednesday 1.08, Thursday 1.05, Friday 0.95, Saturday 0.83, Sunday 0.90. Saturdays are normally 17% below an average day. A Saturday dip is not news.

Step 3: look for what does not fit. Wednesday of week 4 recorded 889 sessions. The three previous Wednesdays averaged 1,135 with a spread of about ±17. Even allowing for growth, 889 is more than 20% below expectation and far outside normal variation: an anomaly. The cause in this case: a tag manager change removed the analytics script from the pricing pages for one day.

What the simple comparison would have said: week 4 total 7,529 vs week 3 total 7,580, down 0.7%. A one-day 22% drop disappears inside a weekly total. Comparing like with like, same weekday against same weekday, catches it.

app.tapcub.com/analytics/overview

Trend (7-day avg)

1,021 → 1,083

▲ 6.1%

Saturday index

0.83

Week 4 Wednesday

889

▼ 22% vs expected

Daily sessions · 28 days

Daily sessions7-day moving average
Week 1Week 2Week 3Week 4
Sample data
Sample data. The single dip in week 4 is a one-day tracking outage; the weekly total only fell 0.7%.

Core techniques

Smoothing

Moving averages (7-day for daily web data, 4-week for weekly data) remove seasonality and noise to reveal trend. Exponential smoothing weights recent points more heavily and adapts faster.

Seasonal comparison

Compare against the same period in the last cycle: same weekday last week, same week last year. Year-over-year and month-over-month comparisons are the simplest form; see also seasonality.

Decomposition

Split a series into trend, seasonal and residual parts (for example with STL decomposition). Large residuals are where unexplained events live.

Autocorrelation

Today's value is correlated with yesterday's and with last Tuesday's. That violates the independence most basic statistical tests assume, so do not treat 28 days as 28 independent samples when testing a change.

Forecasting

MethodIdeaGood for
Seasonal naiveNext Monday = last MondayA baseline every other method must beat
Moving average + growthSmoothed level × recent growth × weekday indexQuick planning
Exponential smoothing (Holt-Winters)Level, trend and seasonality updated with weightsStable business metrics
ARIMA / SARIMAModels autocorrelation explicitlySeries with strong dependence
Regression with calendar featuresHolidays, campaigns, weekdays as variablesWhen you know the drivers; see regression analysis

Always compare a forecast with the seasonal naive baseline. If a complex model does not beat "same day last week", it is not adding value.

Common mistakes

  • Comparing different weekday mixes. A month with five weekends will look worse than one with four.
  • Ignoring tracking changes. New consent banners, script updates and bot filters create steps that look like real changes. Annotate them.
  • Over-reading single points. One spike is not a trend; check it against the noise level.
  • Fitting straight lines to curves. Growth often slows; extrapolating a linear trend from a strong quarter overshoots.
  • Forgetting time zones and partial periods. "Today" is incomplete until midnight in the reporting time zone.

Time series analysis in TapCub

Every TapCub trend chart can be compared with the previous period or the same period last year, aligned by weekday, and annotated with launches and tracking changes; see compare date ranges and add chart annotations. Metric monitors include an anomaly rule that learns the mean and spread of the same weekday over the last 28 days and alerts when a value falls outside the band, the same logic as step 3 above. For deeper modeling, export daily series and use a notebook; see set up traffic alerts.

Sources

Was this article helpful?

We use your answers to fix and expand this page.

Su He

Data Analyst

Explores traffic sources, conversion funnels, and retention, using clear metric definitions and concrete examples to explain what the numbers mean.

Compare like with like

Align periods by weekday, annotate releases and get alerts when a day falls outside its normal band.

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics