news 2026/10/19 2:21:47

ARIMA(1,0,0)(1,1,0)模型如何预测新能源汽车销量:3个月趋势解密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ARIMA(1,0,0)(1,1,0)模型如何预测新能源汽车销量:3个月趋势解密

简介:基于ARIMA模型的新能源汽车销量预测是一份典型的学术研究文档,适合经济统计、汽车产业研究及数据分析学习者阅读。文档以2014年1月至2019年5月新能源汽车月销量为样本,先通过差分与ADF检验实现序列平稳化,再依据ACF、PACF确定并建立ARIMA(1,0,0)(1,1,0)模型。模型平稳R方为0.538,考虑季节变化的整体R方为0.932,拟合效果良好;对2019年3月至5月的预测相对误差分别约为9%、5%、6%。文档还讨论了每年2~3月淡季、10月至次年1月旺季等季节性波动,以及政策变化对中长期预测精度的影响,适合作为课程论文、课题研究或企业销量预测方法参考。该文档给出了完整的建模步骤与结果对比,能够帮助读者快速掌握ARIMA模型的实证应用技巧与思路;资源包内共1个PDF文件,整体大小仅1.11MB,结构完整、内容精炼,已有480人学习下载。

1. 基于ARIMA模型的新能源汽车销量预测:为什么一个朴素到极致的模型,能咬住三个月趋势

一份基于ARIMA模型的新能源汽车销量预测,给出的模型长得极其朴素:ARIMA(1,0,0)(1,1,0)。自回归阶数只有1,移动平均阶数为0——在时间序列模型的菜单里,这几乎是最简单的配置。可就是这个朴素模型,对2019年3月至5月的销量预测相对误差分别只有9%、5%、6%。更值得注意的是,论文明确圈定预测窗口为3个月,并点出时间序列的“近大远小”效应。为什么这么简单的模型能咬住趋势?为什么只敢预测3个月?答案藏在差分、季节项与均值回归三个机制里。这篇解读把ARIMA的底层逻辑拆开,讲清楚它为什么能work、在哪儿会翻车。

2. 平稳性:为什么预测前非要把销量序列“折腾”成平稳的

2.1 非平稳序列不能直接建模:伪回归和单位根

新能源汽车月销量在2014年时还处于每月几千辆的水平,到2019年已经爬到十几万辆。序列均值一路抬升,这种序列在计量里叫非平稳序列——它的统计特性随时间是变化的。如果拿这样的序列直接做回归,最常见的结果是R方看起来高得离谱,系数也通过了显著性检验,可一旦换个样本段就全部失效。这种现象叫伪回归:回归结果只是共同趋势的巧合,不是真正的销量驱动关系。

那为什么ARIMA非要先平稳化?因为时间序列预测的本质是“把历史统计特性外推到未来”。平稳序列才谈得上“均值稳定、方差稳定、自相关结构稳定”这三条外推前提。对于带趋势的销量序列,均值本身在漂移,上一年的均值对下一年没有参考意义,直接外推就是在赌趋势永远延续——而销量预测恰恰不允许这种赌博。

论文里提到一个关键动作:对原始序列做季节性分解之后再进行差分处理。这里的处理顺序是有讲究的:先识别出季节形态,把每年固定重复的淡旺季拆走,剩下的趋势部分再用差分消除。最终建立的是ARIMA(1,0,0)(1,1,0)模型,很多人看到这个写法会疑惑:不是做了差分吗,为什么d=0?这是因为6个参数里小写d管普通差分,大写D管季节差分,实际做掉的那次差分是季节差分——它比较的是今年某月和去年同月的差值,不是相邻月份。这个符号陷阱在第5章展开。

2.2 差分与ADF检验:怎么判断序列“折腾”到位了

差分是最朴素的平稳化手段。一阶差分计算y_t与y_{t-1}的差,把“销量水平”变成“销量增量”。水平数据带上升趋势,增量数据却在一个固定均值附近上下波动——趋势被差分运算消掉了。论文做的差分对应到模型里是季节差分D=1,逻辑与普通差分同源:都是把不平稳的量转成平稳的量,只不过季节差分比较的是相隔12个月的两个点。

但这只是“看起来平稳”,判断是否真正平稳需要统计检验。论文用的是ADF单位根检验,它的原假设是“序列存在单位根,即非平稳”。如果检验得到的p值小于显著性水平(通常0.05),就拒绝原假设,认为序列平稳。论文描述一次差分后的序列“比较符合平稳性的要求”,意思就是ADF检验的p值达标了,可以进入定阶环节。

