☰
SPSS时间序列分析实操指南:从数据准备到模型解读
2026/10/2 15:19:01 网站建设 项目流程

时间序列分析这个东西,在SPSS里做起来其实没有想象中那么玄乎。很多人一听到“时间序列”四个字,脑子里先冒出ARIMA、平稳性、差分这些词,下意识觉得这是数学系才能碰的模型。实际上,只要数据是按时间顺序记录的——无论是店铺月度销售额、网站日访问量、医院门诊量,还是某款产品过去两年的周发货量——你都可以用SPSS在几分钟内跑出一版能用的预测模型。这篇博文就围绕SPSS实现时间序列分析这件事,从数据准备讲到模型解读,把关键操作步骤和常见的坑一次性捋清楚。内容不算高深,但都是能直接落地的东西,尤其适合毕业论文要做预测、业务分析需要做销量预判、或者纯粹想把手头数据跑出一点结论的读者朋友。

1. 时间序列分析到底在解决什么问题

1.1 先澄清一个概念:时间序列分析不是普通回归

我见过不少刚接触时间数据的人,第一反应是把它当作回归问题来处理。比如把“月份”当作X,把销量当作Y,直接在SPSS里跑一个线性回归。这个思路不是完全不能看趋势,但它有一个非常根本的缺陷:普通回归默认样本之间是相互独立的,而时间序列数据里最值钱的信息恰恰是“过去和现在之间的自相关关系”。

什么意思呢?今天的销量往往受昨天、上周、甚至去年同月销量的影响。这种跨时间的关联性,在普通回归里是完全没被利用起来的,甚至会导致回归残差出现明显的自相关,进而让显著性检验失真。SPSS里的时间序列分析,做的就是对我们自己的过去来预测未来这一类的“自回归依赖关系”进行建模。它的底层逻辑和横截面数据的回归是很不一样的,所以先在心里把这个概念掰开,后面看输出的参数表才不会晕。

1.2 什么时候该用时间序列分析:典型场景与数据要求

时间序列分析的应用场景比很多人想象中要宽,举几个我实际遇到过的例子:

  • 零售企业做月度销售额预测,用来安排补货和促销活动;
  • 连锁门店分析客流量的季节波动,看高峰期到底在哪些月份;
  • 医院科室做门诊量的趋势分析,为排班和床位安排提供依据;
  • 校园或企业的信息化部门看服务器日访问量变化,提前感知流量增长。

这些场景有一个共同特征:数据本身是按时间依次排列的,并且背后的生成过程里有趋势、周期性或者惯性。只要你关心的是“接下来会怎样”,时间序列分析就比单纯的平均值、同比环比要靠谱得多。

当然,用SPSS做时间序列分析有两个基本数据要求。第一,数据必须按时间顺序排列;第二,时间间隔要固定,可以是天、周、月、季度,但不能这周有记录、下周空缺之后又把日期压缩到一起。至于数据量,我的建议是:不带季节性的模型,至少要有20个左右的观测值;如果要捕捉季节效应,比如月度数据存在年度周期,那至少要有2到3个完整的周期,也就是说月度数据最好有24到36个月。样本太短不是不能跑,但结果基本是在猜,参考价值有限。

2. 上手前的数据准备工作

2.1 第一步不是建模,而是定义日期

很多人打开SPSS,把Excel表格往数据视图里一贴,第一列是“2023-01”“2023-02”这样一串文本,然后去菜单里找时间序列分析按钮,结果发现要么按钮是灰的,要么跑出来的结果完全不对。原因很简单:SPSS不知道哪一列是时间变量。你必须在分析之前明确告诉它“这个数据的节奏是什么、起点在哪里”。

具体操作路径是:菜单栏选择“数据 -> 定义日期和时间”。弹出来的对话框左边有一堆时间格式,比如“年”“年、月”“年、月、日”“周、月、日”“季度”等。你根据自己的数据频率选择一个,比如月度数据就选“年、月”,然后在右侧“第一个个案”处填起始年份和月份。确认之后,SPSS会自动生成一组新的变量,命名通常是YEAR_、MONTH_,数据视图里多出几列。这些变量就是SPSS后续识别时间索引的依据。

这一步非常关键,后续的序列图、自相关图、预测建模,全部依赖这个时间标记。我见过不少同事把这一步跳过了,结果后面所有预测功能都用不了,或者图上的横轴根本不是时间,只是一串不连续的编号,那种输出拿去汇报基本是灾难。

2.2 缺失值处理和序列规整

