
简介应用回归分析第四版课后习题集答案解析何晓群、刘文卿以doc文档呈现是统计学及相关专业学生课后巩固与备考的实用资料。资源共1个doc文件压缩包约276KB内容聚焦回归分析关键知识点与证明题解答涵盖随机误差项的意义、线性回归模型的基本假设、一元与多元回归模型的假定条件、平方和分解公式SSTSSESSR的证明、三种检验关系的验证、加权最小二乘法消除异方差的思想与方法等章节常见题型。已有1639人学习下载。通过这份解析读者可以对照教材习题梳理解题步骤理解证明过程中涉及的统计思想与公式推导尤其适合正在修读回归分析课程、需要完成课后习题或准备考研复试的同学既可用于平时巩固也适合考前冲刺时用来检验掌握程度、突破证明难点提升对回归模型基础理论的理解和应用能力。1. 从随机误差项入场回归分析的第一道门槛拿到《应用回归分析第四版》的课后习题解建议先跳过计算题直接看第一章“回归模型中随机误差项ε的意义”那道简答题的答案。它回答了一个新手最容易忽略的问题回归模型为什么写成 y β₀ β₁x ε而不是一个确定的等式。ε 的引入把变量间关系描述为随机方程让研究者能借助随机数学方法处理观测数据同时它也是一种“模型边界意识”——未纳入解释变量的偶然因素全部被归入这个误差项回归方程因此不追求穷尽所有因素只追求在给定信息下做最优推断。这份材料从ε的定义、一元回归的假设体系一路推到多元回归、异方差处理、变量选择、岭回归和主成分回归覆盖一门回归分析主干课的全部重点。适合考研复试备考、统计课复习以及需要系统补回归基础的数据类工程师。后续无论转向逻辑回归、时间序列还是生存分析中的 Cox 回归这册书里的假设检验与残差分析思路都会被反复复用。2. 一元线性回归的假设体系从零均值到σ²的无偏估计2.1 四个假设决定了一整套检验方法一元线性回归模型的标准写法是 yᵢ β₀ β₁xᵢ εᵢ。教材给出的四点基本假定解释变量 X 是确定性变量Y 是随机变量εᵢ 具有零均值、同方差和不序列相关性E(εᵢ)0Var(εᵢ)σ²Cov(εᵢ, εⱼ)0随机误差项 ε 与解释变量 X 不相关Cov(Xᵢ, εᵢ)0εᵢ 服从零均值、同方差、零协方差的正态分布 εᵢ~N(0, σ²)。这些假设不是课本装饰。零均值保证估计无偏同方差保证 OLS 是最小方差线性无偏估计BLUE不相关保证标准误估计有效正态分布则是 t 检验与 F 检验的前提条件。回归诊断的核心工作就是逐一检验这些假设是否成立残差图看方差是否稳定Durbin-Watson 统计量看序列相关Q-Q 图看正态性。后续章节处理异方差本质上就是放宽第二条假设的等方差条件。2.2 两个恒等式正规方程的几何解释教材 2.3 要求证明 Σeᵢ 0 且 Σeᵢxᵢ 0。这两个式子不是经验结论而是最小二乘正规方程的直接推论。对残差平方和 Q Σ(yᵢ − β₀̂ − β̂₁xᵢ)² 分别对 β̂₀、β̂₁ 求偏导并令其为零得到的正规方程正好给出这两条关系。几何上看OLS 是把观测向量 y 投影到由常数项和 x 张成的列空间上残差向量落在该空间的正交补空间中所以残差与 x 天然正交。含义是经过回归后剩余变化里已经不存在能够通过 x 解释的系统性信息。这也解释了为什么残差图里出现明显趋势时说明模型形式有问题。提示当模型去掉截距项时Σeᵢ 0 不一定成立但 Σeᵢxᵢ 0 依然成立。手推证明时先确认模型是否包含常数项不要套错前提。2.3 平方和分解与三种检验的等价关系平方和分解公式 SST SSE SSR 的证明思路是把总离差拆成两部分(yᵢ − ȳ) (yᵢ − ŷᵢ) (ŷᵢ − ȳ)平方后展开得到交叉项 Σeᵢ(ŷᵢ − ȳ)。由于 ŷᵢ 是 y 的线性组合结合 Σeᵢ 0 和 Σeᵢxᵢ 0交叉项恰好为 0于是分解成立。由此定义决定系数 R² SSR/SST表示回归平方和占总离差平方和的比例。一元回归中三种常用检验在数值上存在严格对应关系检验类型统计量形式与 t/F 的关系回归系数 t 检验t β̂₁ / s(β̂₁)t² F方程显著性 F 检验F MSR / MSEF(1, n−2)相关系数显著性检验t r√(n−2) / √(1−r²)与系数 t 同值这段关系在实践中很有用。手算回归结果时如果 F 和 t 对不上优先检查 SSR 与 SSE 是否计算错误用 Excel 或计算器得到的 p 值不一致也可以借此快速定位是平方和分解出了问题还是自由度用错。2.4 σ²的无偏估计为什么要除以 n−2教材第 2.10 题要求证明 SSE/(n−2) 是 σ² 的无偏估计。关键一步是求残差的方差。残差向量 e (I − H)y其中 H X(X′X)⁻¹X′ 是帽子矩阵一元回归时其对角元为 hᵢᵢ 1/n (xᵢ − x̄)²/Sxx。由此得到 Var(eᵢ) σ²(1 − hᵢᵢ)。对残差平方和取期望时因为 E(eᵢ) 0所以 E(eᵢ²) Var(eᵢ)于是 E(SSE) σ²Σ(1 − hᵢᵢ) σ²(n − tr(H))。tr(H) rank(X) 2最终 E(SSE) (n − 2)σ²。这就是为什么均方误差要除以 n−2 而不是 n自由度损失在截距和斜率两个参数上。可以用一段短代码验证这个结论import numpy as np np.random.seed(0) sigma2_true 4.0 n 30 mse_list [] for _ in range(5000): x np.random.uniform(0, 10, n) y 3 0.6 * x np.random.normal(0, np.sqrt(sigma2_true), n) X np.column_stack([np.ones(n), x]) beta, _, _, _ np.linalg.lstsq(X, y, rcondNone) resid y - X beta mse (resid ** 2).sum() / (n - 2) mse_list.append(mse) print(np.mean(mse_list))逻辑说明对每组模拟样本用最小二乘得到残差除以 n−2 后记为 MSE重复 5000 次取平均结果应接近真实 σ² 4。若把除数改成 n均值会稳定偏低这正是自由度惩罚的意义。参数上 x 在 0 到 10 间均匀取值误差方差固定为 4样本量 30 能保证估计稳定性。3. 多元回归的 R² 陷阱与加权最小二乘异方差下的参数估计修正3.1 R²0.9801 为什么不能说明模型理想一个回归方程的复相关系数 R0.99样本决定系数 R²0.9801初看非常理想但教材明确判定不能据此认为方程理想。原因有三层样本容量较小而变量个数较多时决定系数容易被“撑大”R² 衡量的是 Y 与 X₁,…,X_p 整体线性关系的拟合程度与单个回归系数是否显著没有直接关系在样本容量固定时往模型里增加解释变量必定减少自由度R² 随之增大这种增大与拟合好坏无关。实际操作中看到高 R² 后下一步应立刻看 F 检验和每个系数的 t 检验。如果整体显著但个别系数不显著可能存在冗余变量或共线性如果整体也不显著高 R² 很可能只是样本量过小造成的假象。判断回归方程优劣R² 只能作为参考指标不能单独作为依据。3.2 异方差如何破坏普通最小二乘估计当误差项方差随观测变化即 Var(εᵢ) σᵢ² 不再恒定OLS 估计仍然是无偏的但不再是最小方差线性无偏估计。原因很直观残差平方和中每一项的地位不再相等误差方差大的观测在平方和里取值偏大、作用被放大回归线被拉向方差大的区域导致方差小的区域拟合效果变差。诊断异方差的常见做法是画残差对拟合值或某个自变量的散点图若残差分布呈漏斗形展开说明方差随自变量水平增大。更规范的检验是计算残差绝对值与自变量的等级相关系数相关系数显著说明方差结构与自变量有关。确认异方差后再用普通 OLS 做显著性检验标准误和 p 值都不可靠。3.3 加权最小二乘的权数如何选加权最小二乘WLS的思想是对残差平方较大的观测赋予较小的权数对残差平方较小的观测赋予较大的权数校正残差信息的重要程度。理论最优权数是误差项方差的倒数 wᵢ 1/σᵢ²但 σᵢ² 未知实际中需要通过数据估计。教材给出了两条实用路径当误差方差与某个自变量取值的平方成比例即 σᵢ² k·xⱼᵢ² 时取 wᵢ 1/xⱼᵢ²更一般地当 σᵢ² k·xⱼᵢᵐ 时取 wᵢ 1/xⱼᵢᵐm 为待定参数。确定 m 的常见做法是用残差绝对值对自变量做对数回归拟合 ln|eᵢ| b₀ m·ln xⱼᵢ斜率就是 m 的估计值。SPSS 多元线性回归分析模块中有 Weight Estimation 过程可以自动搜索最优幂次手写代码时用 statsmodels 的 WLS 更直接import numpy as np import statsmodels.api as sm np.random.seed(42) x np.linspace(1, 10, 60) y 2 0.8 * x x * np.random.normal(0, 0.4, sizex.shape[0]) X sm.add_constant(x) # 第一步OLS 残差作为方差结构估计的依据 ols sm.OLS(y, X).fit() # 第二步ln|e| b0 m ln x 估计幂参数 log_x np.log(x) log_abs np.log(np.abs(ols.resid) 1e-8) m np.polyfit(log_x, log_abs, 1)[0] # 第三步取权数 w 1 / x^m做加权最小二乘 w 1.0 / (x ** m) wls sm.WLS(y, X, weightsw).fit() print(f估计的 m {m:.2f}) print(wls.params)逻辑说明先用普通 OLS 拿到残差残差绝对值随 x 增大的趋势通过对数线性回归映射为斜率 m再将权重设置为 x^(−m)。权重数组长度必须与样本数一致statsmodels 的 WLS 会自动把 weights 乘到平方和各项上。模拟数据里真实斜率为 0.8OLS 在高方差区被拉偏WLS 的结果更接近真实值。参数细节上np.polyfit(log_x, log_abs, 1)[0] 返回一阶多项式斜率加 1e-8 是为了避免残差为 0 时对数无定义不影响 m 的方向判断。3.4 选择权重变量时看等级相关系数多元回归里误差方差通常与某一个自变量水平相关选哪个变量做权重实践中看残差绝对值与各自变量的等级相关系数取相关系数绝对值最大的那个。另一种更稳妥的做法是使用迭代加权最小二乘估计权重、做 WLS、再更新残差和权重重复两三轮后参数估计基本稳定。注意加权最小二乘的 R² 与普通 OLS 的 R² 不在同一尺度上不要直接比较数值大小。4. 变量选择的进退之间前进法、后退法与岭回归处理共线性4.1 前进法与后退法的搜索策略前进法从空模型开始Y 对全部自变量分别建立 m 个一元回归计算 F 检验值选择偏回归平方和显著且 F 值最大的变量进入方程之后每一步只引入一个变量对剩余变量逐一加入后重新计算 F 检验值继续选最大的显著变量进入重复到所有未被引入变量的 F 检验值均小于临界值 Fα(1, n−p−1) 时停止。后退法方向相反先建立包含全部自变量的全模型计算每个系数的 t 检验和 F 检验剔除最不显著、即 P 值最大且大于临界值的变量再对剩余变量建立新方程并重复剔除直到剩余所有 p 个自变量的 F 检验值均大于临界值时停止。方法起点选入/剔除依据停止条件主要风险前进法空模型每一步引入 F 最大且显著的变量未引入变量 F 均小于临界值已进入变量后续可能变不显著后退法全模型每一步剔除 t 或 F 最不显著的变量剩余变量 F 均大于临界值自变量多时全模型可能无法拟合逐步回归空模型引入后每步再检查剔除无变量可进可出计算量较大实际项目里逐步回归最常用因为它既处理了前进法“只进不出”的缺点也避免了后退法在变量过多时第一步就拟合失败的问题。停止条件中的自由度 n−p−1 会随模型变化手算临界值时注意同步更新。4.2 多重共线性诊断的三个指标多重共线性会让最小二乘估计方差异常大回归系数的符号也可能与专业知识相悖。常用诊断指标方差扩大因子 VIFⱼ 1/(1−Rⱼ²)其中 Rⱼ² 是 xⱼ 对其余自变量回归的决定系数VIF≥10 提示该变量存在较强共线性条件数 κ √(λmax/λmin)λ 为 X′X 的特征值κ≥30 应引起注意κ≥100 表示严重共线性特征向量方差分解比可以进一步定位是哪几个变量共同造成了共线性。提示VIF 的临界值 10 是经验值样本量较小时建议放宽到 5 或者结合条件数综合判断单个指标容易出现误判。4.3 岭回归用有偏估计换稳定方差岭回归的定义是给 X′X 加上一个正常数矩阵 kI估计式为 β̂(k) (X′X kI)⁻¹X′y。当 X′X 接近奇异时X′X kI 接近奇异的程度大幅下降回归得以完成。代价是 β̂(k) 是有偏估计不再满足 BLUE 条件但偏差换来了方差的大幅下降系数符号往往更符合专业预期。选择岭参数 k 的三种方法岭迹法观察 k 从 0 增大时各系数估计值的变化轨迹取所有岭估计基本稳定、符号合理且残差平方和增大不太多的点方差扩大因子法令岭估计的 VIF 对角元全部小于 10选满足条件的最小 k残差平方和法在 SSE(k) 不超过 c·SSE(OLS) 的约束下选最大的 kc 通常取 1.02 或 1.05。以 Python 实现岭迹图并输出交叉验证选出的最优 kimport numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, RidgeCV from sklearn.preprocessing import StandardScaler # 假设 X 为 (n, p) 原始数据y 为 (n,) 响应 scaler StandardScaler() X_std scaler.fit_transform(X) alphas np.logspace(-3, 3, 100) # 用留一交叉验证选最优正则化强度 rcv RidgeCV(alphasalphas, store_cv_valuesTrue).fit(X_std, y) print(最优 alpha:, rcv.alpha_) # 画出岭迹 coefs [] for a in alphas: ridge Ridge(alphaa, fit_interceptTrue) ridge.fit(X_std, y) coefs.append(ridge.coef_) plt.plot(alphas, coefs) plt.xscale(log) plt.xlabel(alpha (k)) plt.ylabel(standardized coefficient) plt.show()逻辑说明RidgeCV 的 store_cv_valuesTrue 会保存每次交叉验证的误差最终返回平均误差最小的 alpha。岭迹图上每条线对应一个自变量随着 alpha 增大系数向 0 收缩挑系数不再剧烈抖动、符号合理的位置作为 k与教材的岭迹法思路一致。标准化处理保证不同量纲的变量收缩速度可比否则量级大的变量会被误判为更“重要”。4.4 用岭回归选择自变量的三条原则教材第七章给出了可以用在工作里的清单标准化岭回归系数比较稳定且绝对值很小的自变量剔除k 值较小时系数绝对值不小但随 k 增大迅速趋近于 0 的变量剔除标准化系数很不稳定的变量剔除。去掉哪些变量、去掉几个最终标准是剔除后重新做岭回归的效果。实际操作中还可以与 Lasso 对照Lasso 的 L1 惩罚会把不重要的系数直接压缩到 0变量选择结果更稀疏适合作为岭回归结果的交叉验证。5. 从主成分回归到偏最小二乘当解释变量内卷时怎么做5.1 主成分回归的建模步骤主成分回归PCR把共线性问题转化为降维问题分四步对 X 做标准化处理计算 X′X 的特征值 λ₁≥…≥λp按累计贡献率达到 85% 以上的标准取前 k 个主成分用这 k 个主成分的得分做最小二乘回归把主成分上的系数还原为原始变量尺度的回归系数。还原计算是容易出错的一步设得分矩阵 T XVₖ回归系数 γ (T′T)⁻¹T′y则原始系数 β Vₖγ还原后即可写出原变量形式的回归方程。5.2 偏最小二乘与 PCR 的本质区别偏最小二乘PLS不同于 PCR 先单独提取 X 的主成分而是同时提取 X 和 Y 的潜变量使两边的得分协方差最大化。它在样本量小、自变量个数多于样本量、自变量间存在严重共线性时优于普通 OLS。PCR 只关注 X 自身的变异结构提取出的成分未必与 Y 高度相关PLS 在提取成分时把 Y 的信息纳入目标函数解释与预测兼顾这也是教材把两者并列放在第八章作为论述题的原因。5.3 快速验证用交叉验证决定 PLS 成分数实际拟合 PLS 模型前先要决定保留几个潜变量。常见做法是用交叉验证计算 Q²即交叉验证下的 R²取 Q² 最大时对应的成分数避免只按训练集拟合优度选成分导致的过拟合。import numpy as np from sklearn.cross_decomposition import PLSRegression from sklearn.model_selection import cross_val_predict from sklearn.metrics import r2_score # 模拟 20 个样本、8 个自变量后 4 列与前 4 列高度相关 np.random.seed(7) X np.random.randn(20, 8) X[:, 4:] X[:, :4] 0.1 * np.random.randn(20, 4) y 2 * X[:, 0] - 1.5 * X[:, 1] 0.6 * np.random.randn(20) best_n, best_q2 1, -np.inf for n_comp in range(1, 6): pls PLSRegression(n_componentsn_comp) y_pred cross_val_predict(pls, X, y, cv5) q2 r2_score(y, y_pred) if q2 best_q2: best_n, best_q2 n_comp, q2 pls_best PLSRegression(n_componentsbest_n).fit(X, y) print(最佳成分数:, best_n) print(Q2:, round(best_q2, 3))逻辑说明cross_val_predict 在 5 折交叉验证下给出外样本预测值r2_score 计算的是预测值与真实值的决定系数即 Q²。循环 1 到 5 个成分后取 Q² 最大的组合。模拟数据中后四列由前四列加小噪声生成制造典型共线性结构PLS 用两个成分即可恢复 y 的主要信息。若某个自变量的 VIP 分数低于 0.8按经验可以直接认为它对模型解释贡献有限删除后重新拟合 PLS 即可。本文还有配套的精品资源点击获取