想象你是深巷面馆里守着一锅老汤的厨师。每天打烊前,你都会舀一勺尝尝,然后决定明天要不要加盐。要预测明天的味道,你靠三样本事:一是记住昨天的味道——汤不会一夜之间从清淡变齁咸,这叫自相关;二是记住上次手抖放多盐的教训——意外会有惯性,需要纠正,这叫误差记忆;三是不看绝对咸度,而看“比昨天又咸了多少”——锅底在慢慢收汁,口味基线在漂移,这叫差分。你还有一条铁律:每周五老主顾多,汤要更咸一点,这叫季节性。即使把这一切都记在册子上,你也明白:明天猜得准,明年猜不准——预测越远,心里越没底。这本“老汤账本”,就是时间序列分析里的 ARIMA 与 SARIMA 模型。本文带你从“尝味道”到“写账本”,看懂这套传统方法如何在销售预测中继续发光。
时间序列的看家本领,机器学习建模的对照基准。掌握 ARIMA/SARIMA,你就有了稳定的“兜底方案”,还能读懂数据中的趋势、季节与不确定性——面试与实战都绕不开。
可视化演示
动态演示ARIMA/SARIMA的核心机制,通过架构/数据/状态/性能四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
ARIMA/SARIMA:ARIM ARIMA模型基本原理与三大组 自回归AR组件与移动平均MA组 核心机制可视化 ARIMA/SARIMA整体架构与关键组件
序列特征基础
老厨师要学的是“这锅汤的脾气”。如果汤今天像清水、明天像卤汁、后天烧糊了,任何经验都无从谈起。同样,时间序列建模的第一问是:这条曲线有没有一个“稳定的性格”?如果序列的均值(基础咸度)和方差(咸淡起伏程度)不随时间的起点而改变,我们就说它是平稳的。平稳,是 ARIMA 能施展记忆术的前提。
为什么平稳如此重要?因为 ARIMA 的本质是“用过去的规律推未来”。如果序列本身在漂移——汤越煮越咸、锅底越收越浓——昨天的规则今天就失效了。判断平稳性最直观的办法是看曲线是否围绕一条水平线上下波动;更严谨的做法是用单位根检验,比如 ADF 检验,它相当于问厨师:“汤的性格有没有越走越偏?”
如果汤的性格变得太快,厨师还有一招:不看“今天多咸”,而看“今天比昨天又咸了多少”。这个“又”字,就是差分。对非平稳序列先做一阶差分,把它变成“变化量的序列”,往往一下子就安稳了。反过来,如果差分后的序列纯属随机——今天咸一点、明天淡一点且毫无关联——那就是白噪声,像一锅完全失忆的汤,没有任何规律可学,建模到此为止。
回到面馆:厨师把“咸度台账”改写成“每日变化台账”之后,发现这个新序列终于稳定了。于是,他可以在“变化”的基础上,重新谈记忆与教训——这正是通往 ARIMA 的桥梁。
- 今天读数 y_t今天从汤锅里舀出的咸度读数,代表当前时刻的观测值。
- 昨天读数 y_{t-1}昨天同一时刻的咸度读数,是离我们最近的历史记忆。
- 一阶差分 y'_t两者相减得到的“变化量”,是后期建模真正使用的序列。
AR自回归
汤不会一夜之间从清淡变齁咸。厨师的经验是:如果昨天的汤偏咸,今天的汤十有八九还偏咸,只是程度略有收敛。这种“今天的值依赖昨天的值”的直觉,就是自回归(AR)模型:用过去的自己解释现在的自己。
最朴素的 AR(1) 模型只有一句口诀:“今天的味道 = 一个基准水平 + 昨天的味道按 φ 的比例延续 + 一点随机扰动”。系数 φ 是这锅汤的“惯性系数”:φ 接近 1,说明昨天和今天几乎一个样,记忆很长;φ 是负数,说明今天总跟昨天唱反调;|φ| 必须小于 1,否则记忆无限放大,汤的味道会爆炸,这对应数学上的平稳性要求。把记忆扩展到过去 p 天,就得到 AR(p) 模型。
那么 p 取几才算合适?这就要用到偏自相关函数(PACF)。PACF 回答的问题是:“排除昨天、前天……层层传递的间接影响之后,第 k 天前的味道对今天还有没有直接作用?”它就像厨师逐一审问前几天的记录:剔除中间链条后,谁的“直接责任”最大。如果 PACF 在第 p 阶之后突然接近 0(俗称“截尾”),说明记忆只往前延伸 p 天,这就是 p 的选法。
老厨师合上账本:自回归部分解决的是“汤自己有惯性”这一层规律。但账本还有另一半——光记住值还不够,还得记住自己犯过的错。
- 当前值 y_t今天的咸度读数,是我们想预测的对象。
- 常数项 c厨师心中“长期基础咸度”的恒定水平,汤味最终的归宿。
- 记忆项 φy_{t-1}昨天的味道以 φ 的力度延续到今天,φ 越大记性越好。
- 随机扰动 ε_t今天无法预知的意外,比如手一抖多撒了把盐。
MA滑动平均
有一次,厨师手抖多放了二两盐。第二天,他下意识少放了一点,把昨天的失误扳回来。这类“记住上次的意外,并做补偿”的机制,就是滑动平均(MA)模型。它不直接记昨天的咸度,而记昨天的“失误量”——也就是模型上一期的预测误差。
MA(1) 的公式可以读成:“今天的味道 = 基准水平 + 今天的意外 + 昨天意外带来的后续影响”。θ 决定了对昨日失误的补偿力度:若 θ 是负的,昨天咸过头,今天就自动淡一档;若 θ 是正的,昨天的意外会“惯性延续”一段时间。MA 特别擅长刻画一次性冲击——比如某天盐罐打翻了、某天来了个临时大厨——这类冲击不会永久改变汤的性格,但会留下短期的涟漪。
定 q 阶数靠的是自相关函数(ACF)。ACF 记录的是“相隔 k 天的两次读数之间还有多大相关”。如果 ACF 在 q 阶后突然截尾,说明意外的影响只延续 q 天,忘记之后天地清净,这就是 MA(q) 的定阶方式。打个比方:AR 是“汤的记忆”,MA 是“失误的记忆”;PACF 用来审问“谁直接影响今天”,ACF 用来追踪“错误的涟漪传多远”。
面馆的账本越来越完整了:一页记“味道的惯性”,一页记“失误的涟漪”。可厨师还面临一个烦恼——锅底在慢慢收汁,口味基线一路漂移。他需要把两页账本和“差分”这味调料放在一起熬。
- 今日扰动 ε_t今天调味时的随机误差,是全新的、没法提前知道的意外。
- 昨日误差残留 θε_{t-1}昨天的失误在今天的补偿或延续,θ 控制补偿力度。
- 完整方程基准加上今日扰动和昨日误差的影响,构成今天的味道。
ARIMA整合
ARIMA 就是把三样东西炖进一锅:AR(对过去值的记忆)、I(差分,把非平稳驯成平稳)、MA(对过去失误的记忆)。记成 ARIMA(p,d,q),就像一张配方卡:p 是记几天的味道,d 是差几次分,q 是记几天的失误。
差分在这里真正登场。如果汤越煮越咸(趋势),我们不直接预测咸度,而是先做 d 次差分得到“变化量的变化量”,再对这个稳定序列谈 AR 和 MA。d 的本质是“剥掉几层趋势外衣”:d=1 对付线性趋势,d=2 对付加速变化,但绝大多数业务数据一次差分就够——剥多了,连规律本身也被剥没了。
建模有五步:第一步,检验平稳性,不平就差分;第二步,用 ACF/PACF 或信息准则初定 p、q;第三步,拟合参数;第四步,诊断残差,确认没有遗漏规律;第五步,预测并给出区间。这套流程像厨师试菜:先确认汤的性格稳定,再定菜谱,按谱下料,最后尝一口确认“没有意外的味道”。整合后,ARMA 的公式整体作用在差分后的序列上。
厨师长舒一口气:有了 ARIMA,普通日子的咸度基本能拿捏。可每到周五,老主顾扎堆,汤总得偏咸两分——账本上有一股“每周准时”的力量,普通 ARIMA 学不会。这就到了 SARIMA 登场的时候。
- 差分序列 y'_t对原始序列做 d 次差分后的结果,是模型真正“谈判”的对象。
- 自回归部分过去 p 期变化量的加权记忆,权重由 φ_i 决定。
- 滑动平均部分过去 q 期误差的补偿,权重由 θ_j 决定。
- 完整方程基准加上自回归记忆、误差补偿和今日扰动,构成对变化量的预测。
SARIMA扩展
面馆有个铁律:周五多放盐,周一少放盐。这股“每周重复”的节奏,就是季节性。普通 ARIMA 只记得“昨天”和“前几天的失误”,却不知道“去年的今天”或“上周五”同样重要。SARIMA 就是在 ARIMA 的基础上,再叠加一套“同期记忆”:既有普通差分,也有季节差分;既有普通 AR/MA,也有季节 AR/MA。
SARIMA 的完整记法是 SARIMA(p,d,q)(P,D,Q)_s。括号里的 p,d,q 是“日常记忆”,第二个括号的 P,D,Q 是“季节记忆”,s 是周期长度——月度数据 s=12(一年12个月),日度数据 s=7(一周7天)。季节差分 D 的含义是“和去年同期比,今年变化了多少”,它专门对付“每年同月都更旺”这类规律。
公式里的季节自回归项 Φ y'_{t-s},读作“去年同月的变化量,以 Φ 的力度影响今年本月”;季节滑动平均项 Θ ε_{t-s} 则是“去年同期的意外,给今年一个提示”。把日常记忆和季节记忆写在同一本账上,模型才真正看得懂“周五效应”和“年货季”。识别 s 的办法很简单:画出按月或按周聚合的曲线,看峰值是否周期性地重复——就像厨师发现每周五客人变多一样。
现在,老厨师连“去年腊月那锅咸到发苦的汤”都记进账本了。但他还不敢立刻挂牌营业——他得先尝一口预测剩下的“余味”,确认没有漏掉任何规律。
- 处理后序列 y'_t经过普通差分和季节差分双重处理的序列,新账本的书写对象。
- 非季节记忆过去 p 期变化量和 q 期误差的常规记忆,与 ARIMA 相同。
- 季节自回归过去 P 个“同期”的值,如去年、前年同月的变化量。
- 季节滑动平均过去 Q 个“同期”的误差提示,如去年同月的意外。
- 完整方程把日常项和季节项拼在同一本账本上,形成 SARIMA 的完整配方。
模型诊断
厨师有个职业习惯:预测明天的咸度后,他会把实际味道和预测值之间的差(残差)端起来闻一闻。如果残差里还残留着“可辨认的规律”——比如总是逢周五就偏咸——说明模型还没学透;如果残差纯属随机、淡而无味,说明该记的都记下了,这就是“残差白噪声”。
判断残差是否白噪声有两条路子:一是看残差的 ACF 图,如果几乎全部落在置信带内,没有显著的钉子,就算干净;二是用 Ljung-Box 检验,它给出一个 p 值,p 值大(比如大于 0.05)说明“没有证据表明残差还有相关”——相当于化验单显示汤里没有异常添加物。
另一个问题是:p、q 到底取多大?加参数总能降低训练误差,但会把噪声也背下来,这叫过拟合,好比厨师把 100 天前某个客人随口一句“淡了”也记进配方,反而干扰了判断。赤池信息准则(AIC)就是来当裁判的:它把“拟合得好不好”和“参数多不多”放在同一个天平上,惩罚花哨的模型。选 AIC 最小的模型,就是在“记得牢”和“不过度设计”之间找平衡。
残差干净、AIC 叫好,厨师的菜谱终于可以贴到墙上。可明天开店前,他还要回答老板娘一句话:“明年的这时候,咸度能保证吗?”答案显然不能——预测越远,心里越没底。
- 对数似然 ln(L)模型对当前数据解释能力的指标,似然越大说明模型越贴合数据。
- 损失项 -2ln(L)把“解释力”翻转为损失,让数值越小代表越贴合。
- 复杂度惩罚 2k参数个数 k 乘以 2,参数越多、惩罚越重,防止过度设计。
- 完整准则贴合损失加复杂度惩罚,取最小者为优选模型。
预测区间
面对“明天有多咸”和“明年今天有多咸”这两个问题,厨师的底气完全不同:明天只要原料不变、火候稳定,误差很小;明年则要叠加 365 天里无数个意外,谁也不敢打包票。时间序列预测的置信区间,正是这种“越远越虚”的量化表达。
点预测只是区间的中心——它是模型给出的最佳猜测。而置信区间则回答:“真实值以 95% 的可能性落在哪个范围?”关键规律是:误差会随预测步数 h 累积。每多预测一步,就多背一个随机扰动,方差近似按 h 线性增长,于是区间半宽按根号 h 变宽。所以才会有“扇形图”:紧贴今天的地方很窄,越往后越宽,像一把张开的折扇。
公式里的 z 是标准正态分布的分位数:95% 置信水平对应约 1.96,90% 对应 1.645。它决定了扇子的“开度”。σ̂ 是单步预测误差的标准差估计,相当于厨师对“自己手抖程度”的日常评估。把中心、分位数、误差标准差和步数累积乘在一起,就得到了诚实且有边界的预测区间。
老板娘看着那把“折扇”满意地点点头:“知道什么时候敢打包票,什么时候该留余地,这才叫专业。”现在,这套手艺要离开深巷,开进连锁店了。
- 点预测中心 ŷ_{n+h}第 h 步前方的点预测,是区间的对称中心。
- 正态分位数 z_{1-α/2}由置信水平决定的分位数,95% 时约为 1.96。
- 单步误差 σ̂一步预测误差的标准差估计,刻画厨师日常手抖程度。
- 累积因子 √h误差随步数 h 按平方根累积,这一步让区间越扇越开。
实战应用
老厨师开了连锁分店。他不再只为一锅汤操心,而要同时预测 50 家门店未来一个月的销量:备多少面粉、卤多少牛肉、雇多少人手。这就是 ARIMA/SARIMA 最常见的舞台——销售预测与需求预测。数据按月汇总、天然带旺季淡季,SARIMA 简直是为它量身定做。
实战工作流通常是:拿到三到五年的历史销售数据,清洗异常值、对齐节假日,做平稳性检验;然后用 ACF/PACF 和 AIC 初定 p、d、q 与季节阶数;接着用工具库(如 Python 的 statsmodels)拟合 SARIMA;最后在留出的“未来一段真实数据”上评估效果。行业里有个心照不宣的做法:任何复杂的深度学习模型,都要先赢过 SARIMA 这个“老厨师”才算有说服力——它参数少、可解释、训练快,是标准的基准线。
评估指标常用 RMSE(均方根误差):把每个样本的真实值与预测值的差平方、求平均、再开方。它像一把统一的尺子,量出“平均每次预测偏出去多远”。RMSE 对大误差特别敏感,适合销售这种“一次备货错了就亏一整车”的场景。此外 MAPE(平均绝对百分比误差)则更直观——“平均偏了百分之几”,适合向业务方汇报。
从深巷一口锅,到连锁五十家店,老厨师的账本方法论始终没变:稳定性格、记住值、记住失误、看见周期、保持谦逊。这份“传统手艺”,至今仍是数据科学工具箱里最锋利的一把刀。
- 残差 y_i - ŷ_i第 i 个样本的真实销量减去预测销量,是判断偏差的起点。
- 平方放大残差平方处理,让大偏差被格外惩罚,同时避免正负相抵。
- 均方误差对所有样本的平方误差求平均,得到整体平均偏差水平。
- 开方还原量纲开根号让指标回到“份/月”等单位,方便和业务直接对话。
AI 应用场景
电商月度销售预测
阶段:模型训练与预测
解决的问题:传统做法靠运营拍脑袋或“同比去年增长 10%”,既看不透趋势拐点,也接不住大促后的回落惯性。SARIMA 自动完成趋势分解、季节记忆和误差补偿,把“凭感觉”变成“有账本”。
具体案例:某服装电商积累 5 年 60 个月的销售额,年中有 618、年末有双 11。用 SARIMA(2,1,1)(1,1,1,12) 建模,预测未来 3 个月销量并给出 95% 区间,采购按区间上沿备货、财务按下沿做保守预算。
连锁便利店日需求预测
阶段:特征工程与需求预测
解决的问题:生鲜牛奶保质期短,备少了缺货流失顾客,备多了到期报废。日粒度数据带有明显的“周季节”(周末销量高),普通模型抓不住 7 天节律。
具体案例:对某连锁便利店每家门店的牛奶日销量单独建立 SARIMA(1,1,1)(1,0,1,7) 模型,输出未来 7 天逐日点预测与区间,门店采购员按区间上沿下订单,报废率下降约 18%。
酒店入住率预测
阶段:数据准备与预测
解决的问题:酒店定价与人力排班都依赖未来数周的需求预判;入住率受周末和节假日双重周期影响,线性回归难以同时刻画两套节律。
具体案例:某连锁酒店用季度数据训练 SARIMA 模型,以周(s=7)为季节周期,预测未来 14 天入住率。前台根据区间宽度决定是否开启“当日特价”,旺季收益提升约 8%。
Python 演示
# -*- coding: utf-8 -*-"""SARIMA 月度销售预测演示"""import numpy as npimport pandas as pdfrom statsmodels.tsa.statespace.sarimax import SARIMAX def main(): # 1. 生成 10 年的月度销售序列: 趋势 + 年度季节 + 噪声 np.random.seed(42) n = 120 months = np.arange(n) trend = 0.12 * months season = 15 * np.sin(2 * np.pi * months / 12) noise = np.random.normal(0, 3, n) sales = 100 + trend + season + noise index = pd.date_range("2014-01-01", periods=n, freq="MS") series = pd.Series(sales, index=index) # 2. 前 9 年训练, 最后 12 个月测试 train = series.iloc[:-12] test = series.iloc[-12:] # 3. 拟合 SARIMA(1,1,1)(1,1,1,12) model = SARIMAX(train, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12)) result = model.fit(disp=False) # 4. 预测未来 12 个月并取 95% 置信区间 fc = result.get_forecast(steps=12) mean = fc.predicted_mean ci = fc.conf_int(alpha=0.05) # 5. 输出预测与真实值的对比误差 rmse = float(np.sqrt(np.mean((test.values - mean.values) ** 2))) print("预测均值:", mean.round(2).tolist()[:6]) print("RMSE:", round(rmse, 2)) if __name__ == "__main__": main()
series = pd.Series(sales, index=index)把 NumPy 数组包装成带时间索引的序列,方便按月份切片和对齐。train = series.iloc[:-12]用前 9 年训练,留最后 12 个月当“考场”,防止模型作弊。SARIMAX(train, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))声明模型结构:日常项 p=1,d=1,q=1,季节项 P=1,D=1,Q=1,周期 s=12。result = model.fit(disp=False)让模型在训练数据上估计所有系数,不打印迭代过程。fc = result.get_forecast(steps=12)生成未来 12 步的预测对象,相当于一次性算出未来一年的账。mean = fc.predicted_mean取出每一步的点预测值,即“扇面”的中心轴线。ci = fc.conf_int(alpha=0.05)取出 95% 预测区间,展示“越远越宽”的不确定性。rmse = float(np.sqrt(np.mean((test.values - mean.values) ** 2)))在测试集上计算 RMSE,量化平均偏差。
常见误区
误区觉得序列“不平稳就多差几次”,反正 d 越大处理得越干净,折腾到平稳为止。
正解一次差分通常就足以消除趋势,过度差分会把真实规律也洗掉,让信号变成噪声,相当于厨师为求汤清,反复换水把鲜味全煮没了。判断是否还需要差分,应借助 ADF 等单位根检验,而不是凭感觉多次操作。
为何常见:“平稳”听起来像“更干净”,于是误把反复处理当成打磨,忽略了建模要的是保留规律而非消灭一切波动。
误区p、q 加到 5、6 甚至更大,觉得参数越多、拟合越精细,预测当然越准。
正解真实的时间序列记忆通常是有限的——没人会记得 100 天前某次失误的细节。阶数过高会背下噪声,即过拟合,在训练集上漂亮、在测试集上翻车。AIC/BIC 正是用来惩罚这种“记太多”的模型。
为何常见:训练误差随阶数单调下降的直观体验,让人误以为“更贴合历史”就等于“更会预测未来”。
误区认为 ARIMA 能预测任何数据,给它足够多的历史,它就能学到一切规律。
正解ARIMA 本质是线性模型,擅长捕捉平稳化后的线性自相关;对非线性交互、突变拐点、外部变量冲击,它无能为力。数据里有促销、天气等外生因素,应该考虑 ARIMAX 或更复杂的模型。老厨师的经验再丰富,也算不准突然改行做火锅的店。
为何常见:古典教科书把 ARIMA 讲得神乎其神,加上名字里带“整合”显得高深,放大了它的能力边界。
误区把回归模型里“上下等宽”的置信带直接套到时间序列上,以为未来 30 步的区间和明天一样宽。
正解时序预测的误差会随步数累积,区间半宽按根号 h 增长,呈现扇形。只报点预测不报区间,等于只告诉老板“明天大约咸”,却不告诉他“一个月后可能齁死也可能没味”。
为何常见:大多数教程的配图只画了中心线,业务汇报也习惯只给一个数,区间概念被长期忽视。
误区觉得 SARIMA 只是多两个参数,直接用 ARIMA 拟合带周期的数据差别不大。
正解如果序列存在稳定周期而模型不设季节项,模型会把“每年腊月的峰值”当成无法解释的冲击,残差里每个周期都残留强相关,诊断必然不通过。正确做法是用季节差分和季节 AR/MA 显式建模,把周期写进配方。
为何常见:季节周期肉眼可见却容易被“数据预处理”环节忽略,尤其是初学阶段还没养成画 ACF 检查残差的习惯。
面试题
Q1. 在 ARIMA(p,d,q) 中,参数 d 表示什么?
- A.自回归项的阶数
- B.差分运算的次数← 正确答案
- C.滑动平均项的阶数
- D.季节循环的周期
答案:B。ARIMA 的三个字母中,I 代表整合(Integrated),对应的 d 就是差分次数,用来把非平稳序列变平稳。A 是 p 的含义,C 是 q 的含义,D 是 SARIMA 中 s 的含义。想象厨师处理“越煮越咸”的趋势——差分几次就剥几层趋势外衣,这就是 d。
Q2. AR(1) 模型的系数 φ 接近 1 时,意味着什么?
- A.序列是纯粹的白噪声
- B.今天与昨天几乎无关
- C.今天会明显延续昨天的状态← 正确答案
- D.模型一定会预测失败
答案:C。φ 是“昨天的味道延续到今天的力度”,接近 1 说明惯性极强,今天的值几乎复刻昨天,汤的味道一天一变不了多少。白噪声要求序列前后无关,与 φ≈1 矛盾;“一定失败”也太绝对,强惯性同样可以被建模。
Q3. 下列哪个序列最接近白噪声的特征?
- A.稳步上升的销售曲线
- B.每月固定重复的周期
- C.前后无关的随机波动← 正确答案
- D.严格等于常数的直线
答案:C。白噪声意味着序列完全失忆:每个点都是独立随机波动,任何历史信息都无法预测下一个点。稳步上升和固定周期都存在可学规律,常值直线则是确定性信号,三者都不构成“纯随机”。就像一锅完全随机的汤,昨天咸淡和今天毫无关系。
Q4. 判断 MA(q) 模型的阶数时,通常观察什么特征?
- A.ACF 在 q 阶后截尾← 正确答案
- B.PACF 在 q 阶后截尾
- C.ACF 呈缓慢拖尾
- D.PACF 呈缓慢拖尾
答案:A。MA(q) 描述“失误的涟漪”,误差的影响只延续 q 天,所以 ACF(相关性随滞后的衰减)会在 q 阶后突然归零,即截尾。PACF 截尾指向 AR(p);ACF 拖尾则是 AR 或 ARMA 的线索。定阶口诀是:PACF 截尾选 AR,ACF 截尾选 MA。
Q5. 对月度销售数据做 SARIMA 建模时,季节周期 s 通常取多少?
- A.4(季度数据周期)
- B.7(周数据周期)
- C.12(年度循环月数)← 正确答案
- D.30(每月天数近似)
答案:C。月度数据的年度季节效应逐月重复,一年 12 个月,所以 s=12,对应“今年 1 月和去年 1 月相关”。s=4 适用于季度数据,s=7 适用于日度数据的周季节。选对 s,等于告诉模型该翻哪一页旧账本。
Q6. 关于 AIC,下列说法正确的是?
- A.AIC 越小说明过拟合越严重
- B.AIC 越小说明拟合与复杂度的权衡越优← 正确答案
- C.AIC 越小说明残差一定是白噪声
- D.AIC 越小说明样本数量越充足
答案:B。AIC = -2ln(L) + 2k,前半项奖励拟合好,后半项惩罚参数多。取最小值时,模型在“解释数据”和“保持简洁”之间达到平衡。AIC 只用于模型间相对比较,不保证残差白噪声,也不反映样本量本身。
Q7. 哪些方法可用于判断模型残差是否为白噪声?
- A.观察残差 ACF 是否显著相关← 正确答案
- B.借助 Ljung-Box 检验的 p 值← 正确答案
- C.比较残差均值是否接近零← 正确答案
- D.直接增大 p 和 q 的阶数
答案:ABC。残差白噪声的标准是“没有任何可学规律”:ACF 无明显尖峰、Ljung-Box 检验 p 值偏大、均值接近零且无系统模式。增大 p、q 是在调整模型结构而非诊断残差,属于“开药方”而不是“做体检”。
Q8. 随着预测步数 h 增大,ARIMA 的预测区间通常会怎样变化?
- A.始终保持不变
- B.按根号 h 的比例逐渐变宽← 正确答案
- C.先变宽再变窄
- D.随 h 增大反而变窄
答案:B。每多预测一步都要叠加一个新的随机扰动,误差方差近似线性累积,所以区间半宽按根号 h 增长,形成扇形。区间不可能收窄,因为信息只会随距离减少。这就像问厨师“明年今天多咸”——他只能给出一个比明天宽得多的范围。
Q9. 关于差分操作,下列说法正确的有哪些?
- A.差分能让带趋势的序列变平稳← 正确答案
- B.差分次数越多模型一定越稳定
- C.过度差分会损失真实信息← 正确答案
- D.SARIMA 还需考虑季节差分← 正确答案
答案:ACD。差分通过“相邻相减”剥离趋势,是让非平稳变平稳的常用手段;但差分次数不是越多越好,过度差分会把长期规律一并洗掉,如同反复换水煮没了鲜味;季节差分专门处理周期性的漂移。差分的目的不是“数值稳定”,而是“保留规律的同时消除趋势”。
Q10. 同一训练集上,模型 A 的 AIC=1200,模型 B 的 AIC=1180,以下结论正确的是?
- A.模型 A 一定比模型 B 更准确
- B.模型 B 的拟合与复杂度权衡更优← 正确答案
- C.两个模型的残差必为白噪声
- D.AIC 越小说明过拟合越严重
答案:B。AIC 是相对比较准则,越小代表“拟合度与复杂度”的综合权衡越好,所以 B 优于 A,但不代表 B 已是最佳或绝对无缺;更不保证残差白噪声。D 恰好说反,AIC 的惩罚项正是用来抑制过拟合的。选模型时要结合残差诊断和业务验证,而不是只看一个数字。