提示:ADF检验对差分次数的选择很敏感。差多了会让序列过差分,引入不必要的负自相关,把原本干净的结构搅乱;差少了又留下单位根。论文只做一次差分,是“够用为止”的思路——能通过平稳性检验就不再继续差。

2.3 季节性分解:SPSS在建模前悄悄做了什么

论文用SPSS对数据做了季节性分解,分解结果给出了一个季节性因子序列图。这套分解的逻辑是把原始序列拆成三部分:趋势-循环分量、季节因子、随机误差。季节因子描述的是每年固定重复的形态——2月到3月是淡季,10月到次年1月是旺季,每年12月冲高,次年2月回落。图里标记的CEN12表示中心化的12个月移动平均,用来提取趋势分量,12与月度数据的年度周期严格对应。

为什么要先把季节分量拆出来看?因为如果季节形态不单独处理,模型会把它和趋势混在一起学,结果就是既学不好趋势也学不好季节。论文的应对策略是给模型配上季节括号(1,1,0)——1阶季节自回归加1次季节差分——让模型显式地利用“去年同月”的信息。数据里2014年1月到2019年5月共56个月,覆盖4年多,每个季节周期至少重复4次,季节差分才有足够的样本去估计。

3. 模型结构:ARIMA(1,0,0)(1,1,0)的两个括号各管什么

3.1 AR(p)和MA(q)的底层含义:为什么p=1就够

ARIMA的核心假设是:当前值可以由过去的自身值和过去的预测误差共同解释。其中自回归部分AR(p)写成公式是:

x_t = c + φ₁x_{t-1} + φ₂x_{t-2} + … + φ_p x_{t-p} + ε_t

这里的x_t指经过差分变换后的序列。移动平均部分MA(q)则是把过去q期的预测误差ε作为回归项。论文最终定的p=1、q=0,意思是销量只需要依赖上个月的值,不需要依赖更早的历史,也不需要误差修正项。

为什么一阶就够?这其实是月度销售数据的常见结论。汽车销量有明显的月度惯性——本月销量与上月强相关,但与三个月前的直接关联已经很弱,更早的信息会通过上一期的值间接传递进来。一阶自回归就是“只看上一期”的模型,它的φ系数衡量上月销量对本月的影响强度。SPSS输出的Sig<0.05告诉我们这个系数显著不为零,这条主链条是成立的。

MA项取0则说明论文没有为随机冲击设置记忆。新能源汽车销量序列里,促销、限行调整、新车型上市这类冲击确实存在,但它们是零散的、不致于形成多期连续效应,所以q=0在统计学上是合理的——加进去反而可能过度拟合。

3.2 季节括号(P,D,Q):S=12的滞后结构

第二个括号(1,1,0)处理季节成分,频率S=12。季节差分Δ₁₂x_t = x_t − x_{t−12}用“同比差值”取代原始销量,这一下就把年度周期搬走了。比如2月销量历来低,但2月与去年2月的差值是多少,这是个平稳得多的量。D=1就是说做了这样一次季节差分。

季节自回归阶数P=1表示还要在季节差分后的序列上引入一项“去年同月”的自回归:把今年某月的值看作去年同月值的函数。这比普通自回归多跨了12步,作用是把年度之间的惯性也纳入模型。你可以这样理解:普通括号负责“上个月卖得好,这个月大概率也好”,季节括号负责“去年同期卖得好,今年同期大概率也好”。两个括号一个管短期记忆,一个管年度记忆,互不干扰。

这是带季节项和不带季节项ARIMA的本质差别。不带季节项的ARIMA只能捕捉连续月份之间的传导,遇到“每年2月必跌、每年12月必涨”这种周期性行为,它只能靠差分后的残差硬扛,预测误差在旺季淡季切换时会被放大。加上季节括号后,模型不必重新学习“12月会高”,它直接拿去年12月当基准。

3.3 定阶流程:ACF/PACF怎么给出(1,0,0)(1,1,0)

定阶在这行里常被当成玄学,其实规则是明确的。靠的是两个函数:ACF(自相关函数)度量序列与自身滞后k期的相关性,PACF(偏自相关函数)度量剔除了中间滞后影响后的净相关性。识别规则是:AR(p)的PACF在p阶后截尾,MA(q)的ACF在q阶后截尾。论文对差分后的序列做ACF/PACF分析后取p=1、q=0——对应ACF拖尾衰减、PACF一阶截尾的经典AR(1)形态;季节部分同理取P=1、Q=0。

