不要相信没检验过的表
回归摘要总是显得很权威,而 statsmodels 提供了检验它的工具。方差膨胀因子 variance_inflation_factor(matrix, i) 衡量一个回归变量被其他变量解释的程度:它等于 1/(1-Rⱼ²),超过 5 到 10 意味着系数不稳定,矩阵必须包含常数列(因此第一个回归变量在位置 1)。durbin_watson(resid) 在误差无相关时接近 2,在误差前后相随时接近 0。het_breuschpagan(resid, exog) 返回四个数,第二个是误差方差恒定检验的 p 值。jarque_bera(resid) 返回统计量、p 值、偏度和峰度,acorr_ljungbox(resid, lags=[12]) 返回含 lb_pvalue 列的 DataFrame。对所有这些检验,小的 p 值都是警告。
再有两项检验使这一套完整。库克距离 res.get_influence().cooks_distance[0] 按“删掉这条观测后拟合会移动多少”给每条观测打分,所以数值最大的月份正是左右结果的月份。而伪回归是经典陷阱:用 Home Depot 的对数价格对 Lowe's 的对数价格回归,会得到 R²=0.93 和 0.002 的杜宾–沃森统计量,因为两条有趋势的序列总显得相关。R² 很高而杜宾–沃森接近零,说明你是在用一个随机游走去回归另一个。Apple 的三因子回归(258 个月)中,各因子 VIF 为 1.13、1.13、1.02,杜宾–沃森 1.94,布罗施–帕甘 p 值 0.21,雅尔克–贝拉 p 值 0.015;在市场因子旁加入 SPY 后 VIF 变为 186 和 177;影响最大的月份是 2008 年 9 月、2022 年 1 月和 2008 年 10 月。
- 一种担忧一个数字:VIF 查近似重复,杜宾–沃森和 Ljung–Box 查记忆,布罗施–帕甘查离散,雅尔克–贝拉查形状,库克距离查单个月份。
- 留意常数列:VIF 需要带常数列的矩阵,回归变量从位置 1 开始。
- 单独的高 R² 什么也证明不了:两个有趋势的价格回归得漂亮,杜宾–沃森统计量会揭穿它。
实验:评分内容
- 用数组 API 做 OLS10 分
- 方差膨胀因子20 分
- 四个残差检验20 分
- 影响最大的月份15 分
- 伪回归15 分
- 完整诊断20 分