想象一下,你要为家人规划一次完美的自驾游。出发前,你根据距离估算油费,根据人数估算餐费,根据天数估算住宿费——这些“根据什么推算什么”的思维,就是统计建模的雏形。而 R 语言,就像一位经验丰富的旅行规划师,能帮你从一堆乱糟糟的历史账单中,总结出“每跑 1 公里要花 0.8 元油钱”这样的规律。 不过,生活从来不是一条笔直的线。有时油费会因油价波动而跳跃,有时餐费会因某天吃大餐而暴涨。这时候,普通的线性回归就像只会画直线的规划师,而广义线性模型(GLM)则像一个能灵活变通的向导:能处理“是与否”“计数多少”这类非线性问题。本文将带你从线性回归出发,一路走到广义线性模型,途中还会经过模型诊断的“体检站”、变量选择的“精简行李”环节,以及岭回归与 Lasso 的“智能打包”技巧。
掌握 R 统计建模,意味着你具备了用数据说话的核心能力——无论是业务分析、科研实验还是算法建模,你都能从数据中找到可信的规律,并用严谨的统计方法为决策保驾护航。
可视化演示
展示线性回归散点拟合、GLM链接函数曲线对比及K折交叉验证数据划分过程,理解R统计建模核心方法。
本节配有交互动效(进入视口后自动加载,约 3KB)。
线性回归最小二乘拟合 散点图展示观测数据,红色回归线表示最小二乘拟合 残差线连接观测值与拟合值,反映模型误差 y = β₀ + β₁x + ε 线性回归通过最小化残差平方和估计回归系数
回归分析引论
想象你是一位经验丰富的房屋评估师。有人请你估算一套房子的价值,你会不自觉地将它与周围已成交的房子对比:面积大的贵,地段好的贵,房龄新的贵。这种“参照已知案例、寻找关键因素、推断目标数值”的思维过程,就是回归分析的思想雏形。
在统计学中,回归分析正是研究变量之间依赖关系的方法。与“相关分析”不同(相关只描述两个变量是否一起变化),回归分析明确地划分了角色:一个或多个变量充当“解释者”(自变量),另一个变量充当“被解释者”(因变量)。以房价为例,面积、地段、房龄是解释者,房价是被解释者。回归分析的产物,就是一张“定价公式”——给定解释者的取值,就能估出被解释者的期望值。
从技术角度说,回归分析的第一步是明确数据形态。假设我们有 $n$ 个样本,每个样本有 $p$ 个自变量 $x_1, x_2, \ldots, x_p$ 和一个因变量 $y$,回归的目标就是找到系数 $\beta_0, \beta_1, \ldots, \beta_p$,使下面的关系成立:
在 R 中,我们使用 lm() 函数(linear model 的缩写)来拟合这个“定价公式”。就像评估师看一眼房子就能报出价格,lm() 看一眼数据就能算出系数。但在此之前,我们需要先做好数据准备:处理缺失值、检查异常值、确认变量类型。毕竟一位专业的评估师,也不会在没有看房的情况下报价。
回到房屋评估的比喻:回归分析就像一位评估师的工作流程——先看房(数据探索),再找参考(相关分析),最后定价(构建模型)。理解了这一流程,你就掌握了统计建模的第一块基石。
- 因变量 $y_i$第 $i$ 个样本的观测结果,也就是我们要预测的对象(如房价)。
- 自变量 $x_{ij}$第 $i$ 个样本在第 $j$ 个特征上的取值(如面积)。
- 截距 $\beta_0$当所有自变量都为 0 时的基准值(如地皮的基础价格)。
- 回归系数 $\beta_j$第 $j$ 个自变量每增加 1 个单位,$y$ 平均变化多少。
- 误差项 $\varepsilon_i$模型无法解释的随机波动(如讨价还价的空间)。
最小二乘原理
评估师报完价后,客户可能会问:“你的估价准不准?”评估师会拿出以往的交易记录,逐一比对:这是 300 万,我估了 310 万,差 10 万;那是 450 万,我估了 440 万,差 -10 万……把所有“差别”放在一起,就构成了衡量模型好坏的基础。
统计学中,这个“差别”被称为残差(residual),即真实值与预测值之差。模型的目标就是让这些残差尽量小。但“小”该如何度量?如果简单地把所有残差相加,正负误差会互相抵消,出现“两个大误差互相掩盖”的假象。因此,最小二乘法采用了一个聪明的策略:将残差先平方(消除正负号),再求和(得到总误差)。这就是残差平方和(RSS)。
数学上,我们要找到一组系数 $\beta$,使得目标函数 $S$ 最小:
用矩阵形式可以简洁地写出最小二乘的解:
回到评估师的比喻:最小二乘法就像评估师不断微调自己的定价公式,直到历史交易的“误差平方和”达到最小。这个过程不需要瞎猜,而是有现成的数学公式——在 R 中,只需一行 lm(y ~ x1 + x2, data = df) 就能自动完成所有计算。
lm() 函数正是基于此计算的。- 设计矩阵 $\mathbf{X}$把每个样本的特征按行堆叠,得到 $n \times (p+1)$ 的矩阵(第一列全为 1,对应截距)。
- 转置相乘 $\mathbf{X}^{\top}\mathbf{X}$得到一个对称的 $(p+1)\times(p+1)$ 矩阵,相当于“信息汇总”。
- 求逆 $(\mathbf{X}^{\top}\mathbf{X})^{-1}$把汇总信息“反解”出来,前提是矩阵可逆。
- 投影 $\mathbf{X}^{\top}\mathbf{y}$将因变量投影到特征空间。
- 系数解最终得到回归系数的封闭表达式。
模型诊断方法
评估师完成估价后,一位挑剔的客户可能会质疑:“你这公式靠谱吗?”这时评估师需要回头仔细检查自己的评估逻辑:是否有个别房子的价格明显偏离常规?是否有些因素之间存在重叠信息?这就好比人需要定期体检,模型也需要一套系统的“体检”流程——这就是模型诊断。
模型诊断的核心是残差分析。理想的残差应当像“白噪音”:围绕 0 随机波动,没有明显的模式。通过画四种诊断图,可以全面检查模型:
1. 残差 vs 拟合值图:检查线性关系是否成立、方差是否恒定。如果残差点呈“漏斗形”扩散,说明存在异方差性。
2. QQ 图:检查残差是否近似正态分布。点应大致落在一条直线上,严重偏离说明正态性假设可能不成立。
3. 位置-尺度图:进一步检查方差的稳定性。
4. 残差 vs 杠杆图:找出强影响点(高杠杆点),这些点对回归线的“拉扯”特别大。
除了残差,还有一个重要的诊断指标是方差膨胀因子(VIF),用于检测多重共线性——即自变量之间存在高度相关。这就好比评估房价时,“建筑面积”和“使用面积”高度相关,两者同时进入模型会造成系数估计不稳定。VIF 的计算方式如下:
回到体检的比喻:模型诊断就像体检报告——四个诊断图是常规检查(血压、心率、血常规、B超),VIF 则像专门检查“信息重叠”的专项化验。只有各项指标都合格,评估师的估价才令人信服。在 R 中,只需 plot(lm_model) 就能一次输出四张诊断图,再用 car::vif(lm_model) 完成共线性检查。
- 辅助回归将第 $j$ 个自变量对其他所有自变量做回归,得到决定系数。
- 决定系数 $R_j^2$辅助回归能解释 $x_j$ 变异的比例。
- 计算 VIF分母是辅助回归的残差比例,越小说明共线性越严重。
广义线性模型
假设评估师这次的任务变了:不再估算房价,而是判断一套房子在 30 天内能否卖出。这是一个“是/否”的问题,如果用普通线性回归去预测一个 0-1 变量,预测值可能跑到 1.5 或 -0.3,这显然不合理。此时,需要一位更灵活的“向导”——广义线性模型(GLM)。
GLM 的故事要从“指数族分布”讲起。普通线性回归假设 $y$ 服从正态分布,而 GLM 将这个假设放宽:$y$ 可以服从二项分布(是/否问题)、泊松分布(计数问题)、伽马分布(正数偏态问题)等。GLM 包含三个关键要素:
1. 随机成分:$y$ 服从某种指数族分布。
2. 系统成分:自变量的线性组合 $\eta = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p$。
3. 连接函数:将线性组合与 $y$ 的期望值联系起来,即 $g(\mu) = \eta$。
对于二分类问题,最常用的是 Logistic 回归,其连接函数是 logit 函数。它输出的不是房价,而是“卖出概率”,且这个概率被压缩在 0 到 1 之间,形成一条经典的 S 形曲线。Logistic 回归的数学形式如下:
对于计数数据(如一个月内房子被看房的次数),则使用 Poisson 回归,其连接函数是自然对数。无论哪种 GLM,R 中都通过 glm() 函数实现,只需指定 family 参数:binomial 对应 Logistic,poisson 对应 Poisson。
用“向导”来理解:普通线性回归是一位只会走直线的向导,遇到“是否卖出”这种二选一的路口就束手无策;GLM 则是一位经验丰富的向导,会根据路况选择工具——走平地用正态分布,走岔路口用二项分布,数人头用泊松分布。正因为这种灵活性,GLM 在医学、金融、社会科学中应用极广。
- 事件概率 $p$因变量为 1 的概率,如“30 天内卖出”的概率。
- 胜算比(Odds)发生与不发生的比率,取值范围为 0 到 $+\infty$。
- logit 变换对胜算比取自然对数,将范围扩展到整个实数轴。
- 线性预测器右边的线性组合,与普通回归的线性部分相同。
显著性检验
评估师给出了估价公式,但客户还要追问一句:“面积这个因素真的对房价有影响吗?还是你瞎猜的?”为了回答这个问题,统计学提供了一套“法庭审判”式的流程——显著性检验。它的核心逻辑是:先假设某个系数为 0(无罪推定),再判断数据是否足以推翻这个假设。
第一个常用检验是 t 检验,针对单个回归系数。其检验统计量为:
第二个常用检验是 F 检验,用于检验整个模型的显著性——即“所有系数是否同时为 0”。它比较的是“包含自变量的完整模型”和“只有截距的空模型”的拟合优度差异:
第三个工具是方差分析(ANOVA)。它把总变异分解为“组间变异”和“组内变异”,常用于比较多个分组变量的均值差异。在 R 中,anova() 函数可以输出方差分析表,显示每个变量对模型的贡献。这就好比评估师把房价差异分解为“不同地段造成的差异”和“同一地段内不同房子造成的差异”,前者大而后者小,说明地段确实是关键因素。
显著性检验就像法院的判决逻辑:t 检验是对单个嫌疑人的审判,F 检验是对整个犯罪团伙的审判,方差分析则是把总案情分解到每个线索上。有了这套流程,评估师的每个“定价依据”都能经得起客户的质询。
- 空模型残差只含截距的模型产生的残差平方和。
- 完整模型残差包含所有自变量的模型产生的残差平方和。
- 自由度$p$ 是自变量个数,$n-p-1$ 是完整模型的剩余自由度。
变量选择策略
评估师面对 50 多个潜在影响因素:面积、地段、房龄、楼层、朝向……如果把所有因素都塞进公式,不仅计算复杂,还可能包含大量无关变量,导致模型“过拟合”——在训练数据上表现极佳,面对新房子却预测失准。这时就需要变量选择,好比出行前收拾行李箱:只带最必要的东西。
经典的变量选择方法是逐步回归。它有三种模式:
- 向前选择:从空模型出发,每次加入一个“最显著”的变量。
- 向后剔除:从完整模型出发,每次删除一个“最不显著”的变量。
- 双向逐步:每一步既考虑加入新变量,也考虑剔除已有变量,直到达到某种平衡。
逐步回归需要一个评判标准来回答“该不该加入这个变量”。最常用的准则是 AIC(赤池信息准则):
除 AIC 外,BIC(贝叶斯信息准则)也是常用准则,其惩罚项更重,倾向于选择更简洁的模型。
变量选择还涉及一个重要话题:交互项。所谓交互效应,是指两个变量共同作用时对 $y$ 的影响不等于各自影响之和。比如“面积”和“地段”可能存在交互:在市中心,面积对房价的拉动更大;在郊区,面积的影响相对较小。在 R 中,用 y ~ x1 * x2 表示同时包含 $x_1$、$x_2$ 及它们的交互项 $x_1:x_2$。
收拾行李箱的比喻非常贴切:向前选择就像“先放最必需品,再加次要品”;向后剔除就像“先把所有东西塞进去,再扔掉用不上的”;AIC 则像称重器——既要带够衣物(拟合度),又不能超重(参数过多)。最后别忘了交互项——就像“运动鞋 + 运动服”的组合,单独带哪件都一般,搭配起来才发挥最大价值。
- 参数个数 $k$模型中系数(含截距)的总数,越多则惩罚越大。
- 对数似然 $\ln(L)$衡量模型解释数据的程度,越大表示拟合越好。
- AIC 计算拟合越好($-2\ln(L)$ 越小)且参数越少($2k$ 越小)的模型得分越低。
正则化与验证
评估师最后还要面对一个头疼的问题:当候选变量非常多(比如 100 个),甚至比样本量还多时,传统的逐步回归会变得极不稳定。这就好比带了一个巨大的旅行箱,里面塞满各种衣物,每一个都有一点用,但箱子重得根本提不动。此时需要更智能的方案——正则化。
岭回归(Ridge Regression) 的思路是:不删除任何变量,但给每个系数“瘦身”。它在最小二乘的目标函数后加了一项 L2 惩罚项,迫使系数整体变小但不会精确等于 0:
Lasso(套索回归) 则更进一步,使用 L1 惩罚项。它的独特之处在于:当 $\lambda$ 足够大时,部分系数会被精确压缩为 0,从而实现自动变量选择。Lasso 的目标函数如下:
有了正则化,还需要回答一个关键问题:“选出的模型在真实世界中表现如何?”K 折交叉验证是标准答案。它将数据随机分成 K 份(通常 K=5 或 10),每次用 K-1 份训练模型、1 份验证预测效果,轮流 K 次后汇总平均误差。这就好比评估师将自己的定价公式在多个不同小区中反复测试,而非只在自家小区自卖自夸。
交叉验证的流程可以概括为:
回到旅行箱的比喻:岭回归是“把所有衣物都压紧塞进去”,Lasso 是“精简到只剩最必要的几件”,交叉验证则是“在不同天气条件下试穿,确保这套行头到哪里都合适”。R 中的 caret 包提供了一个统一的框架——train() 函数里设置 method = "glmnet" 和 trControl = trainControl(method = "cv", number = 10),即可轻松完成正则化与交叉验证的组合应用。掌握了这套工具,你就能在复杂数据面前游刃有余,既不过度拟合也不丢失关键信息。
glmnet 包提供了 glmnet() 函数实现岭回归与 Lasso,通过参数 alpha=0(岭回归)或 alpha=1(Lasso)切换。- L1 惩罚系数绝对值的和。
- 稀疏解特性L1 惩罚在原点处“不可导”,导致部分系数恰好为 0。
- 最优 $\lambda$通常通过交叉验证选择使预测误差最小的 $\lambda$。
- 对 $k=1,2,\ldots,K$用第 $k$ 份做验证集,其余 K-1 份做训练集。
AI 应用场景
场景一:电商用户购买行为预测
阶段:特征工程与模型选择
解决的问题:传统做法是运营人员手动挑选几条经验规则(如“浏览超过 5 次的用户会购买”),既粗略又不可靠。用 Logistic 回归(GLM 的一种)对用户浏览行为、收藏行为、历史订单等特征建模,可以精确输出每个用户的购买概率,并借助 Lasso 自动筛选出最重要的行为特征。
具体案例:某电商平台用 R 的 glm() 函数拟合购买预测模型,将 AUC 从 0.68 提升到 0.82。通过与决策树对比发现,Logistic 回归虽然简单,但稳定性和可解释性都更优,且训练时间从 3 小时降至 2 分钟。
场景二:医学临床试验疗效评估
阶段:统计推断与假设检验
解决的问题:在临床试验中,研究者需要判断新药是否显著优于安慰剂。用 t 检验和方差分析(ANOVA)分别处理连续型疗效指标和分组比较;若需要控制年龄、性别等混杂因素,则用多元线性回归或 ANCOVA 模型。
具体案例:某医药团队评估降压药效果,用 R 拟合 ANCOVA 模型,控制基线血压后,药物组的收缩压平均多下降 8.3 mmHg(p<0.001),模型诊断图显示残差符合正态性假设,结论顺利通过审评。
场景三:金融风控中的违约预测
阶段:模型验证与部署监控
解决的问题:银行需要预测借款人是否会违约,这是典型的二分类问题。用 Lasso 在 200+ 个信贷特征中筛选出 23 个关键变量,建立评分卡模型;通过 10 折交叉验证评估模型稳定性,确保在不同时间段的数据上表现一致。
具体案例:某消费金融公司用 R 的 glmnet 包构建 Lasso-Logistic 模型,KS 值从 0.31 提升到 0.44,同时变量数从 87 个降至 23 个,模型上线后月度坏账率下降 15%。
Python 演示
import numpy as npimport pandas as pdfrom sklearn.linear_model import LinearRegression, LassoCVfrom sklearn.model_selection import cross_val_score, KFoldfrom sklearn.preprocessing import StandardScalerfrom sklearn.metrics import mean_squared_error np.random.seed(42)n = 200p = 5X = np.random.randn(n, p)X[:, 2] = X[:, 1] + np.random.randn(n) * 0.3 # 人为引入共线性true_beta = np.array([1.5, -2.0, 0.0, 0.5, 0.0])y = X @ true_beta + np.random.randn(n) * 0.8 X_scaled = StandardScaler().fit_transform(X) # 线性回归拟合lr = LinearRegression()lr.fit(X_scaled, y)print("线性回归系数:", np.round(lr.coef_, 3))print("R^2:", round(lr.score(X_scaled, y), 4)) # 交叉验证评估kfold = KFold(n_splits=5, shuffle=True, random_state=1)cv_scores = cross_val_score(lr, X_scaled, y, cv=kfold, scoring="neg_mean_squared_error")print("5折CV平均MSE:", round(-cv_scores.mean(), 4)) # Lasso自动变量选择 + 交叉验证lasso = LassoCV(cv=5, random_state=0, max_iter=10000)lasso.fit(X_scaled, y)print("Lasso系数:", np.round(lasso.coef_, 3))print("Lasso选中的变量索引:", np.where(lasso.coef_ != 0)[0].tolist())print("Lasso最优alpha:", round(lasso.alpha_, 4)) # 残差诊断(简单版)pred = lr.predict(X_scaled)resid = y - predprint("残差均值(应接近0):", round(resid.mean(), 6))print("残差标准差:", round(resid.std(), 4))
X[:, 2] = X[:, 1] + np.random.randn(n) * 0.3人为制造共线性,后续 Lasso 会识别出冗余变量。lr = LinearRegression()对应 R 中的lm(),最小二乘拟合。cross_val_score(...)类似 R 中caret::train(trControl = trainControl(method = "cv")),做 K 折交叉验证。LassoCV(cv=5)自动用交叉验证选择最优lambda,对应 R 中glmnet::cv.glmnet()。np.where(lasso.coef_ != 0)[0]找出 Lasso 将哪些变量压缩为 0,实现自动变量选择。resid.mean()检查残差均值是否接近 0,判断模型是否存在系统性偏差。
常见误区
误区“我看到两个变量相关系数是 0.8,说明它们关系很强,那回归系数也一定是 0.8。”初学者往往直接把相关系数当作回归系数,甚至用相关系数的大小直接判断变量的重要性。
正解相关系数衡量的是两个变量间的线性关联强度(无量纲,范围 -1 到 1),而回归系数衡量的是自变量每变化一个单位时因变量的平均变化量(有量纲)。以房价为例,面积与房价的相关系数可能是 0.8,但回归系数可能是 2 万/平方米——两者含义完全不同。回归系数还受其他变量影响,多元回归中的系数是“控制了其他变量”后的净效应。
为何常见:初学者混淆二者,是因为在简单一元回归中,回归系数与相关系数存在数学关系($\beta = r \cdot s_y / s_x$),容易让人误以为它们是一回事。
误区“这个变量的 p 值只有 0.001,说明它特别重要!”初学者把 p 值当成效应大小的度量。
正解p 值衡量的是“在系数真实为 0 的假设下,观察到当前或更极端数据的概率”。p 值小说明证据充分,但不代表效应大。一个变量的效应可能极小(比如房价每增加 1 平方米仅涨 10 元),但样本量很大时 p 值依然可以小于 0.001。要用置信区间或标准化系数来判断效应大小,而非只看 p 值。
为何常见:论文和报告中普遍“用星号标 p 值”的做法,让读者形成了“星号越多越重要”的直觉。
误区“Logistic 回归的系数是 0.5,说明自变量每增加一个单位,概率增加 0.5。”
正解Logistic 回归的系数是“对数胜算比”(log-odds)的变化量,不是概率的变化量。正确解释是:自变量每增加一个单位,胜算比(odds)变为原来的 $e^{0.5} \approx 1.65$ 倍。概率的变化是非线性的,取决于当前概率水平:概率在 0.5 附近时变化最快,在 0.1 或 0.9 附近时变化很慢。这就是为什么需要连接函数,也是初学者最易误解的点。
为何常见:人们习惯用线性思维理解一切,看到“回归系数”就自然联想到“每单位变化导致因变量变化多少”,忽略了链接函数(logit)带来的非线性变换。
误区“我每次建模都随机抽 70% 做训练、30% 做测试,这就是交叉验证了吧?”
正解一次性划分训练集/测试集(holdout)只是最简单的验证方式,它严重依赖于划分的随机性——运气不好时测试误差会波动很大。K 折交叉验证的本质是“轮流当裁判”:将数据分成 K 份,每次用 K-1 份训练、1 份验证,循环 K 次后取平均,从而更稳定地估计模型泛化能力。尤其是在调参(如选择 Lasso 的 $\lambda$)时,必须用交叉验证而非单一划分。
为何常见:很多入门教程为了简化概念,只介绍 train/test split,不强调重复划分的思想,导致学习者形成“一次划分就是验证”的印象。
误区“岭回归和 Lasso 都是把系数变小,所以它们的效果一样。”
正解岭回归使用 L2 惩罚,将所有系数均匀压缩但不会压缩到 0;Lasso 使用 L1 惩罚,在压缩系数的同时会将一部分系数精确变为 0,实现变量选择。这在几何上表现为:L2 惩罚的约束区域是圆形(系数可以均匀缩小但不会在坐标轴上着陆),L1 惩罚的约束区域是菱形(角点落在坐标轴上,对应系数为 0)。因此 Lasso 适合特征多且需要筛选的场景,岭回归适合所有特征都有用且需要保留的场景。
为何常见:两种方法在表面上看都是“加一个惩罚项”,初学者容易忽视 L1 与 L2 在几何性质上的本质差异。
面试题
Q1. 线性回归模型中,残差是指什么?
- A.因变量的真实值
- B.自变量的观测值
- C.真实值与预测值之差← 正确答案
- D.回归系数的估计值
答案:C。残差是每个样本的真实值与模型预测值之间的差异。它衡量模型对单个样本的拟合误差,最小二乘法的目标就是让所有残差的平方和最小。选项 A 是观测值,B 是输入特征,D 是参数估计,均不符合残差定义。
Q2. 在 R 中,拟合线性回归模型使用哪个函数?
- A.
glm() - B.
lm()← 正确答案 - C.
summary() - D.
plot()
答案:B。lm() 是 R 中拟合线性回归模型的标准函数,取自"linear model"。glm() 用于广义线性模型,summary() 用于输出模型摘要,plot() 用于绘图诊断。注意区分 lm() 和 glm() 的适用场景。
Q3. 多重共线性诊断通常使用什么指标?
- A.残差平方和 RSS
- B.决定系数 R²
- C.方差膨胀因子 VIF← 正确答案
- D.AIC 信息准则
答案:C。VIF(方差膨胀因子)专门用于检测自变量之间的多重共线性,VIF 大于 10 表示共线性严重。RSS 衡量拟合误差,R² 衡量解释能力,AIC 用于模型选择,三者都不直接诊断共线性。
Q4. Lasso 回归与岭回归最本质的区别是什么?
- A.Lasso 计算更快
- B.Lasso 将部分系数压缩为 0← 正确答案
- C.Lasso 不需要标准化
- D.Lasso 适用于小样本
答案:B。Lasso 使用 L1 惩罚项(绝对值),其约束区域是菱形,角点落在坐标轴上,因此会将部分系数精确压缩为 0,实现自动变量选择。岭回归使用 L2 惩罚项(平方),约束区域是圆形,系数会被均匀压缩但不会为 0。
Q5. 广义线性模型与普通线性回归的本质不同在于?
- A.GLM 不使用最小二乘法
- B.GLM 允许因变量服从非正态分布← 正确答案
- C.GLM 不需要截距项
- D.GLM 只能处理线性关系
答案:B。GLM 通过引入连接函数,将因变量的期望值与线性预测器联系起来,允许因变量服从二项分布、泊松分布等指数族分布,因此可以处理二分类、计数等类型的数据。普通线性回归是 GLM 在正态分布 + 恒等连接下的特例。
Q6. 交互项 x1:x2 的系数显著说明什么?
- A.x1 和 x2 彼此独立
- B.x1 对 y 的影响不随 x2 变化
- C.x1 与 x2 对 y 的影响相互依赖← 正确答案
- D.x1 与 x2 的相关性为 0
答案:C。交互项显著表示 x1 对 y 的效应量会随 x2 的不同而变化。例如面积对房价的影响在市中心和郊区不同,这就是交互效应。选项 A、B、D 描述的都是“无交互”的情形,与交互项显著的结论相反。
Q7. 在 K 折交叉验证中,K 值的选择主要影响什么?
- A.模型复杂度
- B.偏差与方差的权衡← 正确答案
- C.数据的正态性
- D.系数的显著性
答案:B。K 越大,训练集越大、验证集越小,模型的偏差越低(更多数据训练)但验证误差方差越高(每次只验证少量样本);K 越小则相反。K=10 是常用的折中方案,它平衡了偏差和方差,且计算量可控。
Q8. 模型的哪些诊断指标可以用于检测模型是否存在问题?
- A.QQ 图中残差偏离直线← 正确答案
- B.残差 vs 拟合值图呈漏斗形← 正确答案
- C.VIF 值大于 10← 正确答案
- D.R² 大于 0.9
答案:ABC。QQ 图偏离直线说明残差非正态;残差漏斗形说明存在异方差;VIF>10 说明共线性严重,这三者都指向模型问题。R² 大于 0.9 本身只说明拟合优度高,并不直接表示模型有问题,还可能意味着过拟合。
Q9. 关于 AIC 与逐步回归,下列说法正确的是?
- A.AIC 越小表示模型越优← 正确答案
- B.逐步回归只能向前不能向后
- C.AIC 包含对参数数量的惩罚← 正确答案
- D.逐步回归保证找到全局最优模型
答案:AC。AIC = 2k − 2ln(L),既衡量拟合优度又惩罚参数数量,值越小越优,所以 A、C 正确。逐步回归有向前、向后、双向三种模式,B 错误;逐步回归是贪心算法,无法保证全局最优,D 错误。
Q10. 关于 Lasso 的变量选择能力,正确的理解是?
- A.Lasso 可自动将不重要的变量系数压缩为 0← 正确答案
- B.Lasso 的稀疏性来自 L1 惩罚项的几何形状← 正确答案
- C.调整 λ 可以控制变量选择的强度← 正确答案
- D.Lasso 在高度相关变量中可稳定选出一个代表
答案:ABC。Lasso 的 L1 惩罚约束区域是菱形,角点恰好落在坐标轴上,因此产生稀疏解(A、B 正确)。λ 越大惩罚越强,更多系数被压缩为 0(C 正确)。但当变量高度相关时,Lasso 倾向于随机选择其中一个,缺乏稳定性,D 错误——这正是弹性网(Elastic Net)被提出的原因。