原始数据里如果中间缺了几期,比如某个月没有销售记录,直接去建模的话,SPSS会报错,或者结果里出现一大段“无法估计”。最稳妥的办法是先进“数据 -> 替换缺失值”,在“方法”下拉框里选“线性插值”或者“临近点的均值”。对于以时间为顺序的序列,我一般首选线性插值,因为它能利用前后两个时间点的信息,比直接填总体均值要合理得多。

还有一种情况是数据本身没有空值,但月份之间时间间隔不一致,比如1月、2月、4月、5月……中间3月完全没录。这种不是SPSS能自动补的,需要你自己在Excel里先把缺失月份补上,把值留空或者填入合理估计值,再导入SPSS。理由很简单,时间序列分析默认序列是等间隔的,缺了某一期相当于“节奏乱了”,模型给出的结果自然不可信。另外,SPSS里的“数据 -> 拆分文件”功能也值得提一下,如果你有多个分组,比如不同门店或者不同产品线的数据混在一个文件里,又想分别做预测,可以在“数据 -> 拆分文件”里按分组变量拆分,然后再跑时间序列模型,SPSS会对每个组别单独输出结果。分组数据的起始月份不一致时,这一步几乎是必须的。

2.3 实际操作时最容易踩的坑

我自己做下来,发现新手在数据准备阶段最容易栽在三个地方。

第一个是日期列格式问题。很多人把Excel里的“2023/1/1”直接粘进SPSS,看起来是日期,但SPSS数据视图里显示的可能是字符串,定义日期时直接报错。解决办法是在Excel里先把日期列格式设置成明确的“日期”格式,或者把年月拆成两列数值,然后再导入。

第二个是定义日期后的变量选择混乱。SPSS生成YEAR_、MONTH_之后,如果你的原数据里本来就有一个日期列,你会发现后续建模时多了一堆时间变量。这时候要清楚:真正被模型使用的是SPSS生成的时间索引变量,而不是你原来的文本日期列。

第三个是拆分文件后忘了关。你用了“数据 -> 拆分文件”做过分组分析,等单组分析完成后如果没把它切回“分析所有个案,不创建组”,后面所有的统计结果会一直按旧分组输出,百思不得其解。这个坑在SPSS里很经典,我至少看到三个人因为这个原因怀疑数据出了问题。

3. 先看图,再建模:序列特征探索

3.1 用序列图判断趋势、季节性与随机波动

拿到干净的数据、定义好日期之后,别急着建模。先画图,这一步能帮你省掉大量试错时间。在SPSS里操作路径是“分析 -> 预测 -> 序列图”,把你要预测的变量选入“变量”框,“时间轴标签”里选SPSS生成的时间索引变量。点击确定后,SPSS会画出一张序列图。

怎么看这张图?主要看三件事:趋势、季节性和随机波动。

趋势很好判断,数据整体向上或者向下走,说明存在趋势项,建模时需要考虑趋势。季节性则是看有没有规律的、以固定周期出现的波峰和波谷。比如夏天销量高、冬天销量低,或者每个季度末有明显上涨,这就是季节效应。如果图上只有无规律的上蹿下跳,那可能就是一个纯随机序列,做预测的意义不大,反而应该去做根本原因分析。

我自己的习惯是,图形出来后先肉眼判断有没有明显的趋势和季节,再把这个判断作为后面建模的起点。如果序列图显示数据随着水平升高波动幅度也在变大,那往往提示模型里可能要用到乘法季节模型,而不是简单的加法模型。

3.2 自相关图(ACF)和偏自相关图(PACF)怎么看

序列图能看出大方向,但要判断模型阶数,还需要看自相关图(ACF)和偏自相关图(PACF)。SPSS操作路径是“分析 -> 预测 -> 自相关”,把目标变量放进去,勾选“自相关”和“偏自相关”,输出会给出ACF和PACF图。

这两个图怎么看?我先用大白话解释一下概念。ACF就是序列与它自己滞后k期的相关系数,比如“今天的销售额”和“3天前的销售额”之间相关性有多高。PACF则是在剔除中间滞后项影响之后,序列与滞后k期之间的净相关性。

看图的经验法则大概是:如果ACF衰减非常慢,拖着长长的尾巴,说明序列很可能非平稳,建模时要做差分,也就是ARIMA模型里的d值需要大于0;如果ACF在某个滞后阶数之后突然截断,是一个尖峰,那对这个滞后阶数给出的信息要特别留意。对新手来说,不用太纠结于严格的判别规则,因为SPSS自带专家建模器可以自动选模型,但当你想手动指定ARIMA参数时,ACF和PACF就是你的眼睛,至少能帮你确定一个合理的起步范围。