用Python的statsmodels复现这个流程,标准代码是:

import pandas as pd from statsmodels.tsa.statespace.sarimax import SARIMAX # order=(p,d,q) 对应普通括号,seasonal_order=(P,D,Q,S) 对应季节括号 # D=1: 做一次12阶季节差分; P=1: 季节自回归一阶 model = SARIMAX( monthly_sales, order=(1, 0, 0), # 普通部分: AR(1), 无差分, 无MA seasonal_order=(1, 1, 0, 12) # 季节部分: 季节AR(1), 季节差分1次, 周期12 ) result = model.fit(disp=False) print(result.summary()) # 预测未来3个月 forecast = result.forecast(steps=3)

SARIMAX的order=(1,0,0)对应论文里的小写(1,0,0),seasonal_order=(1,1,0,12)对应大写的(1,1,0)。要注意:第一层括号的0代表不做普通差分,可模型的第二个括号里D=1,说明非平稳性主要靠季节差分消除——这就是为什么论文说“进行一次差分”而模型里d却写作0。拟合之后必须检查残差是否为白噪声,做法是对残差做Ljung-Box检验,p值大于0.05才说明信息提取干净。这一步论文没写,但复现时省掉它,模型就会在看不见的地方漏信息。

4. 拟合与预测:为什么R方0.932的模型会在极值处翻车

4.1 参数估计与显著性:Sig<0.05背后的统计学含义

模型定阶完成后的下一步是估计参数。论文用SPSS自动估计AR(1)的参数,关注的输出有三个:系数值、显著性Sig、R方。Sig<0.05意味着自回归系数在统计上显著不为零——如果Sig不达标,说明这一项对销量的解释力与零没有区别,模型白建了。

R方这里有个值得细看的细节:平稳R方0.538,考虑季节变动的整体R方0.932。两者差距很大,但不代表模型“一半时间在失效”。平稳R方是在差分后的序列上计算的,度量的是模型对短期波动的解释力;整体R方是在原始销量水平上计算的。季节差分已经拿走了年度周期的绝大部分方差,剩余要解释的量本来就小,所以整体R方能到0.932。两个数字放在一起的正确读法是:模型把季节规律抓得很牢,但对剩余短期波动的解释力中等偏上——不能只盯0.932就以为销量走势被完美复刻。

4.2 “近大远小”的数学本质:为什么只预测3个月

论文几次强调“近大远小”效应,并明确预测窗口是3个月。这个效应在AR(1)里是可以直接推导的。为了展示机制,这里用不含季节项的AR(1)说明,季节项不改变均值回归的方向。一步预测是x̂_{t+1}=c+φx_t。两步预测代入一步预测值,得到x̂_{t+2}=c+φx̂_{t+1}。连续迭代n步后,预测值里历史信息被φ的n次方不断压缩,预测结果以指数速度收敛向长期均值c/(1−φ)。

φ的绝对值小于1(平稳性要求),所以n越大,预测值越趋近一个恒定常数——不再跟随任何波动。这不是模型的缺陷,而是均值回归的数学必然。时间序列预测的窗口越长,预测值越“平”,这正好对应论文里“预测时间如果超过要求,将导致精度有一定程度的降低”。对月度数据来说,12个月为一个完整季节周期,经验上有效窗口大约就是四分之一周期,也就是3个月。超过这个窗口,季节因子还勉强能撑住,短期波动已经全被均值回归抹平。

注意:3个月不是从论文里抄出来的魔法数字。它背后是“预测步数vs季节周期长度”的比例关系。换成周数据(周期52)或季度数据(周期4),有效窗口都要按比例重新折算。

4.3 极值处的翻车:22.5万辆为什么拟合不上

论文给出的拟合图里有一个明显的裂口:2018年12月销量冲到22.5万辆,而模型拟合值明显低于这个水平;最低月份只有3.4万辆,模型同样没追到底。AR(1)的预测机制决定了它天然追不上这种极值。单步预测只有在上一期同样是极值的情况下才可能接近极值,一旦极值出现在“上期正常、本期突然爆发”的组合里,预测值只能落在均值附近,离差被φ系数缩小后才传进预测。

更深一层,这种极值往往是外生事件驱动的——年末集中冲量、补贴窗口临近关闭、排放标准切换前的清库,都是汽车行业真实存在的扰动。ARIMA的输入只有销量自身的历史,没有任何外生变量,所以它无法把“12月有一波政策驱动的抢购”编码进模型。模型不是不知道这个规则,是规则根本不在它的视野里。论文在结语里承认“在极值处预测误差有时较大”,这是ARIMA这类纯时间序列模型的结构性边界,不是调参能解决的。

