一句话回答
季节性是时间序列数据里一种有规律、可预测的模式,按固定的日历周期重复出现,比如一天中的小时、一周中的星期几、一年中的月份。
公式: 季节指数 = 某个时段的值 ÷ 整个周期的平均值
什么是季节性?
季节性是按固定日历周期重复出现的规律。每个周末流量下滑,每年 12 月销量冲高,每年 1 月注册增加。它是可预测的,这正是它有用的地方:知道了规律,就不会再把它误当成变化。
时间序列数据通常可以拆成 趋势 + 季节性 + 噪声。趋势是长期方向,季节性是围绕它的重复波动,噪声是剩下的一切。
网站数据里的四种周期
| 周期 | 常见规律 |
|---|---|
| 每天 | B2B 在工作时间达到高峰;消费类和媒体在晚上 |
| 每周 | B2B 周末下降;很多消费类网站周末上升 |
| 每年 | 节日购物季、夏季淡季、开学季、报税季 |
| 事件驱动 | 黑色星期五、产品发布、体育赛事、日期会变的节日 |
B2B 和 B2C:一份周分布示例
按星期几的日均访客,用指数表示(1.00 = 一周平均,示例数字):
| 星期 | B2B 软件网站 | 消费品商店 |
|---|---|---|
| 周一 | 1.20 | 0.90 |
| 周二 | 1.22 | 0.88 |
| 周三 | 1.20 | 0.92 |
| 周四 | 1.16 | 0.95 |
| 周五 | 1.12 | 1.00 |
| 周六 | 0.52 | 1.20 |
| 周日 | 0.58 | 1.15 |
对 B2B 网站来说,周六只有周二的一半完全正常;对商店来说,冷清的周六才是真正的警报。
怎么算季节指数
季节指数 = 某个时段的值 ÷ 整个周期的平均值
取几个周期的平均(周规律至少 4 到 8 周,年规律至少两年),别让某个特殊的周决定规律。用原始值除以对应的指数,就得到季节调整后的值。
怎么调整季节性
- 同类相比。 和上周同一天、去年同月比(历史够长后就是同比)。
- 用周期长度做平滑。 7 日移动平均能完全去掉每周的周期。
- 告警用季节性基线。 拿周日和最近几个周日比的规则,不会每个周末都响。
- 把日期会变的节日当事件处理。 比的是活动窗口,而不是日历日期。
- 加标注。 标出活动和节假日,明年比较时就有上下文。
TapCub 里的季节性
把对比设为上周同期,每一天都会和一周前的同一个星期几比较;看多周的区间时,「上一周期」更合适。监控本身就考虑了每周周期:「预测基线」和近 7 天、同星期几的均值比较,「异常检测」用 28 天内同星期几的均值和波动。给节假日和活动加上日期标注,把图表粒度切到按周,就能去掉星期几带来的波动。另见异常检测。
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