4. 核心建模流程:抓住那两三个菜单就行

4.1 两种建模器,先分清再用

SPSS里做时间序列建模,主要入口是“分析 -> 预测 -> 创建模型”。进去之后会看到“方法”下拉框,里面有两个大类:专家建模器和传统建模器。

专家建模器的逻辑是让SPSS自动在多种候选模型里选一个最优的,比如它会自动比较指数平滑和ARIMA,然后按照某个信息准则选出拟合效果最好的那个。传统建模器则需要你自己指定模型类型,指数平滑还是ARIMA,ARIMA的p、d、q各是多少,全部手动来。

我的建议很直接:新手一开始先用专家建模器,用默认设置跑一遍,同时勾上“考虑季节性模型”。等你对结果有了一定理解,再回到传统建模器手动微调。不需要害怕专家建模器“黑箱”,它输出的表里会明确告诉你选了哪种模型,这本身就是学习过程。

4.2 指数平滑法模型怎么选

传统建模器里你选了“指数平滑”之后,还需要点击“条件”,在弹出的“指数平滑条件”对话框里选具体的模型类型。SPSS里常见的选项包括:

  • 简单模型:适用于无趋势、无季节性的数据;
  • Holt线性趋势:适用于有趋势但无季节性的数据,趋势会延伸到未来;
  • Brown线性趋势:类似Holt,但假设趋势是平滑稳定变化的;
  • 阻尼趋势:趋势不会无限延伸,到后期会自动变平,适合某些市场已经饱和的序列;
  • 简单季节性:适用于有季节性但没有趋势的数据;
  • Winters加性:适用于同时有趋势和季节性,并且季节波动的幅度相对固定;
  • Winters乘性:适用于同时有趋势和季节性,但季节波动的幅度随序列水平变化而变大。

选择逻辑其实很朴素:你前面看图的时候,如果觉得数据明显有季节波动,就选带“季节”的选项;如果趋势和季节都有,就在Winters加性和乘性之间选。第一次不确定的话,可以把不同的选项都跑一遍,比较误差指标,选最佳的那个。指数平滑类模型的好处是稳定、容易解释,对短期预测效果往往很好,是很多业务场景里的第一选择。

4.3 ARIMA模型参数究竟怎么填

ARIMA模型在SPSS里的样子可能让很多人头疼,因为它有六个框:自回归阶数p、差分阶数d、移动平均阶数q,以及季节部分的自回归阶数P、季节差分阶数D、移动平均阶数Q,还要填一个季节周期长度s。其实对应的就是ARIMA(p,d,q)(P,D,Q)s。

先解释一下每个参数的含义。p是自回归阶数,表示用前p期的值来预测当前值;d是差分次数,作用是消除趋势,让序列变平稳;q是移动平均阶数,表示用前q期的预测误差来修正当前预测。季节部分的P、D、Q则是同样的逻辑,但作用在季节周期上;s是季节周期的长度,月度数据通常是12,季度数据是4。

那么参数具体怎么填?我的建议是:不要追求一次到位,先根据序列图做初步判断。如果序列图显示明显非平稳,d取1通常就够了;如果一阶差分后仍然不平稳,再考虑d取2,但尽量避免过度差分,因为差分过多会把残留的有效信息也差掉。季节部分如果图形有年度周期,D可以先取1,s填12。AR和MA部分的阶数,可以从(1,0,1)这种低阶组合开始,跑完看残差检验结果再调高。比如月度数据带年度趋势的,常见起步配置就是(1,1,1)(0,1,1)12。这个配置的意思是:一阶差分处理总体趋势,再做一次季节差分处理年度周期,AR和MA各取一阶,季节移动平均取一阶。我多次实际跑下来,这个起步参数覆盖了很多带趋势和季节性的业务数据。

4.4 预测期怎么设置

模型建好之后,真正有价值的是未来预测。在“创建模型”对话框的“选项”选项卡里,你会看到“预测阶段”相关设置。在“模型评估”处可以选“从第一个个案到最后一个个案”,然后在下方的“预测到”里填写你想预测到的具体时间点。比如你的数据到2024年12月,你想预测未来6个月,就把“预测到”的时间改成2025年6月。SPSS会根据你定义好的时间周期自动计算要预测多少期。

另外,别忘了保存预测值。在“创建模型”对话框里找到“保存”按钮,或者在“选项”里勾选“预测值”和“置信区间上下限”。这样SPSS会在数据视图里新增几个变量,通常是FIT_1(拟合值)、UCIL_1(置信区间上限)、LCIL_1(置信区间下限)之类。这一步非常容易漏掉,很多人跑完模型只看到一张图,不知道预测值到底在哪,其实就在这里,需要自己勾选才会输出到数据表。