论文给出的预测结果值得做成表格看:

月份实际销量ARIMA预测值相对误差
2019年3月12.6万辆11.5万辆9%
2019年4月9.7万辆9.2万辆5%
2019年5月10.1万辆9.5万辆6%

这三个月的共同点是:没有出现2018年12月那种极端脉冲,序列处于正常的淡旺季切换中,所以误差稳定在个位数。把4.2和4.3连起来看就清楚了——ARIMA擅长的是“正常波动中的趋势延续”,它把极值当作残差扔掉。做预测前先问一句:未来3个月会不会再来一次突发冲量?如果有,就别指望ARIMA给你答案。

5. 避坑排查:时间序列建模最常见的五个坑

5.1 分不清d和D:模型写法的符号陷阱

现象:复现论文时,照着“进行一次差分”的操作去建模,却发现最终模型写的是ARIMA(1,0,0)(1,1,0)——第一层括号的d是0,不是1。刚上手的人会以为论文写错了,或者自己漏了一次差分。

原因:ARIMA的六参数写法里,小写(p,d,q)管非季节部分,大写(P,D,Q)管季节部分。论文做掉的那次差分是季节差分(D=1),它拿x_t减x_{t-12},不是拿x_t减x_{t-1}。两个d长得像,作用完全不同。

解决:建模型前先明确序列的不平稳来自哪里。如果序列是趋势性不平稳(均值整体漂移),用普通差分d;如果序列是周期性不平稳(每年同月规律性高低),用季节差分D。拿不准就画序列图和季节分解图,看趋势线在漂移还是季节峰在重复。数据里有明显的“每年2月跌、12月涨”,论文选D=1是合理的。

5.2 只看R方不看残差

现象:整体R方0.932,觉得模型已经完美,直接拿预测结果去交差。

原因:R方衡量的是拟合优度,但它不保证残差是白噪声。如果残差里还残留自相关,说明信息没提取干净,模型的系数估计是有偏的,预测区间也会失真。论文没有报告残差检验,这不代表可以跳过。

解决:每建完一个模型,保存残差序列,做Ljung-Box检验,p值大于0.05说明残差无自相关;再画残差ACF/PACF图确认没有显著拖尾。发现残差还有结构,就回到定阶环节调整p或q。这套流程每次建模都强制走一遍,它拦下过好几次“看着完美、实际翻车”的模型。

5.3 拿预测值滚动回填

现象:数据只到2019年5月,为了预测6月,先预测5月,再把5月的预测值当真值补进序列,继续预测6月、7月。

原因:滚动回填会让误差一层层叠进去。预测值本身带不确定性,把它当真实观测值输入模型,相当于把前一步的误差当成事实传递给下一步,多步之后预测区间被显著低估,预测值也偏向均值。这比直接做多步预测更危险。

解决:要么用真实观测值更新(等6月实际销量出来再重训模型),要么直接调用模型的forecast(steps=3)一次给出多步预测,让模型内部的递推公式统一处理误差传播,不要手动回填。

5.4 忽略政策突变,把模型当预言机

现象:模型预测未来6个月销量持续攀升,实际却出现断崖式下跌。回头找原因,发现中间有一次限购调整或补贴政策变化。

原因:ARIMA的所有信息都来自销量历史本身,它只能外推历史中已经出现过的模式。政策这类外生冲击从未出现在训练数据里,模型对它一无所知。论文明确说“政策的改变必然会造成销量的改变”,所以只把预测范围限制在3个月,并且强调要用最新数据持续更新。

解决:把预测结果当成“若无新冲击的基准情景”,而不是最终答案。对已知将要发生的政策变化,拆出来做情景调整,或者在模型里引入外生变量(SARIMAX)。每次预测前先问:未来窗口内有没有训练数据里没出现过的冲击?有,就先打折。

5.5 用4年数据强推远期趋势

现象:2014到2019年销量整体上升,看到这个趋势就预测之后几年的销量会继续线性增长。

原因:时间序列的“近大远小”效应决定了远期的预测值会被均值回归拉平,而不是跟趋势线走。论文用ARIMA给出的预测只覆盖3个月,就是因为超过这个窗口精度不再可信。把短期趋势外推成远期预言,是拿ARIMA干回归分析的活。

