数量方法 Quantitative Methods
Level II | Readings: R1-R4
R1: 多元回归 Multiple Regression
Reading 1 | Modules 1.1–1.4 | LOS 1.a–1.m
Level I 的 简单线性回归 已介绍 OLS 估计、四条经典假设、SST = SSR + SSE、、SEE,以及简单回归下 的关系。
L2 将模型扩展到 个自变量,新增偏斜率解释、模型选择、联合检验,系统讨论假设违背的检验与修正,并引入因变量为二元变量时的 logistic 回归。
graph LR ROOT((多元回归<br/>Multiple Regression)) ROOT --- A["模型与解释<br/>Model & Interpretation"] A --- A1("偏斜率系数 Partial Slope") A --- A2("p-value 判显著性") A --- A3("预测 Prediction") ROOT --- B["模型选择<br/>Model Selection"] B --- B1("Adjusted R²") B --- B2("AIC / BIC") B --- B3("联合 F 检验 Joint F-test") ROOT --- C["设定错误<br/>Misspecification"] C --- C1("遗漏变量 Omission") C --- C2("形式与标度 Form & Scaling") C --- C3("错误合并数据 Pooling") ROOT --- D["三大假设违背<br/>Assumption Violations"] D --- D1("异方差 Heteroskedasticity") D --- D2("序列相关 Serial Correlation") D --- D3("多重共线性 Multicollinearity") ROOT --- E["扩展<br/>Extensions"] E --- E1("影响力分析 Influence Analysis") E --- E2("哑变量 Dummy Variables") E --- E3("Logistic 回归")
1.1 多元回归能解决什么问题
| 用途 | 含义 | 例子 |
|---|---|---|
| 识别关系 Identify relationships | 探究哪些因素驱动某个变量 | 检验 Fama-French 三因子(市场、规模、风格)是否足以解释小盘股横截面收益 |
| 预测变量 Forecast variables | 预测数值或事件发生的概率 | 预测公司现金流;预测违约概率 |
| 检验既有理论 Test existing theories | 验证某个理论主张是否成立 | 检验无形资产占比高的发债主体是否有更高的信用风险溢价 |
从某货币的历史日价格中寻找系统性规律,研究的是单变量自身的时序模式,应使用自回归或时间序列模型。多元回归用若干不同的解释变量解释一个因变量。
1.2 模型设定与系数解释
多元线性回归模型:
其中:
- = 因变量第 个观测值(dependent variable)
- = 第 个自变量的第 个观测值(independent variable)
- = 截距(intercept)
- = 第 个自变量的斜率系数(slope coefficient)
- = 误差项(error term),总体层面的扰动,不可观测
- = 观测值个数, = 自变量个数
OLS 最小化残差平方和 ,得到拟合方程 ,残差 。
是总体误差项,无法观测; 是估计模型后得到的残差。BP 和 BG 检验使用残差 。
偏斜率系数 Partial Slope Coefficient
在其余自变量不变时, 变动 1 单位, 的预期变动 。因此,多元回归的斜率系数称为偏斜率系数。截距是在所有自变量取零时 的取值。
同一个 ,单变量回归下的系数为 4.5:
加入 之后变成 2.5:
当 影响 且与 相关时,单变量模型中 的系数会吸收一部分 的影响;加入 后, 的系数从 4.5 降至 2.5。系数变化也可能来自抽样波动或设定改变,不能据此认定存在多重共线性。
系数解释:Arnott & Asness (2003)
用标普 500 成分股的滞后股利支付率(PR)和收益率曲线斜率(YCS,10 年期国债收益率减 3 个月期国库券收益率)解释未来 10 年真实盈利增长(EG10),46 个年度观测:
Variable Coefficient Standard Error Intercept −11.6% 1.657% PR 0.25 0.032 YCS 0.14 0.280 三个变量都以百分数计量,系数解释使用「百分点」:
- 截距:若支付率与曲线斜率同时为零,预期后续 10 年真实盈利增长为 −11.6%。
- PR 系数:保持 YCS 不变,支付率每上升 1 个百分点,预期盈利增长上升 0.25 个百分点。
- YCS 系数:保持 PR 不变,曲线斜率每上升 1 个百分点,预期盈利增长上升 0.14 个百分点。
系数乘以变量的存储单位。支付率从 50 变成 51 是上升 1 个百分点;若按相对变化算成 50→50.5,代入值会少一半。
多元回归输出会给出每个偏斜率系数的 p-value,据此逐行判断是否拒绝 。p-value 的定义和判定规则见 L1 假设检验。
1.3 假设与残差诊断
多元回归有五项假设:
- 因变量与各自变量之间是线性关系
- 残差服从正态分布
- 残差方差恒定(同方差 homoskedasticity)
- 残差之间互不相关
- 自变量非随机,且任意两个或多个自变量之间不存在精确线性关系
精确线性关系会使系数无法识别,软件不能估出唯一解。多重共线性指高度但不精确的相关,模型仍可估计,但系数方差增大,估计不精确。
残差图只提供初步迹象,不能代替检验。BP 检验用于异方差,DW 和 BG 用于序列相关。VIF 只有经验阈值,没有原假设、抽样分布或 p-value,属于诊断指标;它也不涉及自变量是否随机。
Q-Q 图(normal quantile-quantile plot)用于检查残差的正态性:将标准化残差分位数对正态分布理论分位数作图。残差服从正态分布时,各点应落在对角线上。不同偏离形态的含义如下:
| Q-Q 图形态(横轴为理论分位数) | 含义 |
|---|---|
| 左尾低于参考线且右尾高于参考线 | 厚尾(fat tails) |
| 两端朝同一方向弯 | 偏度(skewness) |
| 右尾向上翘出 | 右偏 |
| 点基本落在对角线上 | 与正态分布相容 |
写字楼租金模型的残差诊断
191 个观测,用房龄、距地铁站距离、步行范围内餐厅数解释每平方英尺月租金:
Coefficient Estimate Std. Error (Intercept) 44.67 2.01 Age −0.31 0.05 Distance −0.01 0.001 Restaurant 1.29 0.29 三张诊断图的判读如下:
图 看什么线索 本例结论 不能证明什么 残差 vs 预测值 有无方向性趋势;有无喇叭口张开 围绕零线随机散布 → 同方差看起来成立 不能证明残差正态 残差 vs 各自变量 有无系统性关系;离散变量会呈竖条带 均无系统关系;餐厅数呈竖条带源于该变量取离散值 不能证明残差独立 正态 Q-Q 图 两端是否弯离参考线,朝哪个方向 中段贴合,右尾明显向上翘出 → 厚尾且右偏,正态性不成立 不能证明同方差 前两张图支持相应假设,第三张图否定正态性假设。
1.4 模型拟合优度
ANOVA 表的结构与 L1 相同,但自由度随自变量个数改变:
| Source | df | SS | MS = SS/df |
|---|---|---|---|
| Regression | SSR | MSR | |
| Error | SSE | MSE | |
| Total | SST | — |
L1 简单回归的回归自由度为 1,误差自由度为 。L2 多元回归的回归自由度为 ,误差自由度为 。简单回归是 的特例。MSE 与 SEE 的分母也随之变化:
本文用 SSR 表示回归平方和(已解释部分),SSE 表示残差平方和(未解释部分)。部分统计软件和英文教材用 RSS 表示 residual sum of squares,即本文的 SSE。判断时应依据列名和 的关系。
加入自变量时,即使新变量不显著, 也几乎不会下降。高 可能只是变量较多造成的过拟合(overfitting)。调整后的 (adjusted )对变量个数施加惩罚:
其中 = 观测值个数, = 自变量个数。
它有三项性质:
- 。
- 加入新变量时 不会下降, 可升可降。
- 新增一个变量且其系数 时, 下降;成批加入变量时,用联合 F 检验比较。
只在同一因变量下对变量个数施加惩罚,不能说明模型设定正确,也不能说明斜率系数显著。
计算 与
60 个月数据,5 个自变量,SST = 460,SSE = 170。
再加 4 个自变量(共 9 个), 升至 65.0%:
升了 2 个百分点, 从 59.6% 降到 58.7%,因此选择 5 变量模型。
AIC(Akaike’s Information Criterion,赤池信息准则)与 BIC(Schwarz’s Bayesian Information Criterion,贝叶斯信息准则)用于比较同一因变量下的竞争模型,两者都是越低越好:
预测(forecasting)用 AIC,拟合优度(goodness of fit)用 BIC。两式只差惩罚项:AIC 为 ,BIC 为 。样本量 时,,BIC 对过拟合的惩罚更重,倾向于选择较精简的模型。
租金模型的逐步扩充
自变量 SSR SSE Adj. AIC BIC Age 1 3,318.9 32,627.3 9.23% 8.75% 985.9 992.4 Age + Distance 2 20,946.1 15,000.2 58.27% 57.8% 839.4 849.2 Age + Distance + Restaurants 3 22,395.6 13,550.5 62.30% 61.7% 822.0 835.0 三变量模型的 AIC(822.0)和 BIC(835.0)最低, 最高,因此预测和拟合都选择该模型。AIC 与 BIC 指向不同模型时,预测用 AIC,拟合用 BIC。
1.5 联合假设检验 Joint F-test
同时检验多个系数是否为零时,使用嵌套模型(nested models)的 F 检验:
- 无约束模型(unrestricted / full model):变量较多
- 约束模型(restricted model):变量是无约束模型的子集
检验 ,对立 或 。统计量:
其中:
- 、 = 约束模型、无约束模型的残差平方和
- = 被约束模型剔除的变量个数
- = 完整模型的自变量个数
- 自由度为 和
若 ,拒绝 。该统计量衡量新增 个变量带来的 SSE 降幅。回归的联合检验和整体显著性检验只看上尾;这不是 F 分布的普遍性质,例如检验两个方差是否相等时可以采用双尾检验。
联合检验租金模型的后两个系数
Model SSE Unrestricted 3 13,550.64 191 Restricted 1 32,627.29 191
自由度为 2 和 187,5% 临界值为 3.04。,拒绝 ,被剔除的两个变量中至少有一个系数显著不为零。
整体显著性检验是联合 F 检验的特例。当约束模型剔除全部自变量时(),约束模型没有解释力,即 ,公式变为:
对应的原假设为 。自变量之间通常相关,逐个做 t 检验会累积第一类错误,也无法判断一组变量整体是否有解释力。
1.6 预测 Prediction
预测时用全部系数,不管显著与否
若模型为 ,且检验发现 不显著,预测时仍代入 : 若剔除 ,必须重新估计模型,因为 的系数也可能改变。不能直接从原方程删除不显著项。
预测标普 500 的真实盈利增长
沿用「模型设定与系数解释」一节的模型,支付率 50%、曲线斜率 4%:
1.7 模型设定错误 Model Misspecification
模型设定要求自变量有经济学依据,模型精简(parsimonious),函数形式正确,样本外表现稳健,并且不违反回归假设。
| 设定错误 | 说明 | 后果 |
|---|---|---|
| 遗漏重要变量 Omitted variable | 理论上应纳入的变量没纳入 | 系数有偏且不一致;可能诱发残差序列相关或异方差 |
| 变量形式不当 Inappropriate form | 实际关系非线性却按线性处理 | 可能导致残差异方差 |
| 变量标度不当 Inappropriate scaling | 变量未做必要的标准化变换 | 可能导致异方差或多重共线性 |
| 数据错误合并 Improper pooling | 把经济环境显著不同的时期混在一起估计 | 可能导致异方差或序列相关 |
遗漏变量的后果取决于它与其他自变量的关系:
- 与其他自变量相关:残差与自变量相关,保留系数可能有偏且不一致,检验和预测不可靠。
- 与其他自变量无关:其贡献被残差吸收,只有截距有偏,斜率系数仍正确。
omission 指本应纳入却未纳入。为修正多重共线性而剔除高相关变量,不一定构成遗漏变量错误。若剔除的是冗余代理变量,方差下降而信息损失很小;若剔除的是独立经济驱动因素,仍会产生遗漏变量偏误。判断依据应是经济含义,相关系数本身不足以决定取舍。
以下以中国股票组合月度收益 对贝塔 、市值对数 、市净率对数 、自由流通比例 的回归说明四类错误。正确设定为 。
- 遗漏变量:漏掉 。若 与其余变量相关,剩余系数全部有偏。
- 变量形式不当:直接使用 而非 。市值对数与收益呈线性关系。
- 标度不当:把 从可流通股比例改成可流通股数量。规模相似的公司会因绝对股数差异而取值悬殊。
- 错误合并数据:若前 3 年与后 3 年的系数结构不同,应分段估计,不能将 6 年数据合并回归。
常见标度变换包括:损益表和现金流项目除以营业收入,资产负债表项目除以总资产,以及取平方或平方根。测量误差或代理变量选择错误也属于设定错误,例如用实际通胀代替预期通胀作自变量。
1.8 异方差 Heteroskedasticity
异方差指残差方差在不同观测之间不恒定,分为两类:
| 类型 | 定义 | 是否有害 |
|---|---|---|
| 非条件异方差 Unconditional | 与自变量水平无关 | 虽违反假设,但通常无实质危害 |
| 条件异方差 Conditional | 与自变量水平相关,如残差方差随 增大 | 影响统计推断 |
条件异方差有三项后果:金融数据中的标准误通常被低估,t 统计量偏大,第一类错误(Type I error)风险上升;整体模型的 F 检验不可靠;系数估计仍一致且无偏。
残差随自变量增大而呈喇叭形(fan shape)张开,是条件异方差的典型图形。Breusch-Pagan(BP)检验把原回归的残差平方对原自变量再次回归;若自变量能显著解释残差平方的变异,则存在条件异方差。
其中 = 观测值个数, = 第二次回归(残差平方对自变量)的 , = 自变量个数。
BP 检验是单尾检验,只有较大的 和 BP 统计量构成拒绝原假设的证据。
BP 检验
5 年月度数据(),残差平方对标普 500 收益回归得 : 自由度 1、 的卡方临界值为 3.841。,拒绝原假设,存在条件异方差。
修正方法是计算稳健标准误(robust standard errors),也称 White-corrected standard errors 或 heteroskedasticity-consistent standard errors,再用原系数和新标准误重算 t 统计量。系数本身不变。
1.9 序列相关 Serial Correlation
序列相关又称自相关(autocorrelation),指残差之间彼此相关、不独立,常见于时间序列回归。
- 正序列相关:某期出现正残差,会提高下一期也是正残差的概率。
- 负序列相关:某期出现正残差,会提高下一期是负残差的概率。
序列相关对系数一致性的影响取决于模型是否以滞后因变量为自变量:
- 含滞后因变量:斜率系数估计不一致。
- 不含滞后因变量:斜率系数估计仍一致。
金融时间序列常见的正一阶(positive first-order)序列相关会使标准误偏小,t 与 F 统计量偏大,第一类错误风险上升。该方向只适用于正一阶序列相关;负序列相关可能产生相反影响。
这里讨论的是残差的序列相关。金融数据本身的序列相关是一种可建模规律,见 时间序列分析(R2)。
Durbin-Watson(DW)统计量只能检测单一滞后期的序列相关。Breusch-Godfrey(BG)检验可以容纳多个滞后期,做法是将残差对原自变量和若干期滞后残差再次回归:
然后联合检验这些滞后残差的系数是否全为零:
BG 统计量服从 F 分布,自由度为 和 ( = 检验的滞后期数)。统计量超过临界值则拒绝”无序列相关”的原假设。
原假设同时约束 个系数,因此分子自由度为 。只检验 是 的特例。
修正使用 Newey-West corrected standard errors,也称 HAC(heteroskedasticity-and-autocorrelation consistent)标准误。它同时对异方差与自相关稳健,用原系数重算 t 统计量。模型含滞后因变量时,序列相关会使系数估计不一致,稳健标准误只能修正推断,不能修正点估计;此时需要修改模型。
异方差对应 White 标准误,序列相关对应 Newey-West(HAC)标准误。两者都修改标准误,不修改系数。
1.10 多重共线性 Multicollinearity
多重共线性指两个或多个自变量,或三个以上自变量的线性组合,高度相关但不构成精确线性关系。精确共线使系数无法识别;多重共线性下模型仍可估计,但估计不精确。
系数估计仍一致,但标准误偏高,t 统计量和检验功效下降,未能拒绝错误原假设的 第二类错误(Type II error)风险上升。异方差和正一阶序列相关通常降低标准误并提高第一类错误风险,多重共线性则提高标准误和第二类错误风险。
典型征兆是各系数的 t 检验不显著,但整体 F 检验显著且 很高。这组变量合计能解释大量变异,但高度相关使各自的独立效应难以识别。
另一种诊断方法是方差膨胀因子(VIF)。将自变量 对其余自变量作辅助回归,取其 :
| 对应 | 判断 | |
|---|---|---|
| 1 | 0 | 与其他自变量不相关 |
| > 5 | > 80% | 需要进一步检查 |
| > 10 | > 90% | 严重多重共线性 |
两个阈值可由 和 互推。修正方法包括剔除一个或多个高相关自变量、改用其他代理变量,或扩大样本量。
| 异方差(条件) | 序列相关 | 多重共线性 | |
|---|---|---|---|
| 定义 | 残差方差不恒定且与 相关 | 残差之间相关 | 自变量之间高度相关 |
| 对系数 | 一致、无偏 | 无滞后因变量时一致 | 一致但不精确 |
| 对标准误 | 不可靠;金融数据中通常偏小 | 正一阶情形下偏小 | 偏大(方差被膨胀) |
| 风险方向 | Type I 风险↑ | Type I 风险↑ | Type II 风险↑ |
| 检测 | 残差图、BP 检验() | DW(单滞后)、BG(多滞后,F) | 症状识别、VIF |
| 修正 | White 稳健标准误 | Newey-West 稳健标准误 | 剔除变量/换代理/增样本 |
1.11 影响力分析 Influence Analysis
离群点(outlier)是因变量 的极端观测;高杠杆点(high-leverage point)是自变量 的极端观测。
杠杆值(leverage) 是观测层面的度量,每个观测对应一个值。它衡量第 个观测的整个自变量向量相对样本中心的异常程度,并计入自变量之间的相关结构。取值在 0 与 1 之间,越大则潜在影响越大。
全部观测的杠杆值之和为 ,平均杠杆为 。杠杆值超过平均值的 3 倍,即 ,标记为潜在高杠杆点。是否构成影响点,还要看剔除该观测后系数是否变化。
学生化残差(studentized residual)用留一法识别离群点:
- 用全样本 估计模型;逐个删除一个观测,用剩下的 个重估。
- 比较被删观测的实际值与删除后模型的预测值:
- 除以其标准差得学生化残差:
- 与自由度 的 t 分布临界值比较。
删除一个观测后只剩 个,自由度为 。
识别离群点
IPO 上市前 3 日收益模型,3 个自变量,24 个观测。,双尾 5% 临界值 。
学生化残差绝对值超过 2.09 的观测为 #3(2.2310)、#19(−3.0165)、#23(2.1860),共 3 个离群点。
#15(−1.8730)和 #24(1.8140)未超过 2.09,不算离群点。
离群点或高杠杆点不一定是影响点(influential data point)。影响点是指剔除后会使模型系数显著变化的观测。若影响点源于录入错误,应更正或删除;若属于有效观测但反映模型遗漏了重要变量,应修改模型。也可用 winsorize(缩尾)将极端值压到某个分位数,降低其影响。
学生化残差通常由统计软件计算,重点是解释结果。
1.12 哑变量 Dummy Variables
哑变量是只能取 0 或 1 的自变量,用于量化定性事件的影响。
例如在月度股票收益的时间序列回归中设”一月”哑变量:一月取 1,其余月份取 0,用以检验一月的收益是否显著不同于其他月份(即”一月效应”研究的标准做法)。
模型含截距时,区分 个类别使用 个哑变量。使用 个会形成精确线性关系,被省略的类别是参照组(reference point)。
哑变量有三种形式:
截距哑变量(intercept dummy)平移截距:
斜率哑变量(slope dummy)改变斜率,即交互项(interaction term):
两者兼有:
季度 EPS 的哑变量回归
四个季度使用 3 个哑变量,第四季度是参照组。 是第四季度的平均 EPS,各斜率系数是对应季度相对第四季度的差额。
10 年 40 个季度数据估得 、、、:
季度 计算 平均 EPS Q4(参照组) 1.25 Q1 2.00 Q2 1.05 Q3 1.35 预测下一年 Q1 时令 :
该模型对未来某季度的预测等于过去 10 年该季度的历史平均。
1.13 Logistic 回归 Logistic Regression
因变量为二元变量时,如违约 = 1、不违约 = 0,普通线性回归的拟合值可能小于 0 或大于 1,超出概率的取值范围。
logit 模型依次将概率变为几率,再变为对数几率:
例如 时,(4 比 1)。取自然对数即 logistic 变换(logit)。logit 模型以对数几率为因变量:
反解回概率:
其余自变量不变时, 每变动 1 单位,对数几率(log odds)变动 。该关系精确且线性:,与起点无关。
| 关注对象 | 一单位 变动的效果 | 是否依赖起点 |
|---|---|---|
| 对数几率 log odds | 加上 | 否 |
| 几率 odds | 乘以 | 否 |
| 概率 probability | 代入全部自变量重算, | 是 |
其中 。依赖曲率和起点的是概率变化;斜率不能直接解释为概率变化。
logit 系数用最大似然估计(MLE),不用 OLS。截距表示全部自变量为零时的对数几率。潜变量模型的扰动项服从 logistic 分布,形似正态分布但尾部更厚。
预测股利上调的概率
36 家公司,三个自变量:距上次上调的年数(Age)、FCFE/市值、现金/总资产。
Variable Average Value Coefficient -Value Intercept — −3.445 0.002 Age 3.2 0.332 0.412 FCFE/MCap 0.08 12.33 0.016 Cash/TA 0.03 3.21 0.044 截距:p-value = 0.002,在 1% 水平显著。全部自变量取零时,几率 ,概率 。
显著性:Age 的 p-value = 0.412,在 5% 水平不显著;另外两个变量显著。
均值处的概率:
FCFE/MCap 从 0.08 升到 0.09:
概率变动 个百分点。
各变量采用的增量不同:
变量 实际施加的增量 概率变动 FCFE/MCap 0.08 → 0.09,即 +0.01 +2.15 个百分点 Age 3.2 → 4.2,即 +1 年 +6.11 个百分点 Cash/TA 0.03 → 0.04,即 +0.01 +0.54 个百分点
FCFE/MCap 以小数存储,变动 1 单位是 0.08→1.08,对应概率为 99.998%;上表计算的是 +0.01,即一个百分点。解释「increase by one unit」时,应按变量的存储单位计算。
似然比检验(LR test)在 logit 模型中用于比较嵌套模型:
其中约束模型少 个自变量。
LR 统计量服从自由度为 的卡方分布。普通回归的联合检验用 F,logit 的 LR 检验用 。对数似然值为非正数,0 是极限情形;数值越大、越接近 0,模型拟合越好。
logit 模型没有传统 。软件报告的伪 (pseudo-)只能比较同一因变量下的竞争模型,不能解释为已解释变异的百分比。
1.14 回归输出表的读取顺序
item set 的输出表可能同时包含系数、标准误、t 值、p 值、ANOVA 表、BP 统计量和 DW 统计量。读取顺序如下:
graph TD S1["1 因变量是什么类型?"] -->|"连续"| S2["普通多元回归 OLS"] S1 -->|"二元 0/1"| L["logit:读对数几率<br/>ln(odds) = b0 + ΣbjXj"] S2 --> S3["2 写拟合方程<br/>只取 Coefficient 那一列"] S3 --> S4["3 解释系数<br/>带单位 + 其余变量不变"] S4 --> S5["4 判显著性"] S5 -->|"单个系数"| S5a["看该行 p-value"] S5 -->|"一组系数"| S5b["联合 F 检验<br/>df = q, n-k-1"] L --> S5c["LR 检验,df = q,卡方"] S5a --> S6["5 比较模型<br/>Adj R² / AIC 预测 / BIC 拟合"] S5b --> S6 S5c --> S6 S6 --> S7["6 查假设违背"] S7 --> S7a["BP → 异方差 → White"] S7 --> S7b["DW/BG → 序列相关 → Newey-West"] S7 --> S7c["VIF → 多重共线性 → 剔变量"] S7a --> S8["7 预测:代入全部系数"] S7b --> S8 S7c --> S8
| 步骤 | 典型错误 |
|---|---|
| 写方程 | 从 Standard Error 或 t 值列取数 |
| 解释系数 | 漏掉「其余变量不变」;把百分点说成百分比 |
| 判显著性 | 用单个 t 检验代替一组变量的联合 F 检验 |
| 比较模型 | 用 代替 /AIC/BIC;或对调 AIC 与 BIC 的用途 |
| 查违背 | 用 BP 判断序列相关;把 VIF 当成正式检验 |
| 预测 | 从原方程删除不显著变量的项 |
小结
- 偏斜率系数的解释以其余变量不变为前提;百分数变量的变动用百分点表示。
- AIC 用于预测,BIC 用于拟合优度,都是越低越好。
- 新增单个变量且 时 下降;高 不能证明设定正确或系数显著。
- 回归的联合和整体 F 检验取上尾,自由度为 与 。
- 预测时代入全部系数,不剔除不显著项。
- 遗漏变量与其他自变量相关时,保留系数可能有偏且不一致;不相关时仅截距有偏。
- 异方差与正一阶序列相关压低标准误,提高 Type I 风险;多重共线性抬高标准误,提高 Type II 风险。
- 异方差使用 White 标准误,序列相关使用 Newey-West(HAC)标准误;稳健标准误不能修正不一致的系数。
- VIF > 5 需要检查,VIF > 10 表示严重多重共线性;VIF 是诊断指标。
- 学生化残差的自由度为 ;杠杆阈值为 ,只标识潜在高杠杆点。
- 模型含截距时, 个类别使用 个哑变量,省略类为参照组。
- logit 斜率表示对数几率的变化;LR 检验服从 分布。
R2: 时间序列分析 Time-Series Analysis
Reading 2 | Modules 2.1–2.5 | LOS 2.a–2.o
时间序列(time series)是同一个随机变量按等间隔时间排列的一组观测,例如某公司过去 60 个季度的销售收入。Level I 的 简单线性回归 和 多元回归(R1)没有展开时间排序带来的依赖性与平稳性问题。趋势模型以时间 为解释变量,AR 模型以因变量的滞后值为解释变量。
时间序列模型有三项区别:趋势模型用 Durbin-Watson 检验残差的序列相关,AR 模型用残差自相关的 检验;AR 模型要求序列协方差平稳;残差存在序列相关时需要更换模型。分析顺序是判断平稳性、选择模型、检查残差、检查方差。
表示不可观测的误差项(error term), 表示残差(residual)。输出表和检验使用残差;误差项出现在模型设定与假设中。
graph LR ROOT(("时间序列分析<br/>Time-Series Analysis")) ROOT --- A["趋势模型<br/>Trend Models"] A --- A1("线性趋势 Linear Trend") A --- A2("对数线性趋势 Log-Linear") A --- A3("局限:残差序列相关") ROOT --- B["自回归模型<br/>AR Models"] B --- B1("协方差平稳 Covariance Stationary") B --- B2("链式预测 Chain Rule") B --- B3("残差自相关检验") B --- B4("均值回复水平") ROOT --- C["非平稳<br/>Nonstationarity"] C --- C1("随机游走 Random Walk") C --- C2("单位根 Unit Root") C --- C3("Dickey-Fuller 检验") C --- C4("一阶差分 First Differencing") ROOT --- D["两类扩展<br/>Extensions"] D --- D1("季节性 Seasonality") D --- D2("ARCH") ROOT --- E["双序列回归<br/>Two Time Series"] E --- E1("五种情形") E --- E2("协整 Cointegration") E --- E3("DF–EG 检验")
2.1 线性趋势模型 Linear Trend Model
趋势(trend)是序列观测点呈现的一致形态。线性趋势可用直线刻画:斜率向上为正趋势,向下为负趋势。
其中:
- = 时间序列(因变量)在 时刻的取值
- = 纵轴( 轴)截距
- = 斜率系数,也叫趋势系数(trend coefficient)
- = 误差项(error term / disturbance term)
- = 时间,是自变量;
用 OLS 估计后得到预测方程:
每期增加 1,因此 每期增加 。第 2 期为 ,第 3 期为 ,两者之差为 。变量每期按固定金额变化时,使用线性趋势模型。
最小例子
给定 、: 两者相差 ,正好是趋势系数 。
制造业产能利用率 Manufacturing Capacity Utilization
14 个季度的产能利用率(单位:%):
Quarter 利用率 (%) Quarter 利用率 (%) 2020.1 1 82.4 2021.4 8 80.9 2020.2 2 81.5 2022.1 9 81.3 2020.3 3 80.8 2022.2 10 81.9 2020.4 4 80.5 2022.3 11 81.7 2021.1 5 80.2 2022.4 12 80.3 2021.2 6 80.2 2023.1 13 77.9 2021.3 7 80.5 2023.2 14 76.4 拟合 的输出:
Statistic Value R square 0.346 Adjusted R square 0.292 Standard error 1.334 Observations 14
Variable Coefficients Standard Error -Statistic Intercept 82.137 0.753 109.066 Time trend −0.223 0.088 −2.534 预测方程:。
2020.1():。实际值 82.4,故 实际值高于预测值,残差为正;反之为负。
全部 14 期的样本内预测值与实际值:
Quarter Quarter 2020.1 1 81.914 82.4 2021.4 8 80.353 80.9 2020.2 2 81.691 81.5 2022.1 9 80.130 81.3 2020.3 3 81.468 80.8 2022.2 10 79.907 81.9 2020.4 4 81.245 80.5 2022.3 11 79.684 81.7 2021.1 5 81.022 80.2 2022.4 12 79.460 80.3 2021.2 6 80.799 80.2 2023.1 13 79.237 77.9 2021.3 7 80.576 80.5 2023.2 14 79.014 76.4 的残差 。
产能利用率以百分数计量,因此 表示每过一个季度,模型预测的产能利用率下降 0.223 个百分点。若因变量是以十亿美元计的贷款余额, 表示每月增加 122.30 亿美元。线性趋势斜率表示每期变动的存储单位数。
2.2 对数线性趋势模型 Log-Linear Trend Model
金融时间序列常表现出指数增长(exponential growth,即连续复利式增长):
- 正指数增长:变量按固定增长率递增,图形为向上弯的凸(convex)曲线。
- 负指数增长:变量按固定衰减率递减,图形下降越来越慢,向 0 渐近。
指数增长的序列可写成
其中 = 固定增长率(constant rate of growth), = 自然对数的底,。
两边取自然对数得到对数线性模型(log-linear model):
方程从指数形式变为线性形式后,可用线性回归估计。对 求二阶导:
当 时,曲线为凸形。 时递增且越涨越快; 时递减且跌幅逐期缩小,向 0 渐近。数据呈曲线时可考虑对数线性模型,方向由 的符号决定。
| 模型 | 设定 | 的含义 | 单位 |
|---|---|---|---|
| 线性趋势 | 每期 增加 个存储单位 | 绝对变化 | |
| 对数线性趋势 | 每期 增长约 | 相对变化 |
对数线性趋势是 Level I 回归的函数形式中 Log-Lin 模型在 时的特例, 的 1 单位固定为一期。
JP Northfield 的对数线性趋势
用 2012 年第一季度至 2023 年第四季度的季度收入(百万美元)估计
Variable Coefficient Standard Error -statistic Intercept 4.00 0.05 80.0 Trend 0.09 0.01 9.0 求 2024 年第一季度的预测收入。样本有 48 个观测,所以 2024.1 对应 :
BA II Plus 上用 LN 键的第二功能():输入 8.41,按 [2nd] 得 4,492。
回归先给出 的预测值,还要取 才得到 。
从 1 开始,样本外第一期的 等于观测数加 1。48 个季度观测对应下一季度 ;45 个月度观测(2020 年 1 月至 2023 年 9 月)对应 2023 年 10 月 。若 ,则 2023 年 10 月的预测为:
使用 会得到 1,745.990。
2.3 趋势模型的选择与局限
| 观察到的现象 | 应选 |
|---|---|
| 数据点在回归线上下大致均匀分布 | 线性趋势模型 |
| 数据呈曲线,线性模型残差连续一段时间同号 | 对数线性趋势模型 |
| 变量按固定金额逐期变化 | 线性趋势模型 |
| 变量按固定比率逐期变化 | 对数线性趋势模型 |
线性趋势模型的残差有序列相关时,对数线性模型可能更合适。通货膨胀率常用线性趋势模型;股指、股价和公司销售额通常更适合对数线性模型。
趋势模型要求残差彼此不相关。残差有序列相关时,该趋势模型不适合预测。Durbin-Watson(DW)统计量用于检验趋势模型:无序列相关时约等于 2.0,显著偏离 2.0 表明残差相关。线性和对数线性模型均不合适时,转用自回归(AR)模型。
| 模型 | 检查残差序列相关的方法 |
|---|---|
| 趋势模型(自变量是 ) | Durbin-Watson,判断是否约等于 2.0 |
| AR 模型(自变量是滞后的 ) | 残差自相关的 检验;DW 不适用 |
图形判读规则如下:
| 图 | 看什么线索 | 本例结论 | 不能证明什么 |
|---|---|---|---|
| 预测值 vs 实际值(产能利用率) | 预测值是否落在直线上;实际点是否绕线随机分布 | 预测值在直线上;实际数据不呈线性,该模型可能不适合预测 | 不能证明残差有无序列相关 |
| Figure 2.1 左图:原始 对 | 点是否偏离直线并向上弯 | 呈指数增长,线性趋势拟合差 | 不能证明取对数后一定合适 |
| Figure 2.1 右图: 对 | 变换后的点是否贴近直线 | 对数线性模型拟合较好 | 不能证明变换后残差无自相关 |
| Figure 2.3:结构性变化 | 某时点前后是否分成两段,分别围绕不同水平线波动 | 点 处均值从 Mean 1 跳到 Mean 2,存在结构性变化(structural change) | 不能证明两段各自平稳 |
2.4 协方差平稳 Covariance Stationarity
自回归模型(autoregressive model, AR)将因变量对它自己的一个或多个滞后值回归。最简单的形式为:
其中 是 时刻的取值, 是 时刻的取值, 为截距, 为斜率系数, 为误差项。
AR 模型要求被建模序列协方差平稳,否则基于 OLS 的统计推断可能无效。协方差平稳有三个条件:
- 期望值恒定且有限,即序列期望值不随时间变化;该值是均值回复水平。
- 方差恒定且有限,即序列围绕均值的波动程度不随时间变化。
- 任意给定滞后阶下的协方差恒定且有限。
明显向上且越来越陡的曲线期望值不恒定,即使波动幅度稳定,也不满足协方差平稳。非平稳序列需要先变换数据或更换模型。
2.5 AR(p) 模型与链式预测 Chain Rule of Forecasting
滞后一期和两期同时入模:
这是二阶自回归模型(AR(2))。一般的 阶自回归模型 AR() 为:
其中 表示模型纳入的滞后期数。
链式预测法则 Chain Rule of Forecasting
AR 模型先计算一期预测,再将该预测值作为输入计算两期预测:
第二式使用估计值 ,因此多期预测比单期预测更不确定。
两期预测
AR(1) 预测方程 ,当前 :
一期: 两期:
若已知值为 ,求 需要计算三步。例:,已知 :
64.28 是少计算一步的结果。,该序列没有有限均值回复水平,预测值会发散。
2.6 AR 模型的残差自相关检验
AR 模型设定正确时,残差不应有序列相关。残差有显著自相关,说明该 AR 模型不适合该序列。误差项相关会使标准误不可靠,单个系数的 检验可能给出错误结论。标准误被低估时第一类错误风险上升;被高估时第二类错误风险上升。仅凭输出表无法判断方向。
检验分三步:
- 用线性回归估计待评价的 AR 模型,从 AR(1) 开始:。
- 计算模型残差的自相关。
- 用 检验判断各阶自相关是否显著异于零。设定正确时,没有一个自相关显著。
其中 = 观测个数, = 残差 与其第 阶滞后 的样本相关系数。残差自相关是误差项自相关的估计量,输出表的 Autocorrelation 列指残差自相关。
若任何一个自相关显著( 临界值),应加入更多滞后项并重新检验,直到所检自相关均不显著。DW 不适用于 AR 模型。
检验 AR(1) 是否设定正确
样本 102 个观测,AR(1) 模型 的残差自相关:
Lag Autocorrelation -Statistic Lag Autocorrelation -Statistic 1 0.0616114 0.622245 7 −0.010146 −0.102470 2 0.0843368 0.851760 8 0.0211711 0.213818 3 0.0258823 0.261398 9 −0.0959502 −0.969050 4 0.0188928 0.190808 10 0.0389730 0.393608 5 0.1001404 1.011368 11 −0.0677132 −0.683870 6 −0.0638219 −0.644570 12 −0.0122798 −0.124020 标准误 。Lag 2 的 值:
表中的 0.851760 使用未取整的 计算;用 0.099 得 0.8519,不影响判断。
自由度 ,5% 双尾临界值 。12 个自相关的 值绝对值均小于 1.98,因此在所检 12 阶上未发现显著的残差自相关,AR(1) 设定可以接受。该结论不涵盖未检滞后阶,也不能取代平稳性检查。
由 可反推观测数:
例如, 对应 。
2.7 均值回复与均值回复水平 Mean Reversion
均值回复(mean reversion)指序列倾向于回到自身均值:当前值高于均值时倾向下降,低于均值时倾向上升。处于均值回复水平时,模型预测下一期取值与当前值相同。
对 AR(1) 模型 ,令 即 ,解得
若 ,模型预测 ;若 ,模型预测 。所有协方差平稳序列都有有限均值回复水平。AR(1) 序列存在有限均值回复水平的条件是 。
计算均值回复水平
对产能利用率数据拟合 AR(1) 模型 ,输出为:
Statistic Value R square 0.346508 Adjusted R square 0.29205 Standard error 1.333885 Observations 14
Variable Coefficients Standard Error -Statistic Intercept 82.137 0.753 109.080 Manufacturing utilization −0.223 0.0884 −2.522
含义:当前产能利用率高于 67.16 时,预期下一期下降;低于 67.16 时,预期上升。
,所以分母为 。若漏掉负号并使用 ,会得到 105.7。输出表行标签与线性趋势表相同,但模型设定式为 ,因此该行表示 的系数。
| 均值回复水平 | 序列性质 | |
|---|---|---|
| 有限 | 可以是协方差平稳的 | |
| ,未定义 | 随机游走,有单位根,非平稳 | |
| 形式上可计算,但序列发散 | 非平稳;预测值逐步放大 |
2.8 样本内 / 样本外预测与 RMSE
样本内预测(in-sample forecast)的预测期位于估计样本内,误差为 。样本外预测(out-of-sample forecast)的预测期位于估计样本之外,用于评价实际预测能力。大多数已发表研究只采用样本内预测。
均方根误差(root mean squared error, RMSE)是平方误差平均值的平方根,用于比较不同自回归模型的样本外预测精度。
比较 AR(1) 和 AR(2) 时,使用样本外数据计算各自的 RMSE,较低者预测误差较小。样本内 RMSE 最低的模型未必有最低的样本外 RMSE。
60 个月失业数据怎么切
用前 36 个月估计两个模型,再预测后 24 个月,并用这 24 个月的实际值计算 RMSE。RMSE 较低的模型预测较准。
拟合后模型的残差就是样本内预测误差。残差小只说明样本内误差小,实际预测能力要看样本外预测误差。
2.9 系数不稳定与样本期选择 —— LOS 2.h
经济金融环境会变化,不同时期估计的回归系数可能相差很大。样本期长短的权衡如下:
| 样本期 | 优点 | 缺点 |
|---|---|---|
| 较短 | 底层经济过程改变的概率低,估计较稳定 | 统计可靠性较差 |
| 较长 | 统计可靠性较高 | 底层经济过程改变的概率上升,估计不稳定 |
样本期应依据底层经济过程选择。监管或经济环境剧变时,历史数据可能无法产生可靠模型。残差自相关不显著只说明所检残差没有问题,还需检查序列是否协方差平稳。
2.10 随机游走 Random Walk —— LOS 2.i
随机游走(random walk)中,本期实现值等于上一期取值加一个随机冲击:
的最优预测就是 ,且误差项满足:
- :每个误差项的期望值为零。
- :误差项方差恒定。
- :误差项无序列相关。
| 问题 | 表达式 | 原因 |
|---|---|---|
| 期实际实现值 | 是 期发生的冲击 | |
| 期作出的条件预测 | 冲击尚未实现, |
预测式不含尚未实现的误差项,因为它在预测时点未知且条件期望为零。
带漂移的随机游走(random walk with a drift)截距不为零,序列每期还预期增加或减少一个固定量:
| 无漂移随机游走 | ||
| 带漂移随机游走 |
两者的均值回复水平均为:
该值未定义,因此无论有无漂移,随机游走都不协方差平稳,并且有单位根(unit root,)。有单位根的序列没有有限均值回复水平,不能未经变换直接用 AR(1) 拟合。协方差平稳序列有有限均值回复水平。
2.11 单位根、Dickey-Fuller 检验与一阶差分
在 AR(1) 模型 中, 表示序列有单位根并服从随机游走过程。随机游走不协方差平稳,用 AR 模型建模会导致错误推断。经济和金融时间序列经常有单位根。
该判据仅适用于 AR(1)。AR()()的平稳性由滞后多项式的根决定,不能根据某一个滞后系数是否等于 1 判断。
判断序列是否协方差平稳有两种方法:
- 估计 AR 模型并检查自相关。平稳过程的残差自相关通常在所有所检滞后阶上不显著,或随滞后阶增加衰减至零。
- 进行 Dickey-Fuller(DF)检验。
DF 检验将 AR(1) 方程两边同减 :
令 ,检验:
| 检验结果 | 课程结论 | 统计含义 |
|---|---|---|
| 不能拒绝 | 按序列存在单位根、非平稳处理 | 没有足够证据否定单位根,未证明 恰好等于 1 |
| 拒绝 | 序列不存在单位根,按平稳处理 | 有足够证据认为 |
不能拒绝 时,课程按有单位根处理。统计上只表示样本证据不足以否定单位根,并不排除 这类接近 1 的平稳情形。
DF 统计量要与 Dickey-Fuller 修正临界值比较,不能使用常规回归系数检验的 临界值。对立假设为 ,即 ,因此统计量足够负时拒绝原假设。 显著为正表示 、序列发散。
例如, 的输出给出 、标准误 0.041362、、。这个常规 值检验 ,只能说明滞后项有解释力,不能判断 是否等于 1。单位根需要用 DF 检验。
一阶差分 First Differencing
若 DF 检验后按有单位根处理,可用一阶差分将序列变换为协方差平稳序列。用当前值减去前一期值,建模对象变为因变量的变化量。
对无漂移简单随机游走 ,差分后只剩误差项:
把 写成 AR(1) 形式:
该序列的均值回复水平为 ,有限,因此协方差平稳。
带漂移随机游走的差分结果不同:
差分后序列仍协方差平稳,均值为漂移量 。写成 AR(1) 为 ,均值回复水平为 。差分消除单位根,保留确定性成分。
I(1) 序列通常一阶差分即可平稳,但差分后仍需用 DF 检验或残差自相关复查,必要时再次差分。
产能利用率的一阶差分
2020.1–2023.3 的原序列、一阶差分及其滞后一期值:
Quarter Capacity 2020.1 82.4 — — 2020.2 81.5 −0.9 — 2020.3 80.8 −0.7 −0.9 2020.4 80.5 −0.3 −0.7 2021.1 80.2 −0.3 −0.3 2021.2 80.2 0.0 −0.3 2021.3 80.5 0.3 0.0 2021.4 80.9 0.4 0.3 2022.1 81.3 0.4 0.4 2022.2 81.9 0.6 0.4 2022.3 81.7 −0.2 0.6 2022.4 80.3 −1.4 −0.2 2023.1 77.9 −2.4 −1.4 2023.2 76.4 −1.5 −2.4 2023.3 76.4 0.0 −1.5 差分后再拟合 AR(1):
Statistic Value 0.430869388 Adjusted 0.379130241 Standard error 0.699210366 Observations 13
Variable Coefficients Standard Error -Statistic -Value Intercept −0.090014589 0.220409703 −0.4084 0.69082 Lag 1 0.65496839 0.226964091 2.885780 0.0148 滞后项系数在 5% 水平统计显著()。
15 个季度产生 14 个一阶差分,再滞后一期后,可用于回归的配对为 13 个。每做一次滞后或差分都会损失一个观测。
线性趋势对原数据取一阶差分;指数趋势先取自然对数,再作一阶差分。
2.12 季节性 Seasonality —— LOS 2.l
季节性是时间序列中逐年重复的形态。例如,零售商本月销售 与去年同月销售 相关。存在季节性而 AR 模型未纳入季节效应时,模型设定错误。
检查残差自相关中与数据周期对应的滞后阶是否显著:
| 数据频率 | 季节滞后阶 |
|---|---|
| 季度数据 | 4 |
| 月度数据 | 12 |
检测季节性:度假酒店入住率
40 个季度(10 年)的入住率,先拟合 AR(1):
Statistic Value 0.7929 Standard error 0.1952 Observations 39
Variable Coefficients Standard Error -Statistic Intercept 0.0375 0.0274 1.369 Lag 1 0.5318 0.1635 3.2526
Residual Lag Autocorrelation Standard Error -Statistic 1 −0.0615 0.1601 −0.3841 2 −0.0121 0.1601 −0.0756 3 −0.0212 0.1601 −0.1324 4 0.8719 0.1601 5.4460 39 个观测、2 个参数( 与 ),自由度 37,5% 临界 值为 2.026。
前三阶自相关均不显著;第 4 阶 ,拒绝 Lag 4 自相关为零的原假设,存在季节性。该模型设定错误,需加入季节项后才能预测。
标准误 ,且 ,均与表中一致。
AR(1) 使用滞后一期值,40 个季度只有 39 个可用观测。加入 4 期季节滞后后,前 4 期没有 ,可用观测为 36。
校正季节性时,将对应去年同期的滞后因变量作为另一个自变量加入原模型。季度数据加 4 阶,月度数据加 12 阶。
加入季节滞后项后,模型仍属于 AR(1)。AR(2) 同时包含 与 ;这里包含 和 。
校正后的模型
Statistic Value 0.948983874 Standard error 0.3754 Observations 36
Variable Coefficients Standard Error -Statistic Intercept 0.0085 0.0049 1.7347 Lag 1 0.2598 0.0527 4.9298 Lag 4 0.7921 0.2166 3.6570
Residual Lag Autocorrelation Standard Error -Statistic 1 −0.0526 0.1667 −0.3156 2 0.0715 0.1667 0.4290 3 −0.0241 0.1667 −0.1446 4 −0.0435 0.1667 −0.2610 第 4 阶残差自相关降至不显著(), 从 79.3% 升至 94.9%。季节性这一项设定错误已纠正,但这些结果不能排除非平稳、ARCH、结构不稳定或未检滞后阶上的设定错误。
(,与表中标准误一致。)
用带季节滞后的 AR 模型预测
预测方程:
已知 2022 年四个季度的入住人数:
Quarter 2022.1 2022.2 2022.3 2022.4 Occupancy Level 250,000 750,000 450,000 600,000 预测 2023.1: 2022.4(600,000), 2022.1(250,000)。
预测 2023 年第一季度入住量为 603,379,相对去年同季(250,000)大幅上升。
BA II Plus:输入 13.3103,按 [2nd] 得 603,378.52。
用未取整对数值代入得 和 603,342;用表中 13.3047 与 12.4292 得 13.310230 和 603,337。按给定计算链取 13.3103,答案为 603,379,差异约 0.007%,不影响选项。
对应上一季度 2022.4 的 600,000, 对应去年同季度 2022.1 的 250,000。应先取 再代入,最后取 。
2.13 自回归条件异方差 ARCH —— LOS 2.m
自回归条件异方差(autoregressive conditional heteroskedasticity, ARCH)指本期误差项的条件方差依赖于前期误差项。误差项无法观测,检验使用残差平方作为代理。存在 ARCH 时,AR 模型回归系数的标准误和相应假设检验无效。
ARCH(1) 检验将时间序列模型的残差平方 对一阶滞后残差平方 回归:
其中 为常数项, 为误差项。 统计显著异于零时,序列为 ARCH(1)。检出后使用能校正异方差的回归方法,如广义最小二乘法(generalized least squares, GLS)。ARCH(1) 还能预测未来误差项的条件方差:
ARCH(1) 与方差预测
Variable Coefficients Standard Error -Statistic -Value Constant 5.9068 1.08631 5.4375 < 0.001 Lag 1 0.4515 0.09558 4.7238 < 0.001 滞后项系数的 值显示统计显著,该序列是 ARCH(1)。
已知当期残差平方为 0.5625,预测下一期误差项方差:
| 含义 | |
|---|---|
| (不显著) | 下一期条件方差不依赖上一期平方冲击,无 ARCH |
| 且显著 | 上一期平方冲击越大,下一期条件方差越大,存在波动聚集(volatility clustering)和 ARCH |
衡量下一期条件方差对上一期平方冲击的响应或持续性,不表示方差沿日历时间单调上升。标准 ARCH 设定要求 、;负系数可能导致预测方差为负。
ARCH 是误差方差依赖前期误差的问题,属于 异方差,用 GLS 修正。残差自相关是误差本身跨期相关,通过向 AR 模型加入滞后项修正。所检各阶残差自相关均不显著支持 AR 模型拟合良好,但不能证明总体误差项在所有滞后阶上的自相关精确为零;ARCH 是否存在需要另行检验。
2.14 两个时间序列:非平稳与协整 —— LOS 2.n
分析师有时用两个不同变量的时间序列作回归。例如,用市场模型估计个股 beta,将个股收益序列 对市场收益序列 回归:
两个序列中的任何一个或两个都可能非平稳。先分别进行 DF 检验,共有五种情形:
| 情形 | 描述 | 能否用线性回归 |
|---|---|---|
| 1 | 两个序列都协方差平稳 | 能,系数在统计上可靠 |
| 2 | 只有因变量序列协方差平稳 | 不能,结果不可靠 |
| 3 | 只有自变量序列协方差平稳 | 不能,结果不可靠 |
| 4 | 两个都不平稳,且不协整 | 不能 |
| 5 | 两个都不平稳,但协整 | 能 |
两个各自非平稳的时间序列,若某个非平凡线性组合协方差平稳,则二者协整(cointegration)。在上述双序列回归中,该线性组合是 ,即回归误差项。误差项协方差平稳时,两序列协整, 检验可靠。
经济关联、共同宏观驱动或共同趋势只能提示候选序列,不能证明协整。判定依据是回归残差是否平稳。
协整检验(DF–EG)先估计 ,再对残差作 Dickey-Fuller 单位根检验,并使用 Engle 和 Granger 的临界 值。
拒绝存在单位根的原假设,表示回归误差项协方差平稳,两序列协整,可以用该回归刻画关系。DF 与 DF–EG 都不使用常规 临界值;DF–EG 使用为协整检验调整后的临界值。
| 因变量序列 | 自变量协方差平稳 | 自变量非协方差平稳 |
|---|---|---|
| 协方差平稳 | 可以用 | 不可以用 |
| 非协方差平稳 | 不可以用 | 协整则可以用 |
两个序列都平稳,或两个都不平稳但协整时,可以作回归。一平稳一不平稳时不能作回归。
2.15 模型选择流程 —— LOS 2.o
Step 1:确定目标。 刻画某个变量与其他变量的关系时,使用协整时间序列或横截面多元回归;刻画变量随时间的演化时,使用趋势模型。
Step 2:单变量时间序列先画图。 检查方差不恒定(异方差)、均值不恒定、季节性和结构性变化。
结构性变化(structural change)指数据在某个时点显著跳跃,将样本分成两段或多段不同形态。应分别估计变化前后的模型,并检验序列是否显著移动。若移动显著,覆盖全期的单一模型可能不可靠。
Step 3:没有季节性或结构性变化时,使用趋势模型。 数据近似落在有斜率的直线上时用线性趋势模型;呈曲线时用对数线性趋势模型。
Step 4:估计趋势回归,用 Durbin-Watson 检验残差序列相关。 无序列相关时模型可用;有序列相关时更换模型,如 AR。
Step 5:估计 AR 模型前检查平稳性。 非平稳序列按下表处理:
| 数据特征 | 处理 |
|---|---|
| 线性趋势 | 对数据取一阶差分 |
| 指数趋势 | 对数据的自然对数取一阶差分 |
| 结构性变化 | 分成两个独立模型 |
| 季节性成分 | 在 AR 模型中纳入季节滞后项 |
Step 6:差分后协方差平稳时,估计 AR(1),并检验序列相关与季节性。 仍有序列相关时加入滞后项,必要时加入季节滞后,如月度数据的第 12 阶,直到所检残差自相关不显著。
Step 7:检验 ARCH。 将残差平方对滞后残差平方回归。系数不显著时模型可用;显著时存在 ARCH,用广义最小二乘法修正。
Step 8:比较统计上可靠模型的样本外 RMSE。 较低者预测较优。
序列含结构性变化时,可能需要选择更长或更短的样本期,或改用一阶/二阶自回归模型。没有计算最优样本期的公认公式;图形观察可辅助判断。显著结构性变化通常需要分段估计模型。
2.16 时间序列输出表的读取顺序
item set 的输出表可能同时包含系数、标准误、 值、、DW、残差自相关和 ARCH 回归。读取顺序如下:
graph TD S1["1 自变量是什么?看模型设定式"] -->|"是时间 t"| T["趋势模型"] S1 -->|"是滞后的因变量"| A["AR 模型"] S1 -->|"是另一个变量的时间序列"| X["双序列回归 → 第 7 步"] T --> T1["2a 因变量取了 ln 吗?<br/>取了则斜率是每期增长率"] T1 --> T2["3a 查 DW 是否约等于 2.0"] T2 -->|"偏离 2.0"| A T2 -->|"约等于 2.0"| P["可用:代入 t 算预测值"] A --> A1["2b 先查平稳性<br/>看 AR(1) 滞后系数 b1 的绝对值"] A1 -->|"b1 接近 1,或绝对值不小于 1"| U["做 DF 检验<br/>H0: g = b1 − 1 = 0 有单位根"] A1 -->|"绝对值明显小于 1"| A2["3b 查残差自相关<br/>SE = 1 除以根号 T"] U -->|"不能拒绝 H0<br/>按有单位根处理"| U1["一阶差分<br/>指数趋势先取 ln 再差分"] U -->|"拒绝 H0<br/>无单位根"| A2 U1 --> U2["复查差分后序列是否平稳<br/>不够就再差分一次"] U2 --> A2 A2 -->|"季节阶显著"| SE2["加季节滞后项<br/>季度加 4 阶,月度加 12 阶"] A2 -->|"某低阶显著"| A3["加滞后项重估"] A2 -->|"全部不显著"| A4["4 算均值回复水平 b0 除以 1 减 b1"] SE2 --> A4 A3 --> A4 A4 --> A5["5 查 ARCH:残差平方对滞后残差平方"] A5 --> A6["6 链式预测:一期算完才能算两期"] A6 --> R["7 比模型:样本外 RMSE 低者胜"] X --> R
DF 检验应根据结果分支。 接近 1 只触发 DF 检验;不能拒绝 时才按有单位根处理并差分,拒绝 时直接检查残差自相关。差分后复查平稳性。AR(1) 的平稳性看 ;例如 虽小于 1,序列仍发散。 表示单位根的捷径只适用于 AR(1)。
| 步骤 | 典型错误 |
|---|---|
| 认模型 | 忽略线性趋势模型的自变量是时间 ;将带漂移随机游走当作趋势模型 |
| 趋势模型判序列相关 | 漏查 DW;或对 AR 模型使用 DW |
| 对数线性预测 | 将 当成最终预测值,漏掉 |
| 数 | 将样本外第一期写成 ,正确值为 |
| 判平稳 | 用检验 的常规 值判断 ;只看 ,忽略 |
| DF 之后 | 不依据检验结果直接差分;拒绝单位根后仍差分;差分后不复查平稳性 |
| 差分结果 | 认为差分后截距均为 0;带漂移随机游走差分后为 |
| 随机游走 | 将上一期取值加冲击当成预测式;条件预测为 |
| 残差自相关 | 自由度未用 ;未由 反推 |
| 季节性 | 只检查第 1 阶;季度数据检查第 12 阶;将 AR(1)+季节滞后称为 AR(2) |
| 均值回复 | 为负时把分母写成 ;对 计算均值回复水平 |
| 季节预测 | 对调 与 ;未先取 |
| ARCH | 将残差序列相关当作 ARCH;使用 Newey-West 修正 ARCH,正确方法为 GLS |
| 双序列 | 一个序列有单位根、另一个没有时仍作回归 |
| 比模型 | 使用样本内 RMSE,正确方法是比较样本外 RMSE |
小结
- 线性趋势斜率表示每期绝对变动量,百分数变量用百分点;对数线性趋势斜率表示每期增长约 ,预测后要取 。
- 固定金额增长对应线性趋势;固定比率增长对应对数线性趋势。数据呈曲线或线性模型残差持续同号,是改用对数线性模型的线索。
- 趋势模型残差有序列相关时不适合预测,应改用其他模型。
- DW 用于趋势模型,无序列相关时约等于 2.0;AR 模型使用残差自相关 检验。
- 协方差平稳要求均值、方差及任意给定滞后阶下的协方差恒定且有限;不满足时,OLS 推断可能无效。
- 链式预测先算一期再算两期,多期预测更不确定;起点是 时需多计算一步。
- 残差自相关检验中,,,自由度为 ,且 。不显著只表示所检滞后阶上未发现问题。
- 均值回复水平为 。AR(1) 存在有限均值回复水平的条件是 ;协方差平稳蕴含有限均值回复水平,反向不成立。
- 使用样本外 RMSE 比较模型;样本内 RMSE 最低者未必样本外最低。残差等于样本内预测误差。
- 随机游走和带漂移随机游走均有 、单位根和非平稳性,没有有限均值回复水平。实现值为 ,条件预测为 。
- DF 检验的 表示有单位根,使用 DF 修正临界值并在左尾拒绝。拒绝 时按无单位根、平稳处理;不能拒绝时按有单位根处理,但只表示证据不足以否定单位根。该捷径仅适用于 AR(1)。
- 无漂移随机游走差分后 ,均值回复水平为 0;带漂移随机游走差分后为 ,均值为 。指数趋势先取对数再差分,差分后复查平稳性。
- 季度数据检查第 4 阶、月度数据检查第 12 阶残差自相关。校正方法是加入季节滞后项,得到带季节滞后的 AR(1)。
- ARCH(1) 模型为 , 显著表示存在 ARCH,使用 GLS 修正。条件方差预测为 。
- 双序列回归中,两个序列都平稳时可用;一平稳一不平稳时不可用;两个都不平稳时仅在协整时可用。协整要求存在平稳线性组合,此处即回归残差平稳,使用 DF–EG 检验。
- 结构性变化应先检验是否显著;显著时分段建模。没有计算最优样本期的公认公式。
R3: 机器学习 Machine Learning
Reading 3 | Modules 3.1–3.3 | LOS 3.a–3.e
Level I 的 R11 大数据技术入门 已介绍 AI、ML、神经网络、深度学习,区分监督与无监督学习,并给出 training → validation → test 流程及 overfitting、underfitting、black box 等概念。L2 进一步要求根据目标变量类型、是否有标签、线性程度和特征数量选择算法。
| L1 概念 | L2 增量 |
|---|---|
| Supervised = 有标签的输入输出数据 | 目标变量可为连续、类别或序数;分类任务也可采用无监督学习 |
| Unsupervised = 无标签,发现数据结构 | PCA、k-means、层次聚类及各自适用范围 |
| Deep Learning = 多层神经网络 | 隐藏层至少 2 层、常超过 20 层;神经元、前向传播和后向传播 |
| ML 流程 training → validation → test | 三个样本的误差归属;k 折交叉验证 |
| Overfitting = 把噪音当信号 | 对应 variance error;复杂度权衡;两种修正方法 |
| Underfitting = 模型过于简单 | 对应 bias error,即样本内拟合差 |
| Black box 问题 | PCA 与随机森林是黑箱,CART 可解释 |
graph LR ROOT((机器学习<br/>Machine Learning)) ROOT --- A["基础概念<br/>Terminology"] A --- A1("目标变量与特征") A --- A2("超参数 Hyperparameter") A --- A3("过拟合与三类误差") ROOT --- B["监督学习<br/>Supervised"] B --- B1("惩罚回归 LASSO") B --- B2("SVM · KNN") B --- B3("CART") B --- B4("集成学习 · 随机森林") ROOT --- C["无监督学习<br/>Unsupervised"] C --- C1("PCA 降维") C --- C2("k-means 聚类") C --- C3("层次聚类") ROOT --- D["神经网络族<br/>Neural Networks"] D --- D1("神经网络 NN") D --- D2("深度学习网络 DLN") D --- D3("强化学习 RL")
3.1 机器学习与传统统计模型的分界
机器学习(machine learning, ML)使用算法从给定数据集中归纳模式并决策。
传统统计模型依赖正态误差、同方差、无序列相关等底层分布假设,ML 不需要这类假设。变量很多(高维度 high dimension)或关系非线性时,ML 通常优于标准统计方法。低维、线性且分布假设成立时,可使用 多元回归。
四个基础术语与回归术语的对应如下:
| ML 术语 | 含义 | 回归里的对应 |
|---|---|---|
| 目标变量 Target variable | 因变量(),可为连续、类别(categorical)或序数(ordinal) | 因变量 dependent variable |
| 特征 Features | 自变量() | 自变量 independent variables |
| 训练数据集 Training data set | 用于拟合模型的样本 | 估计样本 |
| 超参数 Hyperparameter | 由研究者指定的模型输入 | 无直接对应 |
特征数就是自变量个数,与目标变量类别数和样本数无关。将债券分入 5 个评级类别,使用 12 个基本面变量和 2 个技术面变量时,共有 14 个特征,不是 70 个。
参数由算法从数据中学习,例如回归斜率;超参数由研究者在算法运行前设定,包括 LASSO 的惩罚系数 、KNN 的 、k-means 的簇数 、CART 的最大树深与最大决策节点数,以及神经网络的层数和各层节点数。
3.2 监督学习、无监督学习与深度学习 —— LOS 3.a
- 监督学习(Supervised learning)使用带标签、目标变量已定义的训练数据提高预测准确度。
- 无监督学习(Unsupervised learning)只有特征,没有带标签的训练数据或目标变量,算法自行寻找数据结构或相互关系。
- 深度学习(Deep learning)用于图像识别、自然语言处理等复杂任务。
识别盈余操纵者属于监督学习:用已知操纵者和非操纵者的属性训练程序,再应用到另一个数据集。多元回归也属于监督学习。监督学习的任务由目标变量类型决定:
| 目标变量类型 | 任务 | 模型 |
|---|---|---|
| 连续 | 回归 regression | 回归模型 |
| 类别或序数(如排名) | 分类 classification | 分类模型 |
分类分为二元分类,如可能违约/不太可能违约,以及多类别分类,如债券评级档次。
聚类(clustering)属于无监督学习。
强化学习(reinforcement learning)从自身预测误差中学习。深度学习与强化学习都建立在神经网络之上,神经网络用于处理显著非线性问题。
监督学习的目标变量已指定,训练数据带标签,训练过程不需要周期性人工干预。分类既可用监督学习,也可用无监督聚类,不能仅凭「分类」认定为监督学习。
3.3 算法选型
按有无目标变量及变量类型选择算法:
| 变量类型 | 监督(有目标变量) | 无监督(无目标变量) |
|---|---|---|
| 连续 Continuous | 回归 Regression:线性回归;惩罚回归/LASSO;CART;随机森林 | 降维:主成分分析 PCA 聚类:k-means;层次聚类 |
| 类别 Categorical | 分类 Classification:Logistic;支持向量机 SVM;K 近邻 KNN;CART | 降维:主成分分析 PCA 聚类:k-means;层次聚类 |
| 连续或类别 | 神经网络;深度学习;强化学习 | 神经网络;深度学习;强化学习 |
无监督学习没有目标变量,表中连续或类别指特征类型。SVM 与 logit 只用于类别型目标;logit 的拟合值是连续概率,但被预测目标为二元变量。神经网络、深度学习和强化学习可跨监督与无监督、连续与类别使用,适合复杂且高度非线性的数据。
选型流程如下:
graph TD S0["1 数据集是否过于复杂<br/>特征太多"] S0 -->|"是"| DR["先做降维<br/>dimension reduction"] S0 -->|"否"| S1 DR --> S1["2 是不是分类问题"] S1 -->|"否 即数值预测问题"| N1{"数据是否线性"} N1 -->|"线性"| N2["惩罚回归<br/>Penalized Regression"] N1 -->|"非线性且复杂"| N3["CART · 随机森林 · 神经网络"] S1 -->|"是 分类问题"| C0["3 是否有标签"] C0 -->|"有标签 监督分类"| C1{"数据是否线性"} C1 -->|"线性"| C2["KNN 或 SVM"] C1 -->|"非线性且复杂"| C3["CART · 随机森林 · 神经网络"] C0 -->|"无标签 4 无监督分类"| U0{"数据是否线性"} U0 -->|"线性 且类别数已知"| U1["k-means 聚类"] U0 -->|"线性 但类别数未知"| U2["层次聚类"] U0 -->|"非线性且复杂"| U3["神经网络"]
PCA 是正式建模前的降维预处理。特征过多、噪音大或维度过高时,先做 PCA,再使用后续算法。
3.4 过拟合、泛化与三类误差 —— LOS 3.b
过拟合(overfitting)是监督学习的问题,通常源于样本中纳入大量特征。模型将目标变量的噪音当成模式,表现为样本内 很高、样本外 很低,因而样本外预测准确度下降。模型在新数据上保留解释力,称为泛化良好(generalizes well)。
三个互不重叠的数据集承担不同职责:
| 数据集 | 用途 | 上面的预测误差算作 |
|---|---|---|
| 训练样本 Training sample | 开发模型 | 样本内误差 in-sample error |
| 验证样本 Validation sample | 调优模型 tuning | 样本内误差 in-sample error |
| 测试样本 Test sample | 用新数据评价模型 | 样本外误差 out-of-sample error |
验证样本误差属于样本内误差,测试样本误差属于样本外误差。
误差分为三类:
| 误差 | 定义 | 属于 |
|---|---|---|
| 偏差误差 Bias error | 拟合不佳的模型带来的样本内误差 | 样本内 |
| 方差误差 Variance error | 过拟合、泛化不佳带来的样本外误差 | 样本外 |
| 基础误差 Base error | 随机噪音造成的残余误差 | 不可消除 |
样本内解释力差对应高 bias error;样本内解释力好而样本外解释力差,对应高 variance error,即过拟合。
学习曲线(learning curve)将验证或测试样本准确率(accuracy rate 错误率)对训练样本规模作图:
| 形态 | 样本内曲线 | 样本外曲线 | 诊断 |
|---|---|---|---|
| 高偏差误差 High bias error | 收敛,但远低于目标准确率 | 与样本内一同收敛,也远低于目标 | 欠拟合;两条线贴合但都低 |
| 高方差误差 High variance error | 收敛到接近目标准确率 | 明显落后且不向样本内曲线收敛 | 过拟合;两条线有持续缺口 |
| 稳健模型 Robust model | 随样本量增大而改善 | 与样本内相互靠拢,共同趋向目标准确率 | 泛化良好 |
两种问题的样本外准确率都低,区分依据是两条曲线之间的缺口。模型复杂度上升时,方差误差增大,偏差误差减小。线性模型通常偏差误差较高,非线性模型通常方差误差较高。总误差在某个复杂度水平达到最小。
3.5 复杂度削减与交叉验证
处理过拟合有两种方法:
- 复杂度削减(complexity reduction):施加随特征数增加而增大的惩罚,排除对样本外预测准确度没有实质贡献的特征。
- 交叉验证(cross validation):从验证样本估计样本外错误率。
训练数据集和验证样本都应足够大且能代表总体。缩小样本会降低代表性,不能处理过拟合。
k 折交叉验证(k-fold cross validation)的步骤:
- 将样本随机均分为 份。
- 取其中 份作训练样本,留 1 份作验证。
- 在每一份上度量误差。
- 重复 次,汇总平均样本内与样本外错误率。
每轮学习循环都会轮换训练与验证样本,不采用固定的一次划分。
3.6 监督学习 I:惩罚回归与 LASSO —— LOS 3.c
惩罚回归(penalized regression)根据模型特征数施加惩罚,惩罚值随特征数增加而增大。它排除对样本外预测准确度没有实质贡献的特征,使模型更精简(parsimonious),目标是同时最小化残差平方和(SSE)与惩罚值。
LASSO(least absolute shrinkage and selection operator,最小绝对值收敛与选择算子)是常用惩罚回归模型。除最小化 SSE 外,它还最小化斜率系数绝对值之和:
增加特征可以降低 SSE,但会增加惩罚。LASSO 通过最优化自动剔除预测力最弱的特征。惩罚系数 是超参数,控制过拟合与精简程度之间的平衡。
正则化(regularization)降低高维估计中的统计变异性,将表现不佳特征的贝塔系数压向零。LASSO 用于构建精简模型;正则化也可用于非线性模型,例如估计稳定协方差矩阵,供均值—方差最优化使用。精简模型以尽可能少的预测变量达到所需解释水平。
3.7 监督学习 II:支持向量机 SVM 与 K 近邻 KNN
支持向量机 Support Vector Machine (SVM)
SVM 是线性二元分类算法,例如卖出 vs 买入。给定 个特征,使用 维超平面(hyperplane)将样本切分为两类。
SVM 确定一条离观测最远的边界,以提高正确分类概率。该边界由判别边界(discriminant boundary)及两侧间隔(margins)组成。间隔由支持向量(support vectors),即离边界最近的观测决定。
错误分类的训练观测用软间隔分类(soft margin classification)处理,在扩大间隔与分类误差之间权衡。更复杂的非线性模型可以降低分类误差,但需要更多特征,也可能导致过拟合。
SVM 可将发债主体分为可能违约或不太可能违约,将股票分为该做空或不该做空,也可将新闻报道和公司新闻稿分为正面或负面。
K 近邻 K-Nearest Neighbor (KNN)
KNN 常用于分类,有时也用于回归。它根据新观测与训练样本的接近程度归类。研究者指定超参数 ,算法寻找最近的 个观测。
| 的取法 | 后果 |
|---|---|
| 太小 | 错误率高 |
| 太大 | 对过多结果取平均,稀释结论 |
| 偶数 | 可能平局,没有明确胜者 |
KNN 是非参数(nonparametric)模型,需要先定义距离度量(distance metric)。不相关或相互相关的特征会扭曲结果。应用包括预测破产、将债券归入评级档次、预测股价和构建定制指数。
SVM 的线索包括两类、超平面、离边界最远、支持向量和软间隔;KNN 的线索包括多类、根据邻近程度归类和定义距离。
3.8 监督学习 III:分类与回归树 CART
分类树(classification tree)用于类别型目标,典型情形是 IPO 成功或失败等二元目标。回归树(regression tree)用于连续型目标。Logit 模型也用于二元目标,但变量之间有显著非线性关系时,分类树更合适。CART 可处理类别型或连续型目标;SVM 与 logit 只用于类别型目标。
分类树的生长步骤:
- 在树顶选出解释目标最重要的特征,并估计切分值 。
- 将该特征取值大于 的观测归入一类,其余归入另一类。
- 两类再按第二个特征评估并分别二分。
- 每次后续划分都应降低前一节点的估计误差。
- 误差无法继续降低时停止,形成终端节点(terminal node)。
graph TD R["根节点 Root Node<br/>特征 1 大于 c1 吗"] R -->|"是"| D1["决策节点<br/>特征 2 大于 c2 吗"] R -->|"否"| D2["决策节点<br/>特征 3 大于 c3 吗"] D1 -->|"是"| D3["决策节点<br/>特征 1 大于 c4 吗<br/>同一特征 换了切分值"] D1 -->|"否"| T1(["终端节点 类别 A"]) D3 -->|"是"| T2(["终端节点 类别 B"]) D3 -->|"否"| T3(["终端节点 类别 A"]) D2 -->|"是"| T4(["终端节点 类别 B"]) D2 -->|"否"| D4["决策节点<br/>特征 4 大于 c5 吗"] D4 -->|"是"| T5(["终端节点 类别 A"]) D4 -->|"否"| T6(["终端节点 类别 B"])
同一特征可在较低节点以不同切分值再次出现。特征和切分值由算法从带标签的训练数据中学习。CART 通过最大树深(maximum tree depth)、最大决策节点数等正则化判据,或剪掉解释力极小的枝条(pruning)控制过拟合。
CART 可视化预测过程,具有可解释性;PCA 与随机森林属于黑箱。CART 可用于识别财务报表舞弊、选股和选债。
3.9 监督学习 IV:集成学习与随机森林
集成学习(ensemble learning)组合多个模型的预测。不同模型的噪音相互抵消,从而降低平均错误率。集成有两种方式:
| 方式 | 做法 | 关键词 |
|---|---|---|
| 异质学习器聚合 Aggregation of heterogeneous learners | 组合不同算法,通过投票分类器(voting classifier)表决,得票最多的答案胜出 | 不同算法;投票 |
| 同质学习器聚合 Aggregation of homogeneous learners | 同一算法作用于不同训练数据 | 同一算法;不同数据 |
异质聚合要求所选模型有足够的多样性(diversity)。
同质聚合用 bootstrap aggregating(自助聚合,bagging)生成训练样本:从初始训练样本中有放回地抽取多个随机样本,每个样本称为一个 bag。
随机森林是分类树的变体。它用同一数据集 bagging 得到的数据训练大量分类树,每棵树只使用随机选取的特征子集,再由多棵树共同决定最终分类,类似众包(crowdsourcing)。随机森林有两项优点:每棵树只用部分特征,可缓解过拟合;各树误差倾向相互抵消,可提高信噪比(signal-to-noise ratio)。缺点是失去 CART 的透明性,成为黑箱。应用包括基于因子的资产配置和预测 IPO 是否成功。
3.10 无监督学习 I:主成分分析 PCA —— LOS 3.d
数据集维度(dimension)过高时通常伴随较多噪音。降维(dimension reduction)丢弃信息量低的属性以降低噪音。主成分分析(principal component analysis, PCA)将大量相关因子的信息概括为一组较少且互不相关的因子。
| 术语 | 含义 |
|---|---|
| 特征向量 Eigenvector | 互不相关的因子,是原始特征的线性组合 |
| 特征值 Eigenvalue | 该特征向量所解释的总方差比例 |
| 碎石图 Scree plot | 显示每个主成分所解释总方差比例的图 |
PCA 按特征值从高到低排列主成分。第一个因子的特征值最高,第二个次之,直到达到研究者指定的因子数。实务中保留能共同解释总方差 85%–95% 的最少主成分。主成分是原始特征的线性组合,难以命名或解释,因此 PCA 属于黑箱。
3.11 无监督学习 II:聚类 Clustering
聚类根据属性相似性,即内聚性(cohesion),将观测分组。
例如,可按股票过去的表现分组,不使用金融、医疗、科技等标准行业分类。相似性的定义需要判断,欧氏距离(Euclidian distance),即两个观测之间的直线距离,是常用度量。
k 均值聚类 K-Means Clustering
k-means 将观测划分为 个互不重叠的簇, 是研究者设定的超参数。每个簇有一个质心(centroid),新观测按与质心的接近程度分入相应簇。
算法先随机选取 个质心。观测分入某簇后重新计算质心,必要时重新分配观测,直至分配不再变化。 必须在聚类前设定,因此研究者需预先了解数据集性质;未知簇数时不适合 k-means。投资应用是根据高维数据模式对大量证券分类。
层次聚类 Hierarchical Clustering
层次聚类构建簇的层级结构,无需预先设定簇数。它有两个方向:
| 方向 | 英文 | 做法 |
|---|---|---|
| 凝聚式(自下而上) | Agglomerative / bottom-up | 从单个观测各自成簇开始,将相似观测加入该组或另成互不重叠的簇 |
| 分裂式(自上而下) | Divisive / top-down | 从一个大簇开始,不断划分为较小的簇 |
graph TD ALL["全部观测<br/>一个巨大的簇"] ALL --> CA["簇 A"] ALL --> CB["簇 B"] CA --> O1["观测 1"] CA --> O2["观测 2"] CB --> O3["观测 3"] CB --> O4["观测 4"]
自上而下读图对应 divisive,从大簇不断切分;自下而上对应 agglomerative,从单个观测不断合并。
聚类可用于分散化,即投资于多个不同簇的资产;也可用于组合风险分析,某一簇占较大权重表示集中度较高。簇本身可能没有清晰标签,但可揭示复杂数据中的结构和观测相似性。
没有带标签训练数据而需要分组时,使用聚类。例如,将 1,000 只股票分成 10 个互不相似的组。信用评级已有 AAA、AA 等标签,应使用 CART 或 KNN 等监督分类方法。
机器学习在 ESG 投资中的应用
ESG(环境、社会、治理)因子投资近年因投资者偏好变化而流行。治理因子聚焦董事会是否为股东利益行事,可以客观观察和度量;公司行为的社会与环境影响更主观。
处理路径分两步:
- 先用 ML 与 AI 的自然语言处理器解析文本、音频、视频形式的公司披露并汇总信息。例如,统计 human capital、living wage、D&I 等词反映公司对社会责任的回应;统计 sustainable、recycle、green 等词反映环境目标意向。
- 再用监督学习算法生成 ESG 评分,可使用 logistic 回归、SVM、CART、随机森林或神经网络。
非结构化文本先经 NLP 转为特征,再由监督学习评分。相关文本处理流程见 大数据项目(R4)。
3.12 神经网络、深度学习网络与强化学习 —— LOS 3.e
神经网络 Neural Networks (NNs)
神经网络(NNs,也称人工神经网络 artificial neural networks, ANNs)可用于监督式回归和分类模型,由链接(links)相连的节点(nodes)构成。
它有三层结构:
| 层 | 内容 | 关键点 |
|---|---|---|
| 输入层 Input layer | 节点承载各特征(自变量)取值 | 输入先标度(scaled),使不同节点的信息可比并可计算加权平均 |
| 隐藏层 Hidden layer | 节点称为神经元(neurons),负责处理输入 | 通常多个输入连接同一隐藏节点;可有多个隐藏层 |
| 输出层 Output layer | 通常只有一个节点,即模型预测值 | — |
神经元先使用求和算子,再使用激活函数:
graph LR IN["来自上一层的多个输入值<br/>已标度 scaled"] --> SUM["求和算子<br/>Summation Operator<br/>把信息汇总成加权平均"] SUM --> ACT["激活函数<br/>Activation Function<br/>通常是非线性函数"] ACT --> FWD["向后续隐藏层的神经元传递<br/>前向传播 Forward Propagation"] FWD -.->|"后向传播 Backward Propagation<br/>依据误差修正求和算子里的权重"| SUM
- 前向传播(forward propagation):将激活函数生成的值传给后续隐藏层的其他神经元。
- 后向传播(backward propagation):网络根据自身误差修正求和算子使用的权重。
输入层与隐藏层的多重链接,加上各节点的激活函数,使神经网络能够拟合复杂非线性函数。网络结构由研究者决定,属于超参数。例如,3 个输入、1 个含 4 个节点的隐藏层、1 个输出节点构成 3-4-1 结构,可根据样本外表现调整。
深度学习网络 Deep Learning Networks (DLNs)
深度学习网络是有多个隐藏层的神经网络,至少 2 层,常超过 20 层。
- 典型任务:图像、模式、字符识别。
- 判别机制:最后一层计算观测属于各类别的期望概率,将观测分入概率最高的类别。
- 其他应用:信用卡欺诈侦测、自动驾驶、自然语言处理和投资决策。
- 实证:一项研究用 Black-Scholes 模型的 6 个输入参数训练 DLN,期权价值预测模型的 达到 99.8%;另一项研究用账面市值比、营业利润/市值等标准因子建立 DLN,投资策略跑赢标准因子模型策略。
- 流行原因:分析方法进步、计算速度提升及大量机器可读数据可用。
图像识别问题优先使用深度学习。
强化学习 Reinforcement Learning (RL)
强化学习算法包含智能体(agent),在给定约束下最大化已定义的奖励(reward)。
RL 有三项特征:
- 不依赖带标签的训练数据。
- 不提供即时反馈。
- 根据数以百万计的试验反馈学习。
DeepMind 的 AlphaGo 是强化学习案例,曾在围棋中击败在位世界冠军。RL 在投资决策中的有效性尚无定论(not yet conclusive)。
神经网络是基础;深度学习网络有较多隐藏层;强化学习也建立在神经网络之上,并从自身预测误差中学习,同时具有奖励和约束设定。
3.13 算法反查表
根据业务线索选择算法:
| 题干里的线索 | 指向的算法 |
|---|---|
| 未提供带标签数据;要分组但没有现成类别 | 聚类(无监督) |
| 分成已知个数 的组 | k-means |
| 要分组但不知道分几组 | 层次聚类 |
| 特征太多、噪音大、先要降维 | PCA,作为建模前预处理 |
| 二元分类、线性数据、超平面/间隔/支持向量 | SVM |
| 按与已有观测的邻近程度归类;要定义距离 | KNN |
| 二元目标且变量间显著非线性 | 分类树 CART |
| 目标变量可为连续或类别 | CART |
| 需要解释预测过程 | CART |
| 多个不同算法投票 | 异质学习器集成 |
| 同一算法与有放回抽样的多个训练集 | bagging(同质学习器集成) |
| 大量分类树,每棵树使用随机特征子集 | 随机森林 |
| 图像/字符/模式识别、自然语言处理 | 深度学习网络 DLN |
| 智能体在约束下最大化奖励,无标签,靠百万次试验 | 强化学习 RL |
| 线性数值预测且要求模型精简 | 惩罚回归/LASSO |
| 环节 | 典型错误 |
|---|---|
| 判有无监督 | 看到分类就认定为监督学习;分类可用监督或无监督方法 |
| 数特征 | 将特征数乘以目标类别数;12+2 为 14,不是 70 |
| 判过拟合 | 将样本内拟合差归为 variance error,正确分类为 bias error |
| 治过拟合 | 缩小样本;正确方法为复杂度削减和交叉验证 |
| 归误差 | 将验证样本误差归为样本外;只有测试样本属于样本外 |
| 认黑箱 | 将 CART 归为黑箱;PCA 与随机森林是黑箱 |
| 分 CART 与 logit | 认为 CART 只能分类;CART 也能生成回归树 |
| 用降维 | 将 PCA 与建模算法二选一;PCA 是前置工序 |
| 评价 RL | 断言 RL 在投资决策中已被证明有效;其有效性尚无定论 |
小结
- ML 不依赖数据分布假设,在高维和非线性关系下优于标准统计方法。
- 目标变量等于因变量,可为连续、类别或序数;特征等于自变量;超参数由研究者指定;特征数就是自变量数。
- 监督学习使用带标签训练数据且不需人工周期性干预;无监督学习没有标签并自行寻找结构;分类可使用监督或无监督方法。
- 特征过多时先降维。线性数值预测用惩罚回归,非线性用 CART/随机森林/NN;监督线性分类用 KNN/SVM,非线性用 CART/随机森林/NN;无监督分类中,已知 用 k-means,未知 用层次聚类,非线性用 NN。
- 过拟合是监督学习的问题,表现为样本内 高而样本外 低。
- bias error 是拟合差造成的样本内误差,variance error 是过拟合造成的样本外误差,base error 是随机噪音;验证样本误差属于样本内。
- 学习曲线两线贴合但都低表示高偏差,持续分离表示高方差。复杂度上升时方差误差增加、偏差误差下降;线性模型通常偏差较高,非线性模型通常方差较高。
- 处理过拟合使用复杂度削减和交叉验证。缩小样本无效;k 折交叉验证每轮轮换训练与验证样本。
- LASSO 同时最小化 SSE 和斜率系数绝对值之和, 是超参数,自动剔除预测力最弱的特征。正则化将表现不佳特征的系数压向零,也可用于非线性模型。
- SVM 用于线性二分类,以支持向量确定超平面间隔,以软间隔处理误分类。KNN 是非参数模型; 太小错误率高,太大稀释结果,偶数可能平局,并需定义距离度量。
- CART 可处理类别型和连续型目标;SVM 与 logit 只处理类别型目标。同一特征可在下层以不同切分值重现;最大树深、最大决策节点数和剪枝用于控制过拟合。CART 可解释。
- 异质集成由不同算法投票;同质集成由同一算法和 bagging 的训练样本组成。随机森林每棵树使用随机特征子集,可缓解过拟合、提高信噪比,但属于黑箱。
- PCA 的特征向量是原始特征的线性组合,特征值表示所解释总方差比例,碎石图显示各主成分的解释比例。保留共同解释总方差 85%–95% 的最少主成分。PCA 属于黑箱。
- k-means 要预先设定 ,以质心迭代直至不再重新分配。层次聚类无需预设簇数;agglomerative 自下而上,divisive 自上而下。
- 神经元由求和算子和激活函数组成;前向传播传值,后向传播修改权重;3-4-1 等网络结构是超参数。
- DLN 至少有 2 个隐藏层,常超过 20 层;最后一层给出各类别概率并选择最高者。图像、模式和字符识别优先使用 DLN。
- RL 的智能体在约束下最大化奖励,不使用标签或即时反馈,通过数百万次试验学习;其投资决策有效性尚无定论。
R4: 大数据项目 Big Data Projects
Reading 4 | Modules 4.1–4.3 | LOS 4.a–4.c
Level I 的 大数据技术入门 介绍了 3V、结构化与非结构化数据、另类数据来源;AI 与机器学习 介绍了监督与非监督学习、数据集划分以及过拟合与欠拟合。本篇进一步讨论大数据项目的五个步骤、数据与文本处理技术,以及模型性能评估。
graph LR ROOT((大数据项目<br/>Big Data Projects)) ROOT --- A["五步流水线<br/>Data Analysis Steps"] A --- A1("结构化:五步") A --- A2("文本:前四步改写") ROOT --- B["准备与整理<br/>Preparation & Wrangling"] B --- B1("Cleansing 五类错误") B --- B2("Transformation 五类变换") B --- B3("Scaling:归一化 / 标准化") ROOT --- C["文本处理<br/>Text Processing"] C --- C1("Cleansing:标签 / 标点 / 数字 / 空格") C --- C2("Wrangling:小写 / 停用词 / 词干 / 词形") C --- C3("Tokenization → BOW → DTM") ROOT --- D["探索<br/>Exploration"] D --- D1("EDA") D --- D2("Feature Selection") D --- D3("Feature Engineering") ROOT --- E["训练与评估<br/>Training & Evaluation"] E --- E1("方法选择与超参数") E --- E2("混淆矩阵四指标") E --- E3("ROC / AUC、RMSE") E --- E4("调优:偏差 vs 方差")
4.1 大数据的特征与数据分析五步
大数据的 3V 是 volume(数据量)、variety(数据来源多样)和 velocity(生成与采集速度)。数据用于产生推断时,还要考虑 veracity / validity(真实性、有效性):研究者必须区分数据质量与数量,才能得到稳健的预测。
结构化数据(如公司资产负债表数据)按行列组织;非结构化数据(如 SEC 备案文本)没有固定结构,需要用机器学习算法从噪声中提取信息。
数据分析分为五步。下表以消费者信用评分模型为例:
| # | 步骤 | 这一步实际在做什么 | 信用评分模型里的样子 |
|---|---|---|---|
| 1 | 概念化建模任务 Conceptualization of the modeling task | 定义问题、模型的输出是什么、谁用、怎么用、是否要嵌入现有(或新的)业务流程 | 目标是准确度量借款人的信用风险 |
| 2 | 数据收集 Data collection | 金融预测通常收集结构化的数值数据;决定用内部还是外部数据源 | 过往还款记录、就业历史、收入等借款人变量 |
| 3 | 数据准备与整理 Data preparation and wrangling | 清洗(处理缺失值、核验超范围值)+ 预处理(汇总、过滤、抽取相关变量) | 用规则填补缺失或不准确的数据 |
| 4 | 数据探索 Data exploration | 特征选择、特征工程,以及初步(探索性)数据分析 | 把若干变量合成一个”偿付能力评分”(ability-to-pay score) |
| 5 | 模型训练 Model training | 选定 ML 算法、用训练集评估、调优模型 | 模型选择取决于特征与目标变量之间关系的性质 |
五步是迭代过程。若输出质量不理想,研究者可以回到任何一步调整,例如重新做特征工程。
换成文本数据,前四步要改写。 设想信用评分模型还要吃进借款人的社交媒体发帖:
graph TD subgraph S["结构化数据流水线"] S1["1 概念化建模任务<br/>Conceptualization"] S2["2 数据收集<br/>Data collection"] S3["3 数据准备与整理<br/>Data preparation and wrangling"] S4["4 数据探索<br/>Data exploration"] S1 --> S2 --> S3 --> S4 end subgraph T["文本数据流水线"] T1["1 文本问题界定<br/>Text problem formulation"] T2["2 数据收集(策展)<br/>Data collection - curation"] T3["3 文本准备与整理<br/>Text preparation and wrangling"] T4["4 文本探索<br/>Text exploration"] T1 --> T2 --> T3 --> T4 end S4 --> M["5 模型训练<br/>Model training(两条线共用)"] T4 --> M M -.->|"输出可单独使用"| U1["直接作为结论"] M -.->|"或与结构化变量合并"| U2["作为另一个模型的输入"]
| 文本流水线的步骤 | 与结构化版本的差别 |
|---|---|
| 1. 文本问题界定 Text problem formulation | 除了界定问题,还要明确指出模型的确切输入与输出,以及输出将被如何使用 |
| 2. 数据收集(curation) | 确定数据来源(如网络搜集、特定社交媒体站点);若用监督学习,还必须标注一个可靠的目标变量——例如指明哪些文本对应信用风险的负面/正面评分 |
| 3. 文本准备与整理 | 对非结构化数据流做预处理,使其可被传统的结构化建模方法使用 |
| 4. 文本探索 | 文本可视化 + 文本的特征选择与特征工程 |
文本模型的输出可以单独使用,也可以与结构化变量合并,作为另一个模型的输入。例如,先把社交媒体文本转成情绪得分,再与收入和还款记录一同用于信用评分。
4.2 数据准备与整理:结构化数据
Data preparation and wrangling 是把原始数据清洗(cleansing)并整理(wrangling / preprocessing)成模型可用的形式,通常占用项目最多的时间和资源。
问题定义后,由领域专家(domain experts)协助确定数据需求,再从内部或外部来源收集数据。数据库的 README 文件通常说明数据的内容、存储方式和位置,可用于核验数据有效性。外部数据也可通过第三方供应商的 API 获取。购买外部数据能节省整理时间和成本,但其他市场参与者也可购买同一份数据,因此会削弱公司的专有优势(proprietary advantage)。
Data cleansing 处理五类原始数据错误:
| 错误 | 含义 |
|---|---|
| Missing values | 缺失值 |
| Invalid values | 数值落在有意义的范围之外 |
| Inaccurate values | 数值不准确 |
| Non-uniform values | 因格式或计量单位用错而不统一 |
| Duplicate observations | 重复观测 |
清洗结合自动化规则型算法与人工干预。原始数据集的 metadata(摘要数据)可作为识别错误的起点;无法清洗的错误观测将被剔除。Common values(常见值)不属于数据缺陷。
Data wrangling(preprocessing)包括数据变换与标度化。
五类数据变换(data transformation):
| 变换 | 含义 | 例子 |
|---|---|---|
| Extraction 抽取 | 从已有字段派生新字段 | 由起止日期算出”已就业年数” |
| Aggregation 汇总 | 用适当权重把两个相关变量合并成一个 | — |
| Filtration 过滤 | 删除不相关的观测(行) | — |
| Selection 选择 | 删除处理时不需要的特征(列) | — |
| Conversion 转换 | 转换不同类型的数据 | 名义(nominal)、序数(ordinal)等 |
Filtration 删除不相关的观测(行);selection 删除不需要的特征(列)。
异常值处理:可用统计方法识别(例如距均值超过三个标准差的值),然后用算法确定的值替换,或直接删除该观测。两种成套做法:
| 做法 | 定义 |
|---|---|
| Trimming(截尾) | 排除最高与最低的 x% 观测 |
| Winsorization(缩尾) | 把极端值替换为该变量允许的最大值 |
Trimming 会减少观测数;winsorization 只替换极值,不减少观测数。
Scaling(标度化)把各特征转换到共同的计量单位。神经网络(NN)、支持向量机(SVM)等算法要求特征同质(homogenous),即取值处于同一区间。常用方法有 normalization 和 standardization:
| Normalization 归一化 | Standardization 标准化 | |
|---|---|---|
| 结果落在哪 | 0 与 1 之间 | 均值 0、标准差 1 |
| 需要什么输入 | 、 | 、 |
| 对异常值 | 敏感(min/max 本身就可能是异常值) | 不敏感 |
| 附加假设 | 无 | 假定变量服从正态分布 |
标准化后的值 +1.22 表示比均值高 1.22 个标准差。Scaling 是上位概念;将变量值调整到 0 与 1 之间的方法是 normalization。
归一化与标准化
某特征的四个观测:。则 、、、(总体标准差)。
normalized standardized 2 0.0000 −1.2222 5 0.2500 −0.5556 9 0.5833 +0.3333 14 1.0000 +1.4444 归一化后最小值为 0、最大值为 1;标准化后四个值的均值为 0、标准差为 1。
若把 14 换成 140,归一化后 2、5、9 分别为 0.000、0.022、0.051,差异被大幅压缩;标准化后的相对间距仍保留。这说明 normalization 对异常值敏感。
4.3 文本的准备与整理
非结构化文本需要先转成结构化数据,才能用于模型分析。清洗和预处理文本的过程称为 text processing(文本处理)。
Text cleansing
| # | 步骤 | 要点 |
|---|---|---|
| 1 | Remove HTML tags | 网页抓来的文本带有嵌入的 HTML 标签,处理前需去除。正则表达式(regular expression, regex) 是一串用于识别特定字符顺序的文本串 |
| 2 | Remove punctuations | 文本分析通常不需要标点;但 %、$、? 等有分析价值的标点会被替换成 annotation(文本表达式) 供模型训练用,而不是一删了之 |
| 3 | Remove numbers | 数字被删除或替换为 annotation,告诉 ML 程序”这里有个数,但它的值不重要”。若数值本身重要,先用文本应用把它抽取出来 |
| 4 | Remove white spaces | 制表符、缩进等格式性空白在文本处理中无用途,删除 |
标点和数字可删除,也可替换成 annotation;数值本身有用时,应先抽取再处理。
Text wrangling / preprocessing
| # | 步骤 | 定义与例子 |
|---|---|---|
| 1 | Lowercasing 转小写 | 使 market 与 Market 不被区别对待 |
| 2 | Removal of stop words 去停用词 | the、is 这类在某些 ML 应用中不承载语义的词被删掉,以减少训练数据中的 token 数量 |
| 3 | Stemming 词干化 | 基于规则的算法,把一个词的所有变形归到共同值:integrate、integration、integrating 全部归为 integrat;结果未必是真实单词 |
| 4 | Lemmatization 词形还原 | 把词的屈折变形还原为其 lemma(形态学词根)。与 stemming 相似,但计算上更高级、更耗资源 |
Stemming 与 Lemmatization
| Stemming | Lemmatization | |
|---|---|---|
| 机制 | 规则型算法 | 形态学分析,还原到 lemma |
| 产出 | 可能不是真实存在的词(integrat) | 是词的词根形式 |
| 计算成本 | 低 | 更高级、更耗资源 |
两者都将词的变形归一;lemmatization 的计算成本更高。
Tokenization、BOW 与文档词项矩阵
- Token = 一个词;tokenization = 把句子切成 token 的过程。例如,“It is a beautiful day.” 可切成 5 个 token:(1) it、(2) is、(3) a、(4) beautiful、(5) day。
- 清洗与规范化完成后应用 bag-of-words(BOW):把所有词/token 收集起来,完全不考虑出现的先后顺序。
- Document term matrix(DTM,文档词项矩阵) 把非结构化数据转成结构化数据:每一行是一个文本文档,各列由 token 表示,单元格的值是该 token 在该文档中出现的次数。
DTM 的行表示文档,列表示 token,单元格记录该 token 在该文档中出现的次数。
一个可复算的 DTM
三篇一句话文档,转小写并去掉停用词 the、is 之后:
文档 保留的 token D1 market, up, today D2 market, down, today D3 market, volatility, up 对应的 DTM:
market up today down volatility D1 1 1 1 0 0 D2 1 0 1 1 0 D3 1 1 0 0 1 DTM 将非结构化文本转成数值表,可直接用于模型训练,也可用于计算 document frequency。
N-grams
若词序重要,可用 N-gram 表示词序列:两词序列是 bigram,三词序列是 trigram,依此类推。句子 “The market is up today.” 的 bigram 包括 the_market、market_is、is_up、up_today。随后将 BOW 应用于 bigram。
使用 N-gram 会改变 BOW 的规范化流程:停用词不会被删除。例如,bigram is_up 包含停用词 is;若先删除 is,该序列也会消失。因此,是否使用 N-gram 应在文本整理阶段确定。
4.4 结构化数据的探索
Data exploration 的目的是评估数据集,并确定为模型训练配置数据的最恰当方式。
三个组成部分:
| 步骤 | 定义 | 关键提示 |
|---|---|---|
| 探索性数据分析 Exploratory data analysis (EDA) | 查看数据描述量:汇总统计、热力图、词云等 | 三个目标见下 |
| 特征选择 Feature selection | 只挑出 ML 模型训练需要的数据属性 | 选的特征越多,模型复杂度和训练时间越高 |
| 特征工程 Feature engineering | 通过变换(如取自然对数)、分解、合并多个特征来创造新特征 | 相关术语 feature extraction:从数据集中造出一个特征(如由出生日期造出年龄) |
EDA 的三个目标:(1) 理解数据的性质、分布及其他特征;(2) 发现模式或关系,评估基本问题与假说;(3) 为后续步骤的建模做规划。
模型表现高度依赖特征选择与特征工程。分析师通常需要反复调整这两步,直至模型表现达到要求。
结构化数据的 EDA 工具(行 = 观测,列 = 特征):
| 维度 | 汇总统计 | 可视化 | 统计检验 |
|---|---|---|---|
| 单特征(一维) | 均值、标准差、偏度、峰度 | 箱线图、直方图、密度图、条形图 | — |
| 多特征(多维) | 相关系数矩阵 | 散点图、箱线图、堆叠条形图、折线图;多个箱线图可画在同一条线上,每个代表一个特征 | 参数检验:ANOVA 表、相关性表、t 检验 非参数检验:Spearman 秩相关、卡方检验 |
常见图形的用途:
| 图 | 用途 |
|---|---|
| Histogram 直方图 | 捕捉观测在一系列等宽 bin 中的频数 |
| Density plot 密度图 | 连续数据的平滑直方图,叠加在直方图之上 |
| Bar chart 条形图 | 展示分类变量的频数分布(如全国五个地理区各自的人口占比) |
| Box plot 箱线图 | 用于连续变量,突出中位数、四分位数与异常值 |
降维
特征数量很大时,可用主成分分析(PCA)等降维模型辅助数据探索。降维也能减少训练所需的特征数,从而缩短训练时间。PCA 的具体机制见 机器学习(R3)。
特征选择
目标是只保留对模型样本外预测能力有贡献的特征。
精简的模型(parsimonious model,特征更少)→ 减少由特征引入的噪音(feature-induced noise)→ 提高模型的预测准确度。
特征选择要求对业务环境以及 EDA 中识别出的特征间相互关系有良好理解。对结构化数据而言,特征选择是一个迭代的、方法化的过程:可用统计方法给特征打重要性得分(importance score),再据此排序并挑选。
特征工程
特征工程(FE)优化已选中的特征。模型训练结果取决于特征呈现给算法的方式。常见做法是把一个特征分解成多个特征,或把已有特征转换成新特征。
One-hot encoding (OHE)
OHE 是把一个分类特征(categorical feature)转换成适合机器处理的二元(哑)变量的过程。
POS 与 NER 给 token 赋标签;OHE 将分类特征转成二元变量。
这与 R1 的哑变量相同:含截距时, 个类别只能放入 个哑变量;OHE 则说明如何将文字型类别转换为 0/1 列。
FE 的最终目的:让模型训练更快、更容易。
4.5 文本数据的探索与特征工程
文本的 EDA 与汇总统计:文本被 tokenize 之后,可分析的汇总统计包括
- Term frequency(词频):某个词在文本中出现的次数;
- Co-occurrence(共现):两个或更多词一起出现的情形。
Word cloud(词云) 是 BOW 中全部词的可视化表示,频率越高的词字号越大,从而让分析师判断哪些词在语境中更重要。
词云与 BOW
词云用于可视化文本;精简 BOW 依靠剔除高频词和低频词。N-gram 则用于保留有意义的词序。
文本的特征选择 = 挑 BOW 里的一个 token 子集。
高频词与低频词
缩小 BOW 的尺寸使模型更精简、减少特征引入的噪音,而噪音特征对预测准确度没有贡献。
- 高频词往往是停用词(若在整理阶段没删干净)或通用词汇;
- 低频词往往无关紧要。
以预测破产为例,同时与违约者和非违约者相关的 token 没有区分力,应从 BOW 中删除。
三种特征选择方法:
| 方法 | 定义 | 判读 |
|---|---|---|
| Frequency:document frequency (DF) | DF = 含该 token 的文档数 ÷ 文档总数 | 取值在 0 与 1 之间;DF 接近 1 = 几乎每篇都有 = 无区分力 |
| Chi-square 卡方 | 按 token 对文本分类问题中某个类别的有用性排序 | 卡方统计量最高的 token 与某个特定类别一起出现得更频繁,因而对训练判别分析类算法有用 |
| Mutual information (MI) 互信息 | 一个数值,表示 token 对某类文本的贡献 | token 出现在所有类别中 → MI = 0(不是有用的判别量);只出现在一个或少数几个类别 → MI 趋近 1 |
Mutual information
token 只出现在一个或少数类别时,MI 接近 1;出现在所有类别时,MI 等于 0。这里的 MI 取值范围为 0 到 1。
Document frequency
Document frequency 是含该 token 的文档数除以文档总数;term frequency 是该 token 在某篇文档中的出现次数。
本 reading 未引入 IDF(inverse document frequency)。
从 DTM 计算 DF
沿用前述三篇文档(D1: market/up/today;D2: market/down/today;D3: market/volatility/up):
token 含该 token 的文档数 DF 特征选择判断 market 3 1.00 每篇都有 → 高频词,应剔除;它对任何类别都不构成区分,MI 也会等于 0 up 2 0.67 保留 today 2 0.67 保留 down 1 0.33 若文档总数很大,这类低频词是剔除候选 volatility 1 0.33 同上 DF = 1 表示该 token 出现在全部文档中;若它也出现在所有类别,MI = 0,没有分类价值,应予删除。
文本的特征工程(FE)四种技术:
| 技术 | 做什么 | 例子 |
|---|---|---|
| Numbers 数字 | 识别具有标准长度的 token 并转换成 /numberX/ 这样的 token | 四位数字可能代表年份,被赋值为 /number4/ |
| N-grams | 多词模式;若有用则保留顺序 | expansionary monetary policy 最好整体保留,替换成单一 token expansionary_monetary_policy,而不是拆成三个 token |
| Name entity recognition (NER) | 算法结合 token 被使用的语境,对照其内部库给 token 赋 NER 标签 | Microsoft → ORG;Europe → Place |
| Parts of speech (POS) | 用语言结构词典按语境给文本赋词性标签 | Microsoft → NNP(专有名词);1969 → CD(基数词) |
NER 通过对象类别赋值,使选出的特征更具区分力(more discriminatory)。
NER 与 POS 的区别:NER 判”这个 token 是个什么东西”(组织/地点),POS 判”这个 token 是什么词性”(专有名词/基数词),且 NER 强调依赖上下文。
4.6 模型训练
训练前应定义分析目标、识别有用的数据点并进行模型概念化。Model conceptualization 是迭代的规划阶段,需要 ML 工程师与领域专家协作,识别数据特征及其关系,例如通胀与汇率的关系。
非结构化数据经处理并编码为 DTM 后,模型训练与结构化数据的训练相似。
Model fitting(模型拟合)描述的是模型对新数据的泛化能力,即样本外表现。拟合误差的两个来源:
| 来源 | 太小/太少 | 太大/太多 |
|---|---|---|
| 训练样本量 Size of training sample | 小数据集训练不充分 → 欠拟合(underfit),识别不出重要模式 | — |
| 特征数量 Number of features | 特征太少 → 信息量不足以识别模式 → 欠拟合 | 特征太多 → 自由度变少 → 过拟合(overfit),在验证样本上泛化差 |
特征选择与特征工程
- 特征选择对缓解过拟合与欠拟合都重要;
- 特征工程(FE) 做得好时,倾向于减轻欠拟合问题。
特征工程在这里对应欠拟合;过拟合还需要通过特征选择等方式控制。
模型训练的三项任务:
graph LR A["1 方法选择<br/>Method selection"] --> B["2 性能评估<br/>Performance evaluation"] B --> C["3 调优<br/>Tuning"] C -.->|"递归重复直至达标"| A
任务 1:方法选择(method selection)。根据目标与数据特征选择合适的 ML 方法,主要考虑三个因素:
| 因素 | 分支 | 可用方法 |
|---|---|---|
| 监督 or 非监督 | 监督学习:训练数据含 ground truth(已知结果,即目标变量) | 回归、集成树(ensemble trees)、SVM、神经网络(NN) |
| 非监督学习:没有目标变量 | 聚类、降维、异常检测 | |
| 数据类型 | 数值数据(如预测盈利) | CART(分类与回归树) |
| 文本数据 | GLM(广义线性模型)、SVM | |
| 图像数据 | 神经网络与深度学习 | |
| 数据规模 | 观测多、特征也多的大数据集 | SVM |
| 观测数很多但特征很少 | 神经网络 |
训练数据包含 ground truth 时,应使用监督学习。Machine learning 是同时涵盖监督与非监督算法的上位概念。
方法选定之后,研究者还要指定合适的 hyperparameters(超参数),例如神经网络的隐藏层数量。
混合数据集与模型组合
- 混合数据集(同时含数值与文本数据)常常使用多种方法。
- 一个方法的输出可作为另一个模型的输入。例如,先把公司的财经新闻分类为正面或负面,再将结果输入下一个模型。
- 有时同时使用多个模型,取各模型预测的加权平均。
数据集三分(仅限监督学习):
| 子集 | 占比 | 用途 |
|---|---|---|
| 训练集 Training | ≈ 60% | 模型训练 |
| 验证集 Validation | ≈ 20% | 验证与模型调优 |
| 测试集 Test | ≈ 20% | 检验模型的样本外表现 |
非监督学习没有带标签的训练数据,因此不需要将数据划分为训练集、验证集和测试集。60%/20%/20% 的划分仅适用于监督学习。
Class imbalance(类别不平衡)
定义:某一类别的观测数量相对其他类别大得多。
后果:模型会倾向于预测占多数的类别。例如,债券违约数据若以高评级债为主,模型更容易把新观测预测为“不违约”。
要求:训练集应当同时含有多样的高评级与低评级债券,有足够的多样性才能作出正确预测。
修正方法:对过度代表的类别做欠采样(undersample),对代表不足的类别做过采样(oversample)。
任务 2:性能评估(performance evaluation),用不同工具量化并检视模型表现。
任务 3:调优(tuning),调整模型以改善表现。
这三步递归地反复施行,直到达到期望的表现水平。
4.7 模型性能评估:混淆矩阵与三个指标
适用范围
混淆矩阵、precision、recall、accuracy、F1 和 ROC/AUC 适用于分类模型;RMSE 适用于连续型目标变量,例如回归模型。
混淆矩阵(confusion matrix)展示分类结果。下表的行表示预测,列表示实际:
| Actual: Default | Actual: No Default | |
|---|---|---|
| Prediction: Default | True positive (TP) | False positive (FP,type I error) |
| Prediction: No Default | False negative (FN,type II error) | True negative (TN) |
与 L1 假设检验的关系
FP = 第一类错误(type I),FN = 第二类错误(type II)。这与 假设检验 的定义是同一件事:把”预测为正”看作”拒绝原假设”,则误报(本来没有却说有)= 弃真 = type I,漏报(本来有却说没有)= 存伪 = type II。
“False” 后面的词表示模型给出的预测。False positive 是模型预测为 positive,但实际为 negative。
四个公式:
Precision 与 Recall
Precision = 真阳性占所有预测为阳性的比例;recall = 真阳性占所有实际为阳性的比例。两者分子相同,分母不同:
| 指标 | 分母是什么 | 在矩阵上怎么走 | 回答的问题 |
|---|---|---|---|
| Precision | TP + FP=所有被预测为阳性的 | 沿 Prediction: Default 这一行横着加 | 「模型报警的那些,有多少是真的?」 |
| Recall | TP + FN=所有实际为阳性的 | 沿 Actual: Default 这一列竖着加 | 「真的出事的那些,模型抓到了多少?」 |
Precision 走行(预测),Recall 走列(实际)。
错误代价与指标选择
当第一类错误(FP)的代价大时,高 precision 更有价值;当第二类错误(FN)的代价大时,高 recall 更有价值。
降低 type I error 需要提高 precision;降低 type II error 需要提高 recall。
例如,放贷方想避免把钱借给潜在违约者,会重视 recall,因为漏掉一个真违约者(FN)的代价较高。
FP 与 FN 虽然都是错误,但两者未必同等重要;precision 与 recall 之间的取舍是一个业务决策,取决于模型的应用场景。
Accuracy 的计算
F1 完全由 precision 和 recall 决定,是两者的调和平均。Accuracy 的分子还包含 TN,必须从混淆矩阵的四个格子直接计算,无法只由 precision 和 recall 推出。
完整复算:股利削减预测模型
Dave Kwah 评估一个预测公司次年是否会削减股利的模型,二元分类(削减 vs 不削减)。测试样本共 78 个观测:模型正确地分类了 18 家确实削减股利的公司,以及 46 家没有削减的公司;模型漏掉了 3 家实际削减了股利的公司。
先填满四个格子。已知 TP = 18、TN = 46、FN = 3,则 FP 由总数倒推:
Actual: Cut Actual: Not Cut 行合计(预测) Prediction: Cut TP = 18 FP = 11 29 Prediction: Not Cut FN = 3 TN = 46 49 列合计(实际) 21 57 78
- precision = 0.62:模型预测会削减股利的 29 家中,18 家实际削减,11 家是误报。
- recall = 0.86:实际削减股利的 21 家中,模型识别出 18 家,漏掉 3 家。
- recall 明显高于 precision,适用于漏报代价较高的场景;误报代价较高时,则应重视 precision。
- accuracy = 0.82 高于 precision = 0.62,因为 accuracy 还计入 46 个 TN。多数类占比高时,accuracy 可能高估模型的判别能力。
Accuracy 与类别不平衡
设想 1,000 只债券中只有 20 只违约。若模型一律预测“不违约”,其混淆矩阵为 TP = 0、FP = 0、FN = 20、TN = 980: 准确率为 98%,召回率为 0,且 precision 的分母 TP + FP = 0,无法定义。
类别不平衡时,应同时查看 precision、recall 或 F1,并通过欠采样或过采样改善训练集的类别分布。
第二个矩阵:盈利超预期分类模型
Ben Stokes 把医药股分为”盈利将超市场一致预期”与”不会超”两类,得到:
Actual: Beat Forecast Actual: Not Beat 行合计 Prediction: Beat Forecast TP = 12 FP = 4 16 Prediction: Not Beat FN = 2 TN = 7 9 列合计 14 11 25
与上一例相比,recall 同为 0.86,但 accuracy 从 0.82 降至 0.76,precision 从 0.62 升至 0.75。四个指标应分别从混淆矩阵计算。
若 Stokes 想降低第一类错误(把不会超预期的股票误判为会超预期,从而买错),他应当提高的是 precision。
工具二:ROC 曲线与 AUC
Receiver operating characteristic (ROC) 同样用于分类问题,是一条描绘 FP 与 TP 之间取舍的曲线:
- TPR(真阳性率)与 recall 是同一个东西,画在 Y 轴;
- FPR(假阳性率)= FP 占所有实际为阴性的比例,画在 X 轴。
AUC 的判读
AUC(area under the curve,曲线下面积)取值在 0 到 1 之间;AUC 越接近 1,模型的预测准确度越高。
| AUC | 曲线形态 | 结论 |
|---|---|---|
| 0.50 | 一条直线(对角线) | 相当于随机猜测,没有判别力 |
| 0.67 | 中等程度地凸出于对角线之上 | 有一定判别力 |
| 0.90 | 向左上角陡峭上升,凸度最大 | 判别力最强 |
曲线的凸度(convexity)越高,AUC 越大;最靠近左上角的曲线对应更强的模型。
工具三:RMSE
用于连续型预测(如回归模型)的单一误差汇总指标:
评估工具与目标变量
| 工具 | 适用 | 方向 |
|---|---|---|
| 混淆矩阵四指标(P、R、accuracy、F1) | 二元分类 | 越高越好 |
| ROC / AUC | 分类问题 | AUC 越接近 1 越好 |
| RMSE | 连续型目标变量(回归) | 越低越好 |
连续型目标变量使用 RMSE;二元分类使用混淆矩阵指标或 ROC/AUC。
4.8 模型调优
两类误差(LOS 4.c 的后半段):
| 误差 | 在哪个样本上度量 | 由什么造成 |
|---|---|---|
| 偏差误差 Bias error | 训练样本的预测误差 | 欠拟合(underfit) 的模型;模型被过度简化,没有从训练样本里学够 |
| 方差误差 Variance error | 验证样本的预测误差 | 过拟合(overfitting) 的模型,泛化能力差 |
过拟合是监督式 ML 的问题,成因是训练样本里放进了太多特征(模型太复杂)。必须在偏差误差与方差误差之间找到最优取舍,使模型既不欠拟合也不过拟合。
Fitting curve(拟合曲线)展示训练误差和交叉验证预测误差随模型复杂度(更多特征)的变化。
拟合曲线的判读
| 曲线 | 随模型复杂度上升的走向 | 含义 |
|---|---|---|
| 训练误差 Training error | 单调下降 | 复杂度越高,模型越能”背下”训练样本 |
| 交叉验证预测误差 | 先降后升,呈 U 形 | U 形的最低点即 optimal complexity(最优复杂度) |
| U 形的左段 | 误差高且随复杂度下降 | 偏差误差主导(欠拟合区) |
| U 形的右段 | 误差随复杂度回升 | 方差误差主导(过拟合区) |
随着复杂度上升,训练误差下降,模型逐渐过拟合;与此同时,方差误差上升。最优模型复杂度位于偏差与方差的平衡点。
U 形最低点只表示相对最优复杂度;该点的绝对表现仍需用模型性能指标判断。呈 U 形的是交叉验证预测误差:左段由偏差主导,右段由方差主导。
Regularization(正则化):通过对那些对模型预测能力没有实质贡献的特征施加惩罚,来降低模型复杂度。
参数与超参数
| Parameters(参数) | Hyperparameters(超参数) | |
|---|---|---|
| 谁定的 | 由模型自己估计出来,用优化技术在训练样本上求得 | 由 ML 工程师指定 |
| 与训练样本的关系 | 来自训练样本 | 独立于训练样本 |
| 例子 | 回归模型里的斜率系数 | 神经网络的隐藏层数量;逻辑回归里的 p-threshold(概率阈值) |
Tuning(调优)通过改动超参数改善模型表现;参数由模型从训练样本中估计。
调优的具体流程:对每一组超参数设定,依据分类结果编制一张混淆矩阵,并汇总 accuracy 与 F1 得分。
Grid search 与 ceiling analysis
- Grid search(网格搜索):自动选出超参数的最佳组合,尤其适用于多个超参数同时调整的情形。
- Ceiling analysis(天花板分析):对整个建模流水线中的每一个组成部分进行评估与调优。它的作用是找出流程中的薄弱环节(weak link),对其调优即可提升整个模型的表现。
Grid search 在模型内部寻找最佳超参数组合;ceiling analysis 在整条流水线中定位薄弱环节。
4.9 混淆矩阵的读取顺序
混淆矩阵题通常依次要求计算 accuracy、recall、precision、F1,并判断应提高哪个指标。可按下列顺序处理:
graph TD S1["1 目标变量是什么类型?"] -->|"连续"| R["用 RMSE:越低越好"] S1 -->|"二元 0/1"| S2["2 把四个格子填满<br/>TP / FP / FN / TN"] S2 --> S2a["缺哪一格就用总数倒推<br/>n = TP + FP + FN + TN"] S2a --> S3["3 先算 accuracy<br/>(TP+TN) / n"] S3 --> S4["4 算 recall = TP / (TP+FN)<br/>沿「实际为阳性」这一列"] S4 --> S5["5 算 precision = TP / (TP+FP)<br/>沿「预测为阳性」这一行"] S5 --> S6["6 算 F1 = 2PR / (P+R)<br/>只需要 P 和 R"] S6 --> S7["7 问「该提高哪个」?"] S7 -->|"要降 type I error(FP)"| S7a["提高 precision"] S7 -->|"要降 type II error(FN)"| S7b["提高 recall"] S3 --> S8["若类别严重不平衡<br/>需结合其他指标"]
常见错误
| 步骤 | 典型错误 |
|---|---|
| 填格子 | 把行(预测)与列(实际)看反,导致 FP 与 FN 互换 |
| 算 accuracy | 分子漏掉 TN,只用 TP |
| 算 recall | 分母用了 TP + FP(那是 precision 的分母) |
| 算 precision | 分母用了 TP + FN(那是 recall 的分母) |
| 算 F1 | 用算术平均 代替调和平均;或试图从 accuracy 反推 F1 |
| 算 FPR | 分母用 TP + FP;正确分母是 FP + TN(所有实际为阴性的) |
| 选”该提高哪个” | 把 precision 与 recall 对调;或答 accuracy(accuracy 不针对某一类错误) |
| 判模型好坏 | 类别不平衡时只看 accuracy |
两个例题的指标汇总
| 股利削减模型 | 盈利超预期模型 | |
|---|---|---|
| TP / FP / FN / TN | 18 / 11 / 3 / 46 | 12 / 4 / 2 / 7 |
| 78 | 25 | |
| accuracy | 0.82 | 0.76 |
| recall (= TPR) | 0.86 | 0.86 |
| precision | 0.62 | 0.75 |
| F1 | 0.72 | 0.80 |
| FPR | 0.19 | 0.36 |
F1 是 precision 与 recall 的调和平均,位于两者之间,并更接近较小值:0.72 靠近 0.62,0.80 靠近 0.75。若计算结果落在两者之外,应重新检查。
小结
- 3V = volume / variety / velocity;用于产生推断时追加 veracity(validity),需把质量从数量中分离
- 五步:概念化 → 数据收集 → 准备与整理 → 探索 → 模型训练,且是迭代的;文本版把前四步改为文本问题界定 → 数据收集(curation) → 文本准备与整理 → 文本探索
- Data cleansing 处理缺失/无效/不准确/不统一/重复五类;common values 不在其列
- Filtration 删观测(行),Selection 删特征(列);Trimming 排除最高最低 x%,Winsorization 把极值替换为允许的最大值
- Normalization → 0 与 1 之间,对异常值敏感;Standardization → 均值 0、标准差 1,对异常值不敏感但假定正态;scaling 是两者的上位概念
- 文本清洗去 HTML 标签/标点/数字/空格(标点与数字可替换为 annotation);文本整理做小写化/去停用词/stemming/lemmatization,lemmatization 更耗资源
- DTM:行 = 文档,列 = token,格值 = 出现次数;用 N-gram 时停用词不会被删除,因而会影响 BOW 的规范化
- OHE 把分类特征转成二元哑变量;NER 判实体类别(ORG / Place),POS 判词性(NNP / CD),NER 的目的是让特征更具区分力
- DF = 含该 token 的文档数 ÷ 文档总数;MI = 0 表示出现在所有类别(无用),趋近 1 表示只出现在一个或少数类别;精简 BOW 靠剔除高频词与低频词
- 有 ground truth → 监督学习;监督学习按 ≈60% / 20% / 20% 分训练/验证/测试集,非监督学习不分割
- Class imbalance 使模型偏向多数类,修正靠对多数类欠采样、对少数类过采样
- FP = type I,FN = type II;precision = TP/(TP+FP)(分母是”预测为阳性”),recall = TP/(TP+FN)(分母是”实际为阳性”);accuracy = (TP+TN)/n;F1 = 2PR/(P+R),是调和平均
- type I 代价大 → 提高 precision;type II 代价大 → 提高 recall;放贷方避免借给违约者 → 最大化 recall
- TPR = recall,画 Y 轴;FPR = FP/(FP+TN),画 X 轴;AUC 在 0 到 1 之间,越接近 1 越准;AUC = 0.5 是随机猜测;凸度越高 AUC 越大
- RMSE 用于连续型目标变量,越低越好
- 偏差误差在训练样本上、源于欠拟合;方差误差在验证样本上、源于过拟合;参数由模型估计,超参数由工程师指定且独立于训练样本;调优改的是超参数
- Grid search 自动搜超参数最佳组合;ceiling analysis 逐个评估流水线各环节、找出薄弱环节