5. 模型效果怎么看,结果表怎么读

5.1 看拟合优度:R方、平稳R方、RMSE、MAPE、MAE

模型跑完,SPSS会输出一堆表,不少人在这一步开始头皮发麻,不知道哪个数才是关键。我建议优先看“模型拟合度”表和“模型统计”表。主要指标有这么几个:

  • 平稳R方:时间序列分析里比较常用,它衡量的是序列经过差分等平稳化处理后,模型能解释多少变化,通常比普通R方更有参考意义;
  • R方:普通拟合优度,反映的是模型对原始序列的解释能力,但时间序列里容易虚高,不宜单独看;
  • RMSE(均方根误差):预测值与实际值偏差的平方和的平均值再开方,用于衡量误差大小,越小越好;
  • MAPE(平均绝对百分比误差):预测偏差占实际值的比例,单位是百分比,越小越好。经验上MAPE在15%以内算不错,超过30%说明模型对某些波动没有抓稳;
  • MAE(平均绝对误差):预测偏差的绝对平均值。

这里有个小技巧:如果你在专家建模器里跑了好几个候选模型,SPSS会自动列出它们的对比结果,或者你手动多跑几个模型,可以把这些指标放在一起横向比较。比较时优先看平稳R方和MAPE,不要单独迷信用一个指标,比如R方特别高但MAPE很高,说明模型可能过度拟合了历史,预测反而飘。

5.2 看残差是否白噪声:Ljung-Box Q检验

比拟合优度更重要的是残差诊断。通俗讲,残差就是真实值和模型预测值之间的差异。一个合格的时间序列模型,残差应该像纯随机噪声一样,不再包含任何可以被模型利用的信息。如果残差里还有明显的自相关,说明模型没有把数据里的规律提取干净,预测结果不可靠。

SPSS输出里会有一张“模型统计”表,里面有一行叫“Ljung-Box Q(18)”或类似的名称,旁边会给出自由度和显著性(p值)。判断标准很直接:p值大于0.05,说明残差是白噪声,模型不存在明显的自相关残留,模型可用;p值小于0.05,说明残差里还有模式,模型需要调整,通常做法是增加AR或MA的阶数,或者给季节差分部分增加阶数。

我在实际项目里见过太多人只看拟合优度,完全不管残差检验,最后模型看上去“拟合得非常漂亮”,但一到预测就翻车。残差检验相当于是给模型做体检,这一步真的不能省。

5.3 把预测结果变成一张能汇报的图

SPSS输出里的预测结果图通常是原始序列和预测序列叠在一起的折线图,会包含拟合区间。但这种默认图直接放到论文或报告里往往不够干净,建议在你确认模型可用之后,把预测值变量和对应的预测日期复制到Excel或SPSS图形编辑器中重新画一张更清爽的图。

操作上很简单:在数据视图里找到SPSS生成的新变量FIT_1、UCIL_1、LCIL_1,以及对应的日期变量YEAR_、MONTH_,选中后复制到Excel。Excel里把真实历史数据和预测数据放在同一张图里,未来部分用虚线或者不同颜色区分,再把置信区间画成浅色带。这样出来的图,汇报的时候对方一眼就能看出“哪个是历史、哪个是预测、预测的把握有多大”。

5.4 SPSS输出中那些容易混淆的表

SPSS时间序列分析的输出一般会包括模型描述表、模型拟合度表、模型统计表和参数估计表。模型描述表用来告诉你SPSS最后选了哪种模型,比如“Winters乘性”或者“ARIMA(1,1,1)(0,1,1)”,这个信息写报告时一定要引用。参数估计表里列出的AR滞后项系数、差分项和常数项,通常在论文的方法部分只要说明模型类型和关键拟合指标就够了,参数的具体数值可以放在附表里。模型拟合度表和模型统计表则负责给你刚才说的那些指标:平稳R方、RMSE、MAPE和Ljung-Box Q的显著性。

很多新手看到一堆表就想全贴进论文,其实没必要。汇报时只要说明几点:用了什么模型、数据覆盖范围、主要拟合指标、预测区间以及残差的Ljung-Box检验结果,这就足够了,其他人已经能根据这些信息判断你的预测靠不靠谱。

6. 常见问题与排查技巧实录

6.1 老出现“无法估计”或“模型无效”怎么办

这是我在微信群和知乎私信里被问得最多的问题。模型跑不动,通常逃不出这几个原因。

