本教程以一家目录公司为例,该公司希望根据其 10 年的销售数据预测男装系列的月销售额。
在 "预测带宽利用率"教程中,您了解了专家建模器如何为时间序列选择最合适的模型。 现在,我们来仔细研究一下选择模型时的两种方法:指数平滑法和 ARIMA。
- 此序列是否具有总体趋势? 如果是,趋势是显示持续存在还是显示将随时间而消逝?
- 此序列是否显示季节性? 如果是,那么这种季节的波动是随时间而加剧还是持续稳定存在?
预览教程
观看本视频,预览本教程的步骤。 视频中显示的用户界面可能略有不同。 该视频旨在作为书面教程的补充。 本视频以可视化的方式介绍了本文件中的概念和任务。
试用教程
在本教程中,您将完成这些任务:
建模流程和数据集样本
本教程使用示例项目中的预测目录销售流程。 使用的数据文件是catalog_seasfac.csv。 下图显示了建模流程示例。


任务 1:打开示例项目
任务 2:检查数据资产和类型节点
目录销售预测包括几个节点。 按照以下步骤检查数据资产和类型节点:
- 从 "资产"选项卡,打开 "预测目录销售"建模流程,等待加载画布。
- 双击catalog_seasfac.csv节点。 该节点是一个数据资产节点,指向项目中的catalog_seasfac.csv文件。
- 查看文件格式属性。
- 可选:单击 "预览数据"查看完整数据集。
- 双击类型节点。
- 单击读取值。
- 在 "男性"字段中,确认角色已设置为 "目标"。
- 确认所有其他字段的角色都设置为 "无"。
- 单击保存。
- 可选:单击 "预览数据"查看过滤后的数据集。
查看进度
下图显示了类型节点。 现在您可以将数据可视化了。

任务 3:可视化数据
请按照以下步骤使用时间图节点将数据可视化:
- 添加一个时间图节点:
- 在节点调板中,展开图表部分。
- 将时间绘图节点拖到画布上。
- 将类型节点连接到新的时间图节点。
- 双击时间绘图节点,设置其属性。
- 在"系列"部分,单击 "添加列"。
- 选择男性字段。
- 单击确定。
- 选择 "使用自定义 x 轴字段标签"。
- X 轴标签选择日期。
- 清除正常化选项。
- 单击保存。
- 将鼠标悬停在 "[男] v 上。 日期 节点,点击运行图标
。
- 在 "输出和模型"窗格中,点击名称为 "的结果 [男] v。 日期来查看图表。
此序列显示整体上升趋势,即序列值趋向于随时间变化而增加。 上升趋势似乎将持续,即为线性趋势。
此序列还有一个明显的季节模式,即年度高点在十二月(如图形中的垂直线所示)。 季节变化显示随上升序列而增长的趋势,表明是乘法季节模型而不是加法季节模型。
由于您已了解此序列的特征,因此可以开始尝试对其进行建模。 指数平滑法有助于预测存在趋势和/或季节性的序列。 如前所述,这些数据同时具有这两个特点。
查看进度
下图显示了一张图表。 现在您可以开始制作模型了。

任务 4:建立模型
构建最佳拟合指数平滑法模型包括确定模型类型(此模型是否需要包含趋势和/或季节性),然后获取选定模型的最佳拟合参数。
随着时间的推移,男装销售情况图建议您使用同时包含线性趋势成分和乘法季节性成分的模型。 这意味着温特斯模型。 不过,您首先要探索一个简单模型(无趋势和无季节性),然后是霍尔特模型(包含线性趋势但无季节性)。 此操作将让您了解模型在什么时候不适合数据,这是成功构建模型的基本技巧。
请按照以下步骤建立一个简单的指数平滑模型:
- 双击Men(时间序列)节点,查看其属性。
- 展开观察结果和时间间隔部分,并设置这些属性:
- 确认时间/日期设置为日期。
- 确认时间间隔设置为月。
- 展开 "构建选项 - 常规"部分,并设置这些属性:
- 确认方法已设置为指数平滑。
- 确认模型类型设置为简单。
- 单击保存。
- 点击运行全部
。
- 在 "输出和模型"窗格中,点击名称为 "的输出结果 [men $TS-men] v 的时间图。 日期来查看图表。在散点图中, 男 表示实际数据, $TS-men 则表示时间序列模型。
图 3。 简单指数平滑法模型 实际上,虽然简单模型确实显示了渐进(并且十分冗长的)上升趋势,但它并未考虑季节性。 您完全可以拒绝此模型。
现在试试霍尔特线性模型。 这至少应该比简单模型更好地模拟趋势,尽管它也不太可能捕捉到季节性。
- 双击Men(时间序列)节点并设置这些属性:
- 展开 "构建选项 - 常规"部分。
- 将模型类型设为霍尔特线性趋势。
- 单击保存。
- 点击运行全部
。
- 在 "输出和模型"窗格中,点击名称为 "的输出结果 [men $TS-men] v 的时间图。 日期来查看图表。
霍特模型显示的上升趋势比简单模型更平滑,但它仍不考虑季节性因素,因此您也可以忽略此模型。
图 4: 霍特线性趋势模型 随着时间的推移,男装销售散点图建议您使用同时包含线性趋势和乘法季节的模型,您可以恢复最初的男装销售散点图。 因此 Winters 模型才是更适合的备选方案。
- 双击Men(时间序列)节点并设置这些属性:
- 展开 "构建选项 - 常规"部分。
- 将 "型号设置为 "温特斯的乘法。
- 单击保存。
- 点击 “全部运行”
。
- 在 "输出和模型"窗格中,点击名称为 "的输出结果 [men $TS-men] v 的时间图。 日期来查看图表。
看起来好多了。 该模型反映了数据的趋势和季节性。 此数据集的时间跨度为 10 年,并且包含 10 个季节峰值(出现在每年十二月份)。 这 10 个峰值表示与实际数据中的 10 个年度峰值完全匹配的预测结果。
但此结果同时突出了“指数平滑法”步骤的局限性。 查看上下峰值,存在未考虑的重要结构。
如果您主要关注的是对具有季节性差异的长期趋势建模,那么指数平滑法可能是一个不错的选择。 要建立像这样更复杂的结构模型,需要考虑使用 ARIMA 程序。
图 5. 温特斯乘法模型
查看进度
下图说明了该流。 现在,您可以建立一个 ARIMA 模型了。

