周期因子
# 什么是"周期"
你可能听过"周期"这个词,但不知道具体啥意思。先把这个搞清楚。
周期就是"每隔一段时间就会重复"的规律。
生活中的例子:
春夏秋冬:每年春天暖和、夏天热、秋天凉、冬天冷,这就是一年的周期
日出日落:每天白天亮、晚上黑,24小时重复一次
星期几:周一到周五上班上学,周六周日休息,7天一个循环
涨潮退潮:海边每天涨潮两次,间隔大约12小时
这些都是"周期现象"。
# 时间序列数据也有周期
金融交易数据也有周期,之前做的蚂蚁金服比赛就是例子。
你想想:
周一到周五:大家要上班、有日常消费、有理财需求,所以申赎金额大
周六周日:银行不办公,很多人不上班,申赎金额就变小了
这就是"星期周期"——每隔7天,数据会重复类似的模式。
还有"月份周期":
月初发工资,很多人拿到钱会理财,金额高
月底钱花得差不多了,理财金额低
还有"年度周期":
年底大家要准备过年,取钱多
节假日、双十一,银行转账多
# 什么是周期因子
周期因子,就是用来描述"周期中每个位置高低"的数字。
还是用早餐店的例子,但这次数据多一点。
例子:早餐店30天营业额
你记录了一个月(30天)的营业额:
第1天(周一):100元
第2天(周二):100元
第3天(周三):100元
第4天(周四):100元
第5天(周五):100元
第6天(周六):50元
第7天(周日):50元
第8天(周一):100元
第9天(周二):100元
...一直重复这个模式...
2
3
4
5
6
7
8
9
10
每天的数据长这样:
周一:100
周二:100
周三:100
周四:100
周五:100
周六:50
周日:50
2
3
4
5
6
7
为什么要算"因子"
现在问题来了:
如果让你预测下周的营业额,你怎么预测?
你肯定会想:
周一到周五,每天大概100元左右 周六周日,每天大概50元左右
你是怎么得出这个结论的?
因为你观察了历史上每天的营业额,发现了规律:周几对应什么金额。
周期因子的思想就是这个,但它用数字更精确地表示这个规律。
# 周期因子怎么算——分步详解
- 第一步:算出"基准值"
基准值,就是"平均水平"。
把一周所有天的营业额加起来,除以7天,得到每天的平均值。
一周总营业额 = 100+100+100+100+100+50+50 = 600元
每天平均 = 600 ÷ 7 ≈ 85.7元
2
这个85.7元,就是"基准值"。
它的意思是:如果没有周期波动,每天应该就是这个数。
- 第二步:算出每个星期几的"因子"
因子 = 当天营业额 ÷ 基准值
为什么要除?
因为除完之后的数字,能告诉我们"这天比平均高多少或低多少"。
计算一下:
周一的因子 = 周一营业额 ÷ 基准值 = 100 ÷ 85.7 ≈ 1.17
周二的因子 = 周二营业额 ÷ 基准值 = 100 ÷ 85.7 ≈ 1.17
周三的因子 = 周三营业额 ÷ 基准值 = 100 ÷ 85.7 ≈ 1.17
周四的因子 = 周四营业额 ÷ 基准值 = 100 ÷ 85.7 ≈ 1.17
周五的因子 = 周五营业额 ÷ 基准值 = 100 ÷ 85.7 ≈ 1.17
周六的因子 = 周六营业额 ÷ 基准值 = 50 ÷ 85.7 ≈ 0.58
周日的因子 = 周日营业额 ÷ 基准值 = 50 ÷ 85.7 ≈ 0.58
2
3
4
5
6
7
整理成表格:
| 星期 | 营业额 | 因子 | 因子含义 |
|---|---|---|---|
| 周一 | 100元 | 1.17 | 比平均高17% |
| 周二 | 100元 | 1.17 | 比平均高17% |
| 周三 | 100元 | 1.17 | 比平均高17% |
| 周四 | 100元 | 1.17 | 比平均高17% |
| 周五 | 100元 | 1.17 | 比平均高17% |
| 周六 | 50元 | 0.58 | 只有平均的58%,低42% |
| 周日 | 50元 | 0.58 | 只有平均的58%,低42% |
- 第三步:理解因子大于1和小于1的意义
因子 = 1:"这天和平均一样"
因子 > 1(比如1.17):"这天比平均高",高多少?高17%
因子 < 1(比如0.58):"这天比平均低",低多少?低42%
公式:
因子 = 当天数值 ÷ 平均值
反过来说:
当天数值 = 平均值 × 因子
- 第四步:用因子来预测
假设你预测下周的"基准值"(平均每天)是80元。
那预测每天的营业额就是:
预测值 = 基准值 × 因子
下周一 = 80 × 1.17 ≈ 94元
下周二 = 80 × 1.17 ≈ 94元
下周三 = 80 × 1.17 ≈ 94元
下周四 = 80 × 1.17 ≈ 94元
下周五 = 80 × 1.17 ≈ 94元
下周六 = 80 × 0.58 ≈ 46元
下周日 = 80 × 0.58 ≈ 46元
2
3
4
5
6
7
8
这就是周期因子的预测方法。
核心公式只有两个:
因子 = 当天数值 ÷ 平均值
预测值 = 基准值 × 因子
2
# 实际数据更复杂怎么办
上面例子是一周完全重复,但现实中数据往往有噪音。
比如:
周一的营业额不一定每次都是100
可能是:105、98、102、95、101...
平均下来还是100左右
2
3
# 实际计算方法
- 第一步:收集所有周一的营业额,求平均
把所有周一的营业额加起来,除以周一出现的次数:
周一营业额:[105, 98, 102, 95, 101, ...]
周一平均值 = (105+98+102+95+101+...) ÷ 周一出现次数
2
第二步:同样方法算出周二、周三...周日的平均值
第三步:算基准值
基准值 = 七天平均值加起来 ÷ 7
或者更简单:基准值 = 所有数据加起来 ÷ 总天数
- 第四步:算因子
周一因子 = 周一平均值 ÷ 基准值
周二因子 = 周二平均值 ÷ 基准值
...
周日因子 = 周日平均值 ÷ 基准值
2
3
4
# 为什么叫"因子"
因为它是乘法中的一个"因子"。
预测值 = 基准值 × 周期因子
比如:
预测周一的营业额 = 基准值 × 周一因子
预测周二的营业额 = 基准值 × 周二因子
...
2
3
这个因子,是一个乘数,所以叫"因子"。
# 周期因子和ARIMA/SARIMA的区别
| 对比项 | ARIMA/SARIMA | 周期因子 |
|---|---|---|
| 原理 | 复杂的数学公式,用历史值推未来 | 很简单,用历史平均值推 |
| 周期捕捉 | 模型自动学,不用你管 | 手动算 |
| 计算量 | 大,需要迭代计算 | 小,直接求平均就行 |
| 适合场景 | 稳定规律的数据 有明显固定周期的数据 | |
| 调参 | 需要调很多参数 | 不需要调参 |
| 上手难度 | 难 | 非常简单 |
周期因子的优点:
原理简单,高中生能完全理解
计算简单,不需要复杂公式
效果不差,对有明显周期的数据很有效
调参简单,核心就一个"用什么做基准值"
周期因子的缺点:
无法捕捉趋势(如果数据一直涨或一直跌,效果差)
无法捕捉复杂的非线性关系
如果周期本身不稳定(比如节日每年日期不同),需要额外处理
# 周期因子在蚂蚁金服比赛中的应用思路
你的数据有这样的规律:
周周期:周一到周五申赎金额高,周六周日低
可能还有月周期:月初高、月底低
可能有节日效应:节假日金额异常
用周期因子法的思路:
第一步:计算每个星期几的平均因子
收集历史上所有周一的数据,求平均 → 周一因子
收集历史上所有周二的数据,求平均 → 周二因子
...
第二步:计算每个月的平均因子
收集历史上所有1号的数据,求平均 → 1号因子
收集历史上所有2号的数据,求平均 → 2号因子
...
第三步:预测9月
9月1日是周一,基准值假设1亿:
预测 = 基准值 × 周一因子 × 月份因子
也可以更简单:只用周因子,因为申赎数据周周期最明显。