第一个原因是样本量不够。很多人的数据只有12个月,还要估计带季节的模型,SPSS根本算不出来。解决办法是尽量多收集历史数据,至少凑够两个完整周期;如果实在只有短期数据,就放弃季节项,用简单指数平滑或者趋势模型。

第二个原因是缺失值没处理。序列中间有空缺,SPSS在估计时可能直接放弃整个个案,结果就是模型无效。解决办法是回到第2章,先用“替换缺失值”做预处理。

第三个原因是日期变量没有定义好。有时候你定义了日期,但起止时间填错,比如数据实际只有24个月,你填了36个月,SPSS找不到对应个案,预测阶段就会异常。解决办法是核对“数据 -> 定义日期和时间”里的起始设置是否和数据完全一致。

第四个原因是模型参数组合不合理。在一阶差分都还没做的情况下就填了很高的p、q阶数,比如ARIMA(5,0,5),模型参数太多,数据量又小,很容易出现估计失败。解决办法是先用低阶参数起步,哪怕模型简单一点,也比跑不出来要强。

6.2 为什么预测出来是一条直线

预测结果趋近于一条直线,这个现象很多人遇到过。主要原因是模型根本没识别到趋势和季节性。比如你的数据其实有明显季节波动,但你用了简单指数平滑模型,或者专家建模器在自动筛选时最终选了无季节项的模型,那预测自然就是一条直线。

解决办法是回到模型窗口,把“考虑季节性模型”勾上,或者手动选择Winters加性/乘性模型。还有一个更实际的原因:你的数据季节周期根本没有达到模型要求的完整期数。月度数据想看年度季节,至少要两年的数据,一年都不到,任何模型都像瞎子摸象,只能推平直趋势。另外要提醒一点:如果数据本身已进入增长停滞的平台期,那预测出来是直线反而是正常的,不要强行去加趋势项。

6.3 预测结果要如何汇报到论文或报告里

在论文里汇报时间序列预测结果,我建议用下面的结构,模板可以直接抄:

  1. 说明数据来源和样本范围,比如“本文选取2019年1月至2024年12月某产品月度销量数据,共72期”;
  2. 说明模型选择,比如“经比较,采用Winters乘性模型进行预测”;
  3. 列出关键拟合指标,例如平稳R方为0.76,MAPE为9.8%,Ljung-Box Q检验p值为0.32,说明残差已无自相关;
  4. 给出未来N期的预测值和90%或95%置信区间;
  5. 用一张图展示实际值与预测值。

这种汇报方式的优点是既完整又扎实,评委或领导一看就知道你做了正经分析,而不是随手填了个数。如果业务报告里不需要太多方法说明,可以把第2、3条压缩成半句话,“预测模型为ARIMA(1,1,1)(0,1,1)12”,然后重点展示预测图表和提醒业务注意的时间点。

6.4 SPSS有没有自动帮你挑模型的办法

有,这正是专家建模器的核心价值。在“创建模型”对话框里,你可以进一步设置专家建模器的搜索范围。比如在“条件”里勾选“专家建模器考虑季节性模型”,SPSS就会把带季节项的指数平滑和季节ARIMA模型一并纳入候选池。还可以勾选“自动选择平稳性处理方法”,让SPSS自己决定是否对序列做差分或变换。

用专家建模器跑完之后,输出表里会告诉你每个候选模型的拟合统计,有时还会列出几个接近最优的备选模型。我的习惯是,不直接照单全收,而是看最优模型的类型是否符合我对数据的直觉判断。如果SPSS选了ARIMA,我会再手动跑一个指数平滑模型的相应版本,比较MAPE和Ljung-Box结果,看哪个在真实业务上更好解释。专家建模器替你省了80%的试错工作量,剩下20%的判断还是得靠你自己对业务的理解。

最后分享一个习惯

我做时间序列分析这些年,慢慢养成一个固定流程:拿到数据先定义日期,再画序列图,接着用专家建模器初跑,然后手动微调参数,最后检查Ljung-Box检验和对比误差指标。这个顺序几乎没有变过。很多朋友问我为什么不做更复杂的模型,比如神经网络或者XGBoost,我的回答是:在大多数业务场景里,SPSS这套经典时间序列方法已经能给出足够稳定和可解释的结果,很多时候领导或导师需要的是一个能讲清楚逻辑的预测,而不是一个黑箱式的“更准”。如果你也有做预测的刚需,但又不想碰编程,那SPSS的时间序列模块真的是性价比很高的工具。希望这篇实操记录能帮你少走点弯路,把更多精力放在理解业务和验证结果上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询