ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ARIMA模型实战:新能源汽车销量预测与参数调优指南

ARIMA模型实战:新能源汽车销量预测与参数调优指南

简介:这份PDF文档围绕ARIMA模型在新能源汽车销量预测中的应用展开,面向数据分析、统计学及汽车产业研究方向的读者,帮助解决如何用时间序列方法对销量进行短期预测的问题。资源包内仅含1个PDF文件,大小约1.11MB,内容为期刊论文全文,涵盖模型概述、数据来源与平稳性分析、模型识别定阶及检验、拟合预测与结语等完整章节。文中选取2014年1月至2019年5月的新能源汽车月销量数据,详细演示了差分运算、ADF单位根检验、ACF与PACF定阶,并最终建立ARIMA(1,0,0)(1,1,0)模型进行验证,附有预测结果对比表与趋势图。读者可从中获取完整的建模流程、参数估计思路及误差分析结论,理解时间序列“近大远小”效应对预测期限的约束,为相关学术研究或企业战略制定提供可复用的方法参考。目前已有480人学习下载。

1. 到底什么是 ARIMA 模型:一个新手也能懂的类比

你有没有遇到过这种情况:手头有一串按时间排好的数字,比如每个月的销售额、每天的网站访问量、每年的气温变化,老板让你预测下个月大概是多少。你盯着这串数字看了半天,感觉它好像有规律,又好像没有,完全不知道从哪儿下手。

ARIMA 模型就是专门用来对付这类问题的。它的全称叫自回归积分滑动平均模型,名字听着吓人,但拆开看就三件事:自回归,说的是今天的数值和昨天、前天的数值有关系;积分,其实就是差分,把不平稳的数据变得平稳;滑动平均,说的是预测误差之间也有规律可循。这三件事合在一起,就构成了一个能“看懂”时间序列走势并往前推几步的数学工具。

通俗地说,ARIMA 就像一个经验丰富的老会计,你给他过去几年的月度报表,他能根据趋势和季节波动,估算出接下来两三个月的数字大概落在什么区间。它不保证百分之百准确,但在短期预测这件事上,它简单、可解释、上手快,这也是为什么它在销量预测、库存管理、流量预估这些场景里被反复使用。

2. 为什么销量预测需要 ARIMA:从数据里找规律

2.1 新能源汽车销量数据的脾气

新能源汽车销量这组数据,有几个很明显的脾气。第一,它整体是往上走的,2014 年到 2019 年,月销量从几万辆涨到二十多万辆,趋势非常明显。第二,它有季节性,每年 2 到 3 月是淡季,10 月到次年 1 月是旺季,这种波动每年都在重复。第三,它偶尔会抽风,比如某个月突然冲到 22.5 万辆,下个月又掉回 3.4 万辆,这种极值点让任何模型都头疼。

面对这样一组数据,拍脑袋猜肯定不行,线性回归又处理不了“今年的旺季和去年的旺季相关”这种时间上的自相关性。ARIMA 的优势就在于,它把趋势、季节、误差这三样东西分开处理,再组合起来,相当于给数据做了一次“解剖”,每一部分都单独建模。

2.2 差分:把不平稳变成平稳

ARIMA 里最核心的一步叫差分。什么叫差分?就是用后一个数减去前一个数,得到一个新的序列。比如原始销量是 10、12、15、14、18,一阶差分之后就是 2、3、-1、4。如果一阶差分还不够平稳,就再做一次,叫二阶差分。

为什么要做这件事?因为 ARIMA 模型有个前提假设:数据必须是平稳的。平稳的意思是,这组数据的均值和方差不随时间变化,整体上没有明显的上升或下降趋势。但现实中的销量数据几乎不可能天生平稳,所以要先通过差分把趋势“扣掉”,让剩下的部分变得平稳,模型才能正常工作。

在新能源汽车销量的案例里,作者做了一次差分之后,用 ADF 单位根检验发现新序列已经满足平稳性要求,这就为后续建模打好了基础。

2.3 六个参数到底在调什么

ARIMA 模型写成 ARIMA(p, d, q)(P, D, Q),看起来像密码,其实每个字母都有明确分工。

参数含义作用
p非季节自回归阶数用过去几个月的值来预测当前值
d非季节差分次数消除趋势,让数据平稳
q非季节滑动平均阶数用过去几个月的预测误差来修正
P季节自回归阶数用去年同期的值来预测
D季节差分次数消除季节性趋势
Q季节滑动平均阶数用去年同期的误差来修正

小写字母管的是“最近几个月”的关系,大写字母管的是“去年同一个月”的关系。在新能源汽车销量的案例中,最终选定的模型是 ARIMA(1,0,0)(1,1,0),意思是:非季节部分用前一个月的值做自回归,不需要额外差分;季节部分用去年同期的值做自回归,做了一次季节差分。这个组合不是随便选的,而是通过看 ACF 和 PACF 图,反复试出来的。

