别被‘时间序列’吓跑:你天天用的预测技巧
上周五下午三点半,你攥着刚发的下午茶报销单站在公司楼下的奶茶店门口,看着绕柜台两圈的队伍,转头跟同事吐槽:“今天芋泥啵啵肯定要等四十分钟,我上周五这个点来等了三十八分钟,上上周只等了二十二分钟,再上周下雨没人排队十分钟就拿到了。”同事眼睛一亮:“你怎么知道今天要等这么久?你会算命啊?”你摆摆手:“什么算命,我这就是瞎猜的。”
别笑,你这句“瞎猜”,其实已经踩中了时间序列预测最核心的门槛——你已经在用过去的时间数据,推测未来的情况了。你没意识到的是,从你每天早上出门前刷一下路况APP看要不要绕路,到妈妈看着阴天念叨“下午肯定要下雨带伞”,再到奶茶店老板提前囤三倍的珍珠应对周末客流,我们每个人每天都在和时间序列预测打交道,只是绝大多数人从来没给这个行为起过名字。
很多人一听到“时间序列预测”几个字,第一反应是“这是数据科学家干的活吧?要会Python、懂机器学习、会算微积分,我这种文科生/上班族根本碰不了”。如果你也这么想,那这一章的目的就是帮你把这个刻板印象砸个稀碎:时间序列预测不是什么高深莫测的黑科技,它就是你把“按时间排好的一串数据”里的规律找出来,用来猜“接下来会怎么样”的普通技能。哪怕你从来没用过一行代码,只要你会看过去的天气、记上个月的支出、回忆去年的客流,你就能入门。
```mermaid graph TD A[你看到奶茶店排队] --> B[回忆过去同一时间的销量数据] --> C[考虑天气、节日等特殊因素] --> D[预测今天要等40分钟] ``` *(图1-1 你每天都在做的时间序列预测流程)*
---
一、先搞懂:啥是时间序列?你手机里至少有100条
要搞懂时间序列预测,首先得搞清楚什么是时间序列。用大白话讲,时间序列就是“同一个指标,按时间先后顺序排成一串的数据”。这里面有三个关键要素,缺一个都不算:第一要有“同一个指标”,比如都是奶茶销量、都是通勤时间、都是每天的体重;第二要有“时间戳”,也就是每个数据对应的是哪一天、哪一小时、哪一分钟;第三要按“时间先后”排,不能打乱顺序。
你翻一下自己的手机,里面至少有几十条符合这个定义的时间序列数据:
- 你手机的“健康”APP里记录的过去一年每天步数,就是“步数”这个指标按“天”这个时间
你手机的“健康”APP里记录的过去一年每天步数,就是“步数”这个指标按“天”这个时间戳点排好的一串数据,你记账APP里过去三个月每天的餐饮、交通、房租支出,是“支出金额”按“天”排好的数据;甚至你刷短视频时平台记录的你过去一个月每天的刷视频时长、点赞的内容类型,也是按时间戳排好的时间序列。
你可能会说:“哦,原来这就是时间序列啊,我之前还以为是什么高大上的东西。”没错,它就是如此普通,普通到你天天见却从来没给它起过名字。就像你天天呼吸空气,从来没想过空气里还有氧气氮气一样。
要判断一个数据是不是时间序列,只要看它有没有三个核心要素:同一指标、时间戳、时间顺序。这三个要素缺一个都不算:比如你记了上个月每天花了多少钱,这是时间序列;但你要是只记了上个月“最多的一天花了500块,最少的一天花了20块”,没有对应哪一天花了多少,那就不是时间序列;再比如你记录了各个奶茶店今天的销量,这是“同一时间点不同主体的数据”,属于横截面数据,不是时间序列。
很多人会把时间序列和横截面数据搞混,这里有个简单的区分方法:横截面数据像一张全家福,拍的是同一时刻不同人的样子;时间序列像一个人的成长录像,拍的是同一个人不同时刻的样子。比如“2024年全国各个省份的奶茶销量”是横截面数据,“北京市2024年每个月的奶茶销量”就是时间序列数据。
时间序列按记录的时间间隔(也就是频率)分,常见的有这么几类,你肯定都见过:
- **分钟/秒级时间序列**:间隔最短,通常用于高频交易、服务器监控、网店实时访客量统计,比如股票市场每秒的股价变化,你刷短视频时平台每秒记录你的滑动行为,都属于这类。
- **小时级时间序列**:间隔为1小时,常用于交通拥堵预测、电力负荷预测、外卖订单预测,比如你查路况APP里显示的“未来24小时每小时的路况预测”,就是基于小时级时间序列算出来的。
- **日度时间序列**:间隔为1天,是最常用的时间序列类型之一,比如你每天的步数、每天的体重、每天的天气、每天的店铺销量,都属于日度时间序列。
- **周度/月度/季度时间序列**:间隔更长,常用于中长期规划,比如公司每个月的营收、每个季度的利润、每年的GDP,都属于这类。
- **年度时间序列**:间隔为1年,通常用于长期趋势分析,比如中国过去40年的GDP增长、你家过去10年的房租变化,都属于年度时间序列。
```mermaid graph TD A[时间序列] --> B[高频时间序列] A --> C[中频时间序列] A --> D[低频时间序列] B --> B1[秒级:股票分时数据] B --> B2[分钟级:服务器监控数据] C --> C1[小时级:路况预测数据] C --> C2[日度:每日步数/天气数据] D --> D1[月度:企业营收数据] D --> D2[年度:GDP/房租数据] ``` *(图1-4 时间序列按频率分类示意图)*
搞懂了什么是时间序列,再来说说什么是时间序列预测。用大白话讲,时间序列预测就是“根据过去的时间序列数据里的规律,推测未来某个时间点的指标值会是多少”。你站在奶茶店门口猜今天要等40分钟,就是一次完整的时间序列预测:你用的“过去四周同一时间的排队时间”“今天的天气是晴天”“今天是周五”这些信息,就是你找到的规律,你推测的“40分钟”就是预测结果。
你可能会说:“我这就是瞎猜啊,哪有什么规律?”别急着否定,你所谓的“瞎猜”,本质上是大脑自动完成了“找规律-做推测”的过程,只是你没意识到而已。真正的“瞎猜”是没有任何依据的,比如你从来没来过这家奶茶店,也没看过任何排队数据,张口就说“今天要等2个小时”,这才是瞎猜。而你是基于自己过去四次来的排队数据,结合天气、星期的信息做的推测,这就是有依据的预测,只是你之前没把它和“时间序列预测”这个专业名词联系起来而已。
这种“基于过去推测未来”的能力,其实是我们人类刻在基因里的本能。远古时代,我们的祖先要预测明天会不会下雨,要不要提前找地方躲雨;要预测猎物会不会经过这个山谷,要不要提前设陷阱;要预测冬天会不会冷,要不要提前存粮食。这些最早的时间序列预测,直接决定了我们的祖先能不能活下来。放到现在,这种能力不仅能帮你省时间、省钱,甚至能帮你做出更好的职业选择、人生规划。
先来说说最贴近你的个人场景:
- 你每天早上出门前刷路况APP,APP就是基于过去3个月每天同一时间的路况数据,预测你从家到公司要花多久,告诉你“当前路线拥堵,预计耗时45分钟,绕行XX路预计耗时30分钟”,你根据这个预测决定要不要绕路,这就是时间序列预测在帮你省时间。据高德地图2023年发布的《中国主要城市交通分析报告》,基于时间序列预测的路况提醒,能帮助用户平均每天节省15分钟的通勤时间,一年下来相当于多出90多个小时的自由时间。
- 你用的记账APP会分析你过去半年的支出数据,告诉你“你每个月在餐饮上的支出平均是3000块,这个月已经花了2800,剩余预算200”,这就是基于你的支出时间序列做的预测,帮你控制不超支。很多用户反馈,用了这个功能之后,每个月的餐饮支出平均能减少20%左右。
- 你健身时记录的体重变化,你会发现过去一个月每周平均瘦0.5斤,预测再坚持两个月就能瘦4斤,达到你的目标,这就是基于体重时间序列做的预测,帮你坚持下来。很多健身APP的“目标达成预测”功能,就是基于时间序列模型做的,准确率能到80%以上。
再来说说家庭场景:
- 你妈妈看着天阴了,说“下午肯定要下雨,记得带伞”,她就是基于过去几十年看天气的经验,结合当前的气压、湿度数据,预测下午会下雨,帮你避免淋成落汤鸡。据中国气象局的数据,现在公众的天气预报准确率已经能达到90%以上,暴雨预警的准确率能到95%,这些背后都是时间序列预测在发挥作用。
- 你家看过去三年夏天的电费账单,发现每年7、8月份的电费都是200块左右,今年夏天提前把空调温度调高2度,预测这个月电费能控制在180以内,这就是基于电费时间序列做的规划,帮你省钱。很多电网公司的“阶梯电价提醒”功能,就是基于用户的用电时间序列做的预测,帮助用户平均每月省10%的电费。
- 你家有宝宝的家庭,会定期记录宝宝的身高体重,对照生长曲线预测宝宝下个月的身高,提前买好新衣服,避免穿小了或者太大了。 pediatricians(儿科医生)用的儿童生长曲线,本质就是基于全国几百万儿童过去几十年的身高体重时间序列数据做的预测模型,能帮助家长及时发现孩子的生长发育问题。
然后是职场场景,这也是时间序列预测应用最广的场景:
- 你家楼下的奶茶店老板,会记录过去三个月每天的销量,发现每周五下午的销量是平时的2倍,下雨天销量会降30%,节假日销量会涨3倍,所以他会提前在周五下午多备3倍的珍珠和牛奶,下雨天少备货,节假日多雇一个兼职,这就是基于销量时间序列做的库存和人员规划,避免浪费也避免不够卖。据某连锁奶茶品牌的数据,用了销量预测功能之后,门店的食材损耗平均降低了25%,缺货率降低了18%。
- 电商运营会看过去一年每天的访客量、销量数据,预测“双十一”当天的访客量会是平时的10倍,提前备货、招临时客服、加服务器,避免到时候网站崩了、货不够卖、客服忙不过来。据阿里云的数据,用了销量预测功能的电商商家,大促期间的缺货率能降低30%,库存周转率能提升20%。
- 制造业的工厂会看过去半年的订单数据,预测下个季度的订单量,提前安排生产计划、采购原材料,避免生产多了卖不出去,或者生产少了交不了货。据麦肯锡的报告,用了需求预测功能的制造企业,库存成本平均能降低15%,交付准时率能提升20%。
最后是社会公共场景,这些预测你可能感知不到,但确实在默默影响你的生活:
- 气象局会分析过去几十年的气温、降水、气压数据,预测未来7天的天气,提前发布暴雨、台风预警,帮你提前做好防范,减少灾害损失。据国家气候中心的数据,现在的天气预报准确率已经达到90%,暴雨预警提前量平均能达到30分钟,每年能减少超过1000亿元的经济损失。
- 交通部门会分析过去三年节假日的高速车流量数据,预测国庆、春节哪个时间段哪条路会堵,提前发布绕行提示,甚至调整收费政策,帮你少堵在路上。据交通运输部的数据,基于时间序列预测的交通调度,能让节假日高速拥堵时间平均缩短20%。
- 疾控中心会分析过去10年的流感发病数据,预测今年冬天会不会有流感高峰,提前生产疫苗、发布预防提示,帮你少生病。据中国疾控中心的数据,基于时间序列预测的流感预警,能让流感的接种率提升15%,流感高峰期的就诊率降低10%。
```plantuml @startuml actor 个人 actor 家庭 actor 企业 actor 政府
个人 --> 预测通勤时间 个人 --> 预测体重变化 家庭 --> 预测天气带伞 家庭 --> 预测电费支出 企业 --> 预测商品销量 企业 --> 预测客流量 政府 --> 预测交通拥堵 政府 --> 预测流感高峰 @enduml ``` *(图1-5 不同人群的时间序列预测应用场景)*
据麦肯锡全球研究院2023年发布的《预测分析价值报告》显示,全球范围内时间序列预测的应用每年能为企业创造超过2万亿美元的价值,其中零售、物流、制造业的占比超过60%,而气象预测、交通规划等公共领域的应用,每年能减少超过3000亿美元的经济损失[^1]。
> 📌 电子版侧边栏:你已经在用了! > 你每天用的导航APP、记账APP、健康APP,甚至你刷的短视频平台,背后都在大量使用时间序列预测:导航预测你的到达时间,记账预测你的支出趋势,健康APP预测你的体重变化,短视频平台预测你喜欢的内容。你早就被时间序列预测包围了,只是之前不知道而已。
看到这里,你可能还是觉得:“这些都是企业或者政府部门用的大场景,我普通人哪用得上?而且预测还要搞数据、搞模型,我也不会啊。”这就是大家对时间序列预测最常见的三个误区,我们一个个打破:
误区1:时间序列预测是数据科学家才能掌握的技能,普通人学不会 错。你刚才看到的奶茶店
老板预测销量、妈妈预测下雨、你自己预测通勤时间,都是普通人做的预测,根本不需要懂什么Python、机器学习,更不需要会微积分。时间序列预测的核心是“找规律”,而找规律这件事,人类已经做了几百万年,根本不是什么高门槛的技能。你之前不会,只是没人告诉你“你平时做的那些事就是时间序列预测”,现在知道了,就已经入门了一半。
---
二、别被三个误区劝退:普通人学时序预测的门槛比你想象的低
我接触过不下100个想学时间序列预测的普通人,问他们为什么觉得难,答案基本都集中在三个误区上,我们一个个拆碎说,你会发现根本站不住脚。
误区1:必须要会编程、懂高数才能学
这是最常见的误区,很多人一看到“预测”“模型”几个字,就自动联想到“要写几百行代码、要算复杂的微积分公式”,直接打退堂鼓。但实际上,时间序列预测的底层逻辑根本不是代码和公式,而是“找规律”的常识。
你站在奶茶店门口猜排队时间,不需要写代码,只需要回忆过去四次同一时间的排队记录,结合今天是周五、天气晴这些信息,就能猜个八九不离十;你妈妈看天要下雨带伞,不需要懂气象模型,只需要看云的形状、空气的湿度,结合过去几十年的生活经验,就能判断个大概。这些判断的过程,就是最朴素的时间序列预测,和那些复杂的算法本质上没有任何区别,只是你没意识到而已。
哪怕你以后想用更复杂的模型,现在也有很多“零代码”的工具能帮你实现,比如Excel里的“预测工作表”功能,你只要把过去的时间序列数据输进去,点两下鼠标就能生成预测结果,根本不用写一行代码。很多小商家、个体户用Excel做销量预测,准确率已经能到70%以上,完全够日常用了。
误区2:必须要有一年以上的数据才能做预测
很多人觉得“我数据太少,做不了预测”,但实际上,数据量的要求完全取决于你要预测的场景和精度要求。如果你要预测未来10年的城市人口增长,那确实需要至少10年的历史数据;但如果你只是预测下周的奶茶消费、明天的通勤时间,哪怕只有过去7天的数据也足够了。
举个具体的例子:你是一家新开的奶茶店的老板,开业才10天,只有10天的销量数据,能不能做预测?当然能。你把这10天的销量按星期几分组,发现周一到周四平均每天卖80杯,周五到周日平均每天卖150杯,那你接下来一周的预测就是周一到周四备100杯的货,周五到周日备200杯的货,完全够用,根本不需要等一年的数据。
哪怕是只有3条数据,也能做最基础的预测:比如你过去3天的奶茶消费分别是20、22、25块,你哪怕什么都不懂,也能感觉到是缓慢上涨的,预测明天大概23-26块,这本身就是有效的预测。数据量只是影响预测的精度,不是能不能做预测的门槛。
误区3:预测必须100%准确,不准就没用
这是最致命的误区,很多人对预测的期待是“必须完全猜对”,只要有一点误差就觉得“预测没用”。但实际上,时间序列预测从来就不是用来“猜对每一个数”的,它的核心价值是降低不确定性,哪怕只能降低10%的不确定性,也能带来很大的价值。
你预测今天奶茶店要等40分钟,最后实际等了35分钟,差了5分钟,难道这个预测就没用吗?你至少不会因为觉得“只要10分钟”就直接排队,最后等40分钟心态崩了,你完全可以先拿个号,去旁边处理个工作消息,等快排到了再过去,这已经省了很多麻烦。奶茶店老板预测今天要卖200杯,最后实际卖了180杯,多了20杯的货,损耗只有50块钱;但如果他不预测,只备了100杯的货,最后缺货损失的是几百块的营收,还有100个顾客的不满,下次可能就不来了,比起来那点误差根本不算什么。
天气预报就是最好的例子:现在的24小时天气预报准确率已经能到90%,但依然有很多人觉得它“不准”,比如预报“70%概率下雨”,结果没下,你就觉得被骗了。但实际上,70%的概率是指“历史上类似的气象条件下,100次里有70次会下雨”,不是“今天一定会下雨”。而且哪怕只有30%的概率不下雨,你带把伞也不亏,总比淋成落汤鸡好。时间序列预测也是一样,它给你的从来不是“绝对正确的答案”,而是“基于现有信息的最优参考”,能帮你少踩坑,就是有用的。
---
三、手把手教你做第一次时序预测:算算你下周奶茶要花多少钱
光讲理论没用,我们来做一次完全零门槛的实操,你不需要任何工具,拿个手机计算器就能算,保证你学完就能用。
假设你是个每周都喝奶茶的人,过去4周的奶茶消费记录如下(周一到周日): | 周数 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 周总消费 | |------|------|------|------|------|------|------|------|----------| | 第1周 | 15 | 18 | 12 | 20 | 22 | 10 | 8 | 105 | | 第2周 | 16 | 19 | 13 | 21 | 23 | 11 | 9 | 112 | | 第3周 | 17 | 20 | 14 | 22 | 24 | 12 | 10 | 119 | | 第4周 | 18 | 21 | 15 | 23 | 25 | 13 | 11 | 126 |
现在请你花1分钟,用肉眼找一下这组数据里的规律,不用任何专业知识,就看数字的变化: 1. 首先看每周的总消费:105、112、119、126,每周稳定涨7块,这是上升趋势,说明你最近可支配收入涨了,喝奶茶的频率或者单价都高了。 2. 再看每天的消费:周一到周五的数字都比周六周日高,比如第4周周一18,周六13,差5块,这是周度季节性,因为周一到周五上班,点奶茶的频率高,周末在家喝白开水,喝得少。 3. 再看每天的波动:比如周三的数字总比周二低2块,周五总比周四高2块,这是固定的规律,不是随机的。
现在来预测下周的消费,你只要把这两个规律结合起来就行:
- 下周的总消费会在本周126的基础上涨7块,大概133左右;
- 周一到周五的消费会在第4周的基础上涨1-2块,也就是周一19、周二22、周三16、周四24、周五26;
- 周六周日的消费大概在14、12左右;
- 加起来总消费大概是19+22+16+24+26+14+12=133,和你之前算的完全一致。
你看,这就是一次完整的时间序列预测,你不需要任何公式,不需要任何代码,只需要会看数字的变化,就能算出来。哪怕你用的是更简单的“移动平均法”,也就是“下周的消费等于过去4周的平均消费”,算出来是(105+112+119+126)/4=115.5,虽然误差大一点,但也是一个有效的预测,至少比你瞎猜“下周花