解决:做预测前先看数据覆盖的完整季节周期数。4年多数据覆盖4个完整年度周期,支撑3个月到半年的预测是够用的;要预测未来一年,至少需要5年以上、经历多个政策周期和行业周期的数据。数据量不够就老老实实缩短窗口,或者换用能够融合外生变量的模型。

6. 设计取舍:从ARIMA到组合方法,销量预测的边界在哪里

ARIMA在新能源汽车销量预测上的表现,本质上是“用历史模式换短期精度”的取舍。它把销量序列拆成趋势、季节和随机三块,用差分和滞后回归把前两块显式建模,剩下随机部分交给均值回归兜底。这套设计对数据要求低、可解释性强,代价是放弃了对外生冲击的表达能力。论文在结语里提出的方向值得细想:更新数据、增加样本、组合多种方法。这份PDF保留了序列图、季节性分解图和SPSS输出截图,复现时可以拿自己的输出逐项对照参数估计、R方和预测值,这是它比单纯看博客教程更有价值的地方。

“更新数据”对应的是模型时效性。ARIMA的参数一旦用旧数据估计完,就固化了。把2014年的数据留在模型里太久,相当于让模型按旧的市场结构预测新的市场。更务实的做法是滑动窗口重训:每来一个月真实销量,就滚动进窗口、滚出最老的数据,重新估计φ,让模型始终贴着最新的市场状态走。论文把预测窗口压到3个月,本质上也是这个思路的变体——模型新,窗口短,历史模式才来得及更新。

“组合方法”指向的是ARIMA的结构性短板。极值预测不上、政策冲击看不见,这不是调参能解决的,需要换成能容纳外生变量的框架。SARIMAX可以在季节ARIMA的基础上加回归项,把补贴政策、油价、充电桩数量这类变量显式送进模型;机器学习方法则擅长捕捉非线性关系,但对小样本时间序列容易过拟合。组合预测的思路不是推翻ARIMA,而是让ARIMA负责趋势和季节这条主线,让外生模型负责冲击修正,各管一段。

从那以后我每次做销量预测都会强制走一遍完整的流程:先做季节性分解判断不平稳来源,再按d和D分开处理;定阶后必须看残差的白噪声检验;预测窗口严格压在季节周期的四分之一以内。最后再问自己一句:未来这几个月,有没有训练数据里没见过的冲击?有,就承认模型给不了答案。这套习惯帮我避开了好几次“R方好看、实盘翻车”的尴尬。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 2:21:33

专科生论文降AIGC检测全攻略:从查重到AI痕迹的实战方法

查重率10%&#xff0c;AIGC疑似度91%。A同学拿着检测报告坐在我面前时&#xff0c;表情比论文答辩还沉重。导师的话很直接&#xff1a;要么把AI痕迹降下来&#xff0c;要么别进盲审。这不是个例。最近几个月&#xff0c;找我咨询论文降重的人里&#xff0c;专科生比例明显上升&…

作者头像 李华
网站建设 2026/10/19 2:21:16

储能柜效率差异的隐形杀手:电池簇DC/DC损耗分析与优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 2:20:29

Flink CDC 3.0实战:MySQL到Doris实时同步全攻略

简介&#xff1a;面向大数据实时同步场景的 Flink CDC 3.0 实战资料&#xff0c;由尚硅谷研究院编写&#xff0c;适合有一定 Flink 基础的研发工程师&#xff0c;目标是解决 MySQL 到 Doris 的高效稳定数据同步问题。资料先厘清 CDC 定义&#xff0c;对比基于查询与基于 Binlog…

作者头像 李华
网站建设 2026/10/19 2:20:21

IDA Pro PE逆向实战:从加载配置到F5反编译修复全链路

简介&#xff1a;本资源是一份面向网络安全初学者的IDA Pro反汇编工具入门与逆向实战教学笔记&#xff0c;聚焦Windows PE文件分析与CrackMe解密实践&#xff0c;解决静态逆向分析入门难、工具操作不熟、实战案例匮乏等核心问题。资源为单文件PDF文档&#xff08;5.5MB&#xf…

作者头像 李华
网站建设 2026/10/19 2:19:36

4位扩展法实现低成本高精度PWM

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 2:19:26

X-Scan v3.3-cn在Win10/Win11稳定运行全指南

简介&#xff1a;X-Scan-v3.3-cn是国内知名安全团队“安全焦点”推出的经典开源漏洞扫描工具中文版&#xff0c;面向网络安全初学者、渗透测试入门者及红队技术实践人员&#xff0c;用于快速识别目标主机的弱口令、常见服务漏洞与基础配置风险。资源包共2000个文件&#xff0c;…

作者头像 李华