提示:参数选择没有唯一正确答案,同一个数据集,不同的人可能选出不同的 p 和 q,只要模型通过检验、拟合效果好,就是可用的。

3. 怎么判断一个 ARIMA 模型靠不靠谱:拟合与检验

3.1 看拟合图:趋势对不对得上

模型建好之后,第一件事是看拟合图。把模型算出来的预测值和实际值画在同一张图上,如果两条线的大趋势基本吻合,说明模型抓住了数据的主要规律。在新能源汽车销量的案例里,拟合结果和实际销量的走势基本一致,上升趋势和季节波动都体现出来了。

但拟合图也会暴露问题。比如 2018 年 12 月销量冲到 22.5 万辆,模型预测值明显偏低;最低谷的月份,模型又可能偏高。这说明 ARIMA 对极值点的捕捉能力有限,它更擅长描述“常态”,对“异常”反应迟钝。

3.2 看统计指标:R 方和 Sig 值

除了看图,还要看数字。SPSS 输出的结果里,有两个指标很关键:平稳 R 方和 Sig 值。

平稳 R 方衡量的是模型对平稳部分的解释程度,案例中这个值是 0.538,不算特别高,但考虑到季节变动的整体 R 方达到了 0.932,说明模型对整体趋势的拟合是相当不错的。Sig 值则是参数显著性检验的结果,小于 0.05 就说明这个参数在统计上有意义,不是凑数的。

这两个指标要结合起来看。R 方高但 Sig 值不达标,说明模型可能过拟合;Sig 值达标但 R 方很低,说明模型没抓住什么有用的信息。

3.3 看预测误差:相对误差在不在可接受范围

最终检验模型好坏的,还是预测准不准。案例中用 2019 年 3 月到 5 月的数据做验证,结果如下:

时间实际销量(万辆)预测值(万辆)相对误差
2019 年 3 月12.611.59%
2019 年 4 月9.79.25%
2019 年 5 月10.19.56%

相对误差在 5% 到 9% 之间,对于销量预测来说,这个精度已经可以支撑一些实际决策了。比如车企可以根据预测值提前调整排产计划,避免库存积压或供货不足。

但要注意,这个误差是在“预测未来三个月”的前提下得到的。时间序列有个“近大远小”效应,预测越远,误差越大。案例中作者也明确说了,超出三个月的预测结果不具有参考意义。

4. 易混概念辨析:ARIMA 和它旁边的那些模型

4.1 ARIMA 和 SARIMA 是一回事吗

很多人看到 SARIMA 就懵了,其实它和 ARIMA 的关系非常简单:SARIMA 就是加了季节项的 ARIMA。S 代表 Seasonal,也就是季节性。

区别在于,ARIMA 的六个参数里,大写字母那三个(P、D、Q)就是季节项。当你写 ARIMA(p,d,q)(P,D,Q) 的时候,其实已经在用 SARIMA 了。只是有些教材为了强调季节性,单独把它叫 SARIMA。在新能源汽车销量的案例中,因为数据有明显的季节波动,所以必须用带季节项的版本,也就是 ARIMA(1,0,0)(1,1,0)。

怎么区分:如果你的数据每年都在同一个月份出现高峰或低谷,就必须用带季节项的 ARIMA;如果数据没有明显的年度重复模式,用普通的 ARIMA 就够了。

4.2 ARIMA 和线性回归有什么不同

线性回归是最常见的预测方法,但它和 ARIMA 解决的是不同的问题。

线性回归假设样本之间是相互独立的,比如用身高预测体重,一个人的身高不影响另一个人的身高。但时间序列数据天生不独立,这个月的销量和上个月的销量高度相关。ARIMA 专门处理这种“自己和自己相关”的数据,这是线性回归做不到的。

怎么区分:如果你的自变量是不同维度的特征(价格、广告费、季节),用回归;如果你的自变量就是同一个指标的历史值,用 ARIMA。

4.3 差分和差分的区别:普通差分 vs 季节差分

差分这个词在 ARIMA 里出现了两次,但含义不同。普通差分是后一个数减前一个数,用来消除整体趋势;季节差分是今年这个月减去年这个月,用来消除季节性。

举个例子,如果数据是 2018 年 1 月到 2019 年 12 月的月销量,普通差分得到的是相邻月份的变化量,季节差分得到的是今年某月相比去年同月的变化量。两者不能互相替代,通常需要配合使用。

怎么区分:看数据有没有明显的年度重复模式。有,就加季节差分;没有,只用普通差分。

4.4 平稳 R 方和整体 R 方看哪个