任务 5:建立 ARIMA 模型
借助 ARIMA 过程,您可以创建一个自回归综合移动平均值 (ARIMA) 模型,该模型适合精细调整的时间序列建模。
ARIMA 模型构建趋势和季节成分的方法比构建指数平滑模型更复杂,并新增了在模型中包含预测变量的优势。
继续以想要开发预测模型的目录公司为例,你已经看到该公司是如何收集男装月度销售数据的,以及可用于解释部分销售变化的几个序列。 预测变量可包括:邮递的产品目录数和产品目录的页数、开通的订购热线数目、印刷广告投入额以及客户服务代表人数。
这些预测变量是否对预测都有用? 包含预测变量的模型是否优于不包含预测变量的模型? 使用 ARIMA 程序,您可以创建一个带有预测因子的预测模型,看看与不带预测因子的指数平滑模型相比,预测能力是否有显著差异。
使用 ARIMA 方法,您可以通过指定自回归、差分和移动平均的阶数,以及这些成分的季节性对应变量,对模型进行微调。 手动确定这些成分的最佳值是一个耗时的过程,需要反复试验,因此在本示例中,您指定由专家建模器为您选择一个 ARIMA 模型。
接下来,您可以将数据集中的其他一些变量视为预测变量,从而建立一个更好的模型。 最有用的预测指标是邮寄目录的数量(mail
)、目录的页数(page
)、开放订购的电话线数量(phone
)、印刷广告的花费(print
)和客户服务代表的数量(service
)。
请按照以下步骤建立 ARIMA 模型:
- 双击 "类型"节点,设置其属性。
- 确认邮件、页面、电话、打印和服务字段的角色已设置为输入。
- 确认男性角色已设置为 "目标"。
- 将所有其余字段的角色设置为 "无"。
- 单击保存。
- 双击Men(时间序列)节点并设置这些属性:
- 展开 "构建选项 - 常规"部分。
- 将方法设置为专家建模器。
- 将 "型号设置为 "仅 ARIMA 模型。
- 选择专家建模器考虑季节性模型选项。
图 6. 只选择 ARIMA 模型 - 单击保存。
- 点击 “全部运行”
。
- 在 "输出和模型"窗格中,单击名称为men的模型以查看模型详细信息。
- 在 "模型"页面,单击 "目标"栏中的 "男性"。
- 单击型号信息页面。 注意专家建模器如何仅选择了 5 个指定预测变量中的 2 个作为模型的重大预测变量。
图 7. 专家建模器可选择两个预测变量 - 关闭两个模型窗口。
- 在 "输出和模型"窗格中,点击名称为 "的输出结果 [men $TS-men] v 的时间图。 日期来查看图表。
比前一模型有所改进,此模型可以捕捉大型的下降峰值,并将其保持为当前最适合的值。
图 8. 包含指定的预测变量的 ARIMA 模型 接下来,您可以进一步完善模型,但从这一点来看,任何改进都可能微乎其微。 您已经确定带预测因子的 ARIMA 模型更可取,因此使用该模型来预测来年的销售额。
- 关闭图形窗口。
- 双击Men(时间序列)节点并设置这些属性:
- 展开模型选项部分。
- 选择 "将记录扩展到未来"选项,并将值设置为 "
12
。 - 选择计算输入的将来值选项。
- 单击保存。
- 点击 “全部运行”
。
- 在 "输出和模型"窗格中,点击名称为 "的输出结果 [men $TS-men] v 的时间图。 日期来查看图表。
预测看起来不错。 正如预期的那样,12 月份的销售高峰过后,销售水平恢复到正常水平,下半年呈现稳步上升趋势,总体销售情况好于上一年。
查看进度
下图是使用 ARIMA 模型绘制的图表。

目录
您已成功地对复杂的时间序列建模,不仅包含上升趋势,还包含季节性变化和其他变化。 您还可以看到,如何通过试用和错误更加接近准确的模型,然后使用该模型预测未来的销售情况。
在实际操作中,您需要根据实际销售数据的更新情况重新应用该模型,例如每月或每季度更新一次,并生成更新的预测。
后续步骤
现在您可以尝试其他 SPSS® Modeler 教程了。