SPSS 会输出两个 R 方:平稳 R 方和整体 R 方。初学者容易只看一个,其实两个都要看。

平稳 R 方衡量的是模型对“扣掉趋势之后那部分”的解释力,整体 R 方衡量的是对原始数据的整体解释力。如果整体 R 方很高但平稳 R 方很低,说明模型主要是靠趋势项在撑场面,对波动部分的刻画不够。案例中平稳 R 方 0.538、整体 R 方 0.932,说明趋势拟合得很好,波动部分还有提升空间。

怎么区分:整体 R 方看大方向对不对,平稳 R 方看细节抓得准不准。

4.5 预测三个月和预测一年的本质区别

很多人觉得,既然模型建好了,往前推十二个月和推三个月应该差不多。这是最大的误区。

时间序列预测有一个基本规律:预测步长越长,不确定性越大。案例中作者明确说了,只预测最近三个月,因为超过三个月,政策变化、市场突发事件的影响会累积,模型根本捕捉不到。而且 ARIMA 本身就有“近大远小”的特性,越往远处推,置信区间越宽,预测值越不可信。

怎么区分:短期预测看 ARIMA,中长期预测要么换模型,要么加入外部变量,要么干脆承认预测不了。

5. 什么时候该用 ARIMA,什么时候别碰

5.1 适合用的三个信号

第一个信号:你有一串按时间顺序排列的数据,而且未来和过去有连续性。比如月度销量、季度营收、每日访问量,这些数据今天的值和昨天的值有关系,不是随机跳动的。

第二个信号:你只需要预测未来几个周期。ARIMA 的强项是短期预测,三个月的销量、下周的流量、下个季度的库存,这些它都能给出一个可用的估计。案例中三个月的预测误差控制在 5% 到 9%,对于很多业务场景来说已经够用了。

第三个信号:你希望模型简单、可解释、能快速迭代。ARIMA 不需要 GPU,不需要海量数据,在 SPSS 或者 Python 的 statsmodels 库里几行代码就能跑起来。数据更新了,重新拟合一遍就行,没有复杂的调参过程。

5.2 不适合用的三个场景

第一个场景:数据没有时间上的自相关性。比如你今天要预测一个完全随机的抽奖结果,历史数据帮不上任何忙,ARIMA 也无能为力。

第二个场景:预测周期太长。如果你要预测三年后的销量,ARIMA 给出的结果基本没有参考价值。案例中作者自己也说了,超出三个月范围的预测结果不具有预测意义。

第三个场景:有强烈的外部干预。比如突然出台一项新政,或者竞争对手发布了一款颠覆性产品,这些事件不在历史数据的规律里,ARIMA 看不到也学不会。它只能基于“过去怎么变,未来还怎么变”这个假设做预测。

5.3 一个具体的判断流程

假设你手头有一组月度销售数据,想判断能不能用 ARIMA,可以按下面这个流程走一遍。

# 伪代码示意,不是完整可运行脚本 # 第一步:画时序图,看有没有趋势和季节性 plot(monthly_sales) # 第二步:做ADF检验,判断是否平稳 adf_result = adfuller(monthly_sales) if adf_result.pvalue > 0.05: # 不平稳,做差分 diff_sales = monthly_sales.diff().dropna() # 再做一次ADF检验 adf_result_2 = adfuller(diff_sales) # 第三步:看ACF和PACF图,初步判断p和q plot_acf(diff_sales) plot_pacf(diff_sales) # 第四步:拟合ARIMA模型,尝试几组参数 model = ARIMA(monthly_sales, order=(1,1,0), seasonal_order=(1,1,0,12)) result = model.fit() # 第五步:看拟合图和预测误差 result.plot_predict() print(result.summary())

这段流程的核心逻辑是:先确认数据能不能用 ARIMA,再确定用什么样的 ARIMA,最后验证用得对不对。每一步都有明确的判断标准,不靠感觉。

注意:如果第二步做完差分之后数据仍然不平稳,或者 ACF/PACF 图看不出任何规律,说明 ARIMA 可能不适合这组数据,需要考虑其他方法。

5.4 我踩过的坑

刚开始接触 ARIMA 的时候,我犯过一个很典型的错误:看到一组数据就急着套模型,跳过平稳性检验,直接设 p=1、d=1、q=1 跑结果。拟合图看着还行,但预测值偏得离谱。后来才明白,差分次数 d 不是随便设的,做多了会过度差分,把有用的信息也差没了;做少了数据不平稳,模型根本学不到东西。

从那以后,我每次用 ARIMA 之前都强制走一遍流程:先画图,再检验,再定阶,最后才拟合。多花十分钟做前期检查,比后面反复调参省事得多。希望这个习惯也能帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进