你每天都在做“预测”。叫网约车时,师傅说“8 分钟到”,其实是在心里快速算了一条公式:距离近一点、路况好一点、红灯少一点,时间就短一点。距离、红灯数、天气这些因素就是自变量,到达时间就是结果,而那条“综合各路信息给出估计”的规则,正是统计建模想做的事。 R 语言里的 lm() 和 glm(),就是你用来把这种模糊经验“写成公式、算清参数、验证可靠度”的工具箱。lm() 擅长画直线——预测连续数值,比如到达时间、体重、房价;glm() 则更灵活,能画“S 型曲线”——预测概率,比如“会不会迟到”“是否患病”“是否点击广告”。本文用“导航估时”这个生活场景贯穿始终,带你从零上手这两种最常用的统计建模方法,并掌握一套完整的建模流程:拟合公式、解读系数、检验显著性、诊断残差、比较模型、预测和可视化。

岗位关联

对 AI 从业者而言,lm/glm 是理解机器学习可解释性的起点:它们把“预测”变成“可读的系数 + 可信的检验”,是你在做特征分析、业务归因、风控评分时最值得信赖的“白盒”工具。

目录
  1. 可视化演示
  2. 公式语法与数据准备
  3. lm线性回归拟合
  4. 回归系数解读
  5. 显著性检验体系
  6. 残差诊断分析
  7. 模型选择与比较
  8. glm广义线性模型
  9. 预测与可视化
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

公式语法与数据准备

用导航软件规划路线前,你需要在输入框里给出“起点”和“终点”,再把距离、红绿灯、拥堵指数一并加进去。R 的公式对象就是建模的“导航输入框”:它用一行文字写清楚“用什么预测什么”。

这句话的意思是:用 wt(车重)和 hp(马力)这两个变量去预测 mpg(油耗),数据来自 mtcars 数据框。波浪号 ~ 左边是结果变量,右边是预测变量。运行之后,R 会把模型中的所有结果打包成一个模型对象,包括系数、残差、拟合值等,供后续提取和诊断。

理解公式后,你自然明白为什么 glm() 也用同样的写法:它只是把 family 参数换成 binomial 或 poisson,就切换了“导航模式”。这一小段语法,是你打开整个统计建模世界的第一把钥匙。

y=β0+β1x1+β2x2+⋯+βpxp+ε\displaystyle y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p + \varepsilon
公式是说:结果 y 由“基准值 + 各因素乘以各自权重 + 随机噪声”三部分构成。
  1. 结果变量 y你要预测的对象,比如导航里的“到达时间”。
    y\displaystyle y
  2. 截距项 β₀所有自变量都为零时,结果的基准水平。
    β0\displaystyle \beta_0
  3. 系数项 βⱼxⱼ第 j 个因素乘以它的“权重”,权重决定影响大小。
    βjxj\displaystyle \beta_j x_{j}
  4. 误差项 ε模型预测与实际观测之间的随机偏差。
    ε\displaystyle \varepsilon
r1 行
fit <- lm(mpg ~ wt + hp, data = mtcars)

lm线性回归拟合

导航估算“8 分钟到”时,干的事其实是在一堆历史数据里找一条“最顺眼的直线”。lm() 用的是最小二乘法:让所有数据点到直线的竖直距离的平方和最小。这条线一旦确定,就成了一台自动估时器。

运行后,你会看到系数估计、标准误、t 值、p 值和 R²。其中R² 是“拟合优度”,表示自变量能解释因变量多大比例的波动。R² 越接近 1,说明这辆“预测车”的路线越贴合历史数据。

用 coef(fit) 可以直接取出最新拟合的系数,重新写一条带数字的路线公式。这条“最优直线”就是你在新手阶段最快的成就感来源——你亲手从数据里“炼”出了一条预测线。

β^=arg⁡min⁡β∑i=1n(yi−(β0+β1xi1+⋯+βpxip))2\displaystyle \hat{\beta} = \arg\min_{\beta} \sum_{i=1}^{n} \left( y_i - (\beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip}) \right)^2
这个公式读作:找到一组 β,让所有“真实值减去预测值”的平方和最小。
  1. 括号内的预测值用当前参数算出的“估时结果”。
    β0+β1xi1+⋯+βpxip\displaystyle \beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip}
  2. 残差真实观测减去预测,即导航估时和实际到达的差。
    yi−(β0+β1xi1+⋯+βpxip)\displaystyle y_i - (\beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip})
  3. 平方求和把差值平方再加总,避免正负抵消。
    ∑i=1n(yi−y^i)2\displaystyle \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2
  4. argmin在所有可能的 β 中,挑出使平方和最小的那一组。
    arg⁡min⁡β  RSS\displaystyle \arg\min_{\beta} \; \mathrm{RSS}
r1 行
summary(fit)

回归系数解读

拿到导航给出的预计时间,你心里会琢磨:到底是距离起主要作用,还是红灯太多更耽误事?回归系数就是帮你拆解这个问题的“账单”。

假设输出显示 wt 的系数是 3.9,意思是:在 hp 不变的前提下,车重每增加一个单位,油耗平均增加 3.9 个单位。这就是“边际效应”——其他条件不变,只看这一个变量动一格,结果变动多少。

此外,confint(fit) 能给出每个系数的置信区间。区间越窄,说明这个“权重”估计得越有把握。读懂系数,你从“会用函数”进阶到“能解释业务”,这是统计建模最有价值的一步。

Δy=β^j×Δxj\displaystyle \Delta y = \hat{\beta}_j \times \Delta x_j
一句话:x 每变化 1 个单位,y 平均变化 β̂ 个单位,前提是其它变量保持不变。
  1. 变化量 Δxⱼ某个预测变量的单位变动,比如距离多 1 公里。
    Δxj\displaystyle \Delta x_j
  2. 系数估计 β̂ⱼ该变量对结果的“边际影响”大小。
    β^j\displaystyle \hat{\beta}_j
  3. 结果变化 Δy预测值随变量变动的幅度。
    Δy=β^j×Δxj\displaystyle \Delta y = \hat{\beta}_j \times \Delta x_j
  4. 控制其他变量多元回归中每个系数都自带“保持其余不变”的声明。
    其余 xk 固定  (k≠j)\displaystyle \text{其余 } x_k \text{ 固定} \; (k \neq j)
r1 行
coef(fit)

显著性检验体系

导航说某个路口“通常多等 3 分钟”,但这个结论会不会只是偶然?统计检验就是你的“怀疑过滤器”:它计算在“该变量其实毫无影响”的前提下,出现当前数据的概率有多大。这个概率就是 p 值。

输出里每个系数都对应一列 t 值和 p 值。t 值等于“系数估计 ÷ 标准误”,相当于“信号 ÷ 噪声”。p 值小于 0.05 时,我们习惯说“统计显著”——当然,这个阈值只是行业惯例,不是圣旨。

整体模型的显著性则看 F 检验,它把所有变量打包成一个整体问:“合起来到底有没有预测力?” 检验完毕,你心里就有底了——哪些路线因素是稳定规律,哪些只是随机波动。

tj=β^jse⁡(β^j)\displaystyle t_j = \frac{\hat{\beta}_j}{\operatorname{se}(\hat{\beta}_j)}
t 值衡量的是:这个系数估计值比它的“测量误差”大多少倍。
  1. 系数估计 β̂ⱼ回归给出的“影响力度”数字。
    β^j\displaystyle \hat{\beta}_j
  2. 标准误 se估计值的波动程度,类似导航估时的误差范围。
    se⁡(β^j)\displaystyle \operatorname{se}(\hat{\beta}_j)
  3. t 统计量信号与噪声的比值,比值越大越可信。
    tj=β^jse⁡(β^j)\displaystyle t_j = \frac{\hat{\beta}_j}{\operatorname{se}(\hat{\beta}_j)}
  4. p 值由 t 值推算出的“在原假设下出现此结果的概率”。
    P(∣T∣>∣tj∣∣H0)\displaystyle P(|T| > |t_j| \mid H_0)
r1 行
summary(fit)

残差诊断分析

衣服做好后,裁缝会让顾客试穿,看哪里绷着、哪里空着。回归模型的“试穿”就是残差诊断:残差等于真实值减去预测值,它记录了每个样本“没被解释干净”的部分。

这一行会生成四张诊断图。第一张“残差 vs 拟合值”如果呈现出喇叭口形状,说明方差随预测值增大而增大;Q-Q 图检查残差是否近似正态分布;还有专门揪出“高杠杆异常点”的图。lm 假设残差独立、同方差、近似正态,诊断就是验证这些假设是否成立。

如果残差明显违背假设,别急着下结论——可能需要加入非线性项、对因变量做变换,或者改用 glm。残差是模型的“照妖镜”,会老老实实告诉你哪里不合身。

ei=yi−y^i\displaystyle e_i = y_i - \hat{y}_i
残差就是每个点“没被直线接住”的偏差,它既衡量拟合质量,也是诊断模型的窗口。
  1. 真实值 yᵢ第 i 个样本的实际观测结果。
    yi\displaystyle y_i
  2. 预测值 ŷᵢ模型在同样输入下的估计输出。
    y^i\displaystyle \hat{y}_i
  3. 残差 eᵢ两者之差,正数代表低估,负数代表高估。
    ei=yi−y^i\displaystyle e_i = y_i - \hat{y}_i
  4. 残差图模式若残差随机散布在 0 附近,说明模型结构合理;若呈现曲线,说明漏掉了非线性关系。
    ei∼随机散布\displaystyle e_i \sim \text{随机散布}
r1 行
plot(fit)

模型选择与比较

导航 App 会给你规划三条路线:最快、最省、最顺。每个回归模型也是一条路线,我们需要一个“打分标准”来权衡“拟合得好”与“不要过度复杂”。AIC 和 BIC 就是这样的一把尺。

逐步回归会自动向模型里添加或剔除变量,每一步都看看 AIC 是否变好。AIC 的思想是:既要拟合得好(似然高),又要简洁(参数少)。它给“复杂程度”加了惩罚分,防止你把无关变量都塞进模型里自嗨。

嵌套模型还可以用 anova(fit1, fit2) 做似然比检验。模型选择的意义在于:你的预测路线不是越绕越多变量越好,而是要在“解释力”和“可维护性”之间找到最优解。

AIC=−2ln⁡(L^)+2k\displaystyle \mathrm{AIC} = -2\ln(\hat{L}) + 2k
AIC 越小越好:它同时惩罚“拟合不好”和“参数太多”,帮你在准确与简洁之间取平衡。
  1. 似然函数 L̂在当前模型下,观测到这批数据出现的概率密度。
    L^\displaystyle \hat{L}
  2. -2ln(L̂)拟合越差、似然值越低,这一项就越大。
    −2ln⁡(L^)\displaystyle -2\ln(\hat{L})
  3. 惩罚项 2kk 是参数个数,每多一个变量就多一份“复杂度税”。
    2k\displaystyle 2k
  4. 比较逻辑两个模型比较,AIC 小者优先推荐。
    min⁡k  AIC\displaystyle \min_k \; \mathrm{AIC}
r1 行
step(fit_full, direction = "both")

glm广义线性模型

有时候结果不是“几分钟到”,而是“会不会迟到”——二分类问题。直线给不了概率,把直线强行压到 0~1 之间也会出负数或超过 1 的荒谬结果。这时就该请出 glm(广义线性模型) 了。

family = binomial 告诉 R:结果变量是 0/1,请使用逻辑回归。核心魔法在于链接函数——把“概率”转换到“直线可表达的尺度”上。对二分类用 logit 链接,对计数数据用泊松族 family = poisson,对数链接让平均计数不落为负数。

当你需要预测“事件发生的概率”而不是“数值大小”时,glm 就是那辆从直线切换到 S 型弯道的导航车。

ln⁡(p1−p)=β0+β1x1+⋯+βpxp\displaystyle \ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p
逻辑回归不直接预测概率 p,而是预测“对数优势比”,p 越大,优势比越大,线性组合的值也越大。
  1. 事件概率 p要预测的结果发生的概率,比如“迟到”的概率。
    p\displaystyle p
  2. 优势比事件发生与不发生的概率之比。
    p1−p\displaystyle \frac{p}{1-p}
  3. 对数优势比取对数后把 0~1 的概率映射到全体实数,方便用直线拟合。
    ln⁡(p1−p)\displaystyle \ln\left(\frac{p}{1-p}\right)
  4. 预测式的线性组合右边仍然是熟悉的“截距 + 系数×变量”,只是左边换成了链接函数。
    β0+β1x1+⋯+βpxp\displaystyle \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p
r1 行
fit_glm <- glm(vs ~ wt + hp, data = mtcars, family = binomial)

预测与可视化

导航最有用的时刻不在规划,而在出发后的“实时预估”。建模的最终目的同样是把模型用起来:给新数据做预测,并把结果画成图讲给同事听。

predict() 是 R 的“导航播报”:给一批新样本,它会输出预测值,还能带出置信区间。置信区间像导航的“预计到达时间偏差范围”——告诉你预测值的可信范围。可视化方面,ggplot2 是利器:

预测、画图、汇报,这一套流程下来,你已经完成了一次完整的统计建模循环:从公式到拟合、从检验到诊断、从选择到部署。你不再是只会写函数的搬运工,而是能用数据讲故事的建模者。

y^0=β^0+β^1x0,1+⋯+β^px0,p\displaystyle \hat{y}_0 = \hat{\beta}_0 + \hat{\beta}_1 x_{0,1} + \cdots + \hat{\beta}_p x_{0,p}
对新样本 x₀,把它的每个变量代入已估好的直线公式,就得到预测值;置信区间则给这个点加上“误差边界”。
  1. 新样本 x₀一条新的“路线数据”,比如一辆从未出现过的车型。
    x0,j(j=1,…,p)\displaystyle x_{0,j} \quad (j=1,\dots,p)
  2. 代入估计系数将每个变量的值乘以对应系数。
    β^jx0,j\displaystyle \hat{\beta}_j x_{0,j}
  3. 求和预测值全部加总得预测输出。
    y^0=β^0+∑j=1pβ^jx0,j\displaystyle \hat{y}_0 = \hat{\beta}_0 + \sum_{j=1}^{p} \hat{\beta}_j x_{0,j}
  4. 置信区间反映系数估计的不确定性,给出上下界。
    y^0±tα/2⋅se⁡(y^0)\displaystyle \hat{y}_0 \pm t_{\alpha/2} \cdot \operatorname{se}(\hat{y}_0)
r1 行
predict(fit, newdata = my_df, interval = "confidence")
r3 行
ggplot(mtcars, aes(x = wt, y = mpg)) +  geom_point() +  geom_smooth(method = "lm", se = TRUE)

AI 应用场景

即时配送 ETA 预测

阶段:特征工程与模型评估

解决的问题:外卖平台传统做法是按“距离÷速度”粗算时间,误差大,导致超时投诉。用 lm() 把历史订单的距离、天气、时段、骑手状态纳入模型,能精准预测配送耗时,动态调整预计送达时间。

具体案例:某外卖平台用 R 建模发现“下雨天 + 高峰期 + 商家出餐慢”会让配送时间增加 12 分钟,通过系数解读定位瓶颈环节,并上线“雨天补贴”策略。

信贷违约风险评估

阶段:模型选择与部署监控

解决的问题:银行判断“是否放贷”是典型二分类问题,传统人工审批费时且标准不一。用 glm(family = binomial) 构建违约概率模型,输出 0~1 的信用评分,阈值可调,规则透明可解释,满足监管要求。

具体案例:消费金融公司用逻辑回归筛选 20+ 特征,发现“近三月查询次数”和“收入负债比”是最强风险因子,模型 AUC 达 0.78,审批效率提升 5 倍。

用户转化分析与营销归因

阶段:因果推断与业务归因

解决的问题:市场团队想知道“哪个渠道带来更多转化”,但流量数据噪声大。通过 glm 建模转化概率并解读各渠道系数,可量化每个渠道的边际贡献,替代“最后点击”这种简单归因。

具体案例:某 SaaS 公司将“是否注册”作为结果,对搜索广告、社交媒体、邮件三个渠道做逻辑回归,发现邮件触达的系数是社交媒体的 2.3 倍,于是重新分配预算,注册率提升 18%。

Python 演示

python27 行
import numpy as npfrom sklearn.datasets import load_diabetesfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegression, LogisticRegressionfrom sklearn.metrics import r2_score, accuracy_score # 加载内置糖尿病数据集, 相当于 R 的 data(mtcars)data = load_diabetes()X = data.datay = data.target # 第一部分: 对应 R 的 lm() 线性回归X_train, X_test, y_train, y_test = train_test_split(    X, y, test_size=0.2, random_state=42)lr = LinearRegression().fit(X_train, y_train)pred_lm = lr.predict(X_test)print("lm 对应: R2 =", round(r2_score(y_test, pred_lm), 3))print("lm 对应: coef =", np.round(lr.coef_[:3], 3)) # 第二部分: 对应 R 的 glm() 二分类逻辑回归y_bin = (y > np.median(y)).astype(int)Xb_train, Xb_test, yb_train, yb_test = train_test_split(    X, y_bin, test_size=0.2, random_state=42)glm_bin = LogisticRegression(max_iter=1000).fit(Xb_train, yb_train)pred_glm = glm_bin.predict(Xb_test)print("glm 对应: acc =", round(accuracy_score(yb_test, pred_glm), 3))print("glm 对应: coef =", np.round(glm_bin.coef_[0][:3], 3))
目的:用 Python 复现 R 中 lm 和 glm 的建模范式,跑完即可看到线性回归的 R² 与逻辑回归的准确率。
  1. X_train, X_test, y_train, y_test = train_test_split(...)把数据切分为训练集和测试集,对应 R 中的建模“留出法”。
  2. LinearRegression().fit(X_train, y_train)等价于 R 的 lm(),用最小二乘拟合线性模型。
  3. lr.predict(X_test)等价于 R 的 predict(fit, newdata),在新样本上做预测。
  4. r2_score(y_test, pred_lm)计算 R²,对应 R 中 summary(fit) 输出的 Multiple R-squared。
  5. (y > np.median(y)).astype(int)把连续目标二值化,模拟“是否超标”的分类场景。
  6. LogisticRegression(max_iter=1000).fit(Xb_train, yb_train)等价于 R 的 glm(family=binomial),拟合逻辑回归。
  7. glm_bin.predict(Xb_test)输出 0/1 类别预测,对应 R 中 predict(fit, type="response") 的截断结果。

常见误区

误区我用 `lm()` 一跑,R² 是 0.95,我觉得模型特别完美,直接上线用就行。

正解R² 高只说明模型在训练数据上拟合得好,可能是在“背答案”。加入太多无关变量后,R² 也会虚高,但真实预测能力反而下降。判断模型好坏要看测试集上的表现,或调整后 R²、AIC 等更审慎的指标。

为何常见:R² 是最直观的输出指标,初学者天然会用“越大越好”的直觉去评价,却忽略了它掩盖的过拟合风险。

误区某变量的 p 值是 0.0001,另一个是 0.03,所以前者对结果的影响“大得多”。

正解p 值衡量的是“证据强度”而非“效应大小”。样本量够大时,一个微不足道的影响也能算出极小的 p 值。要看影响大小,应该读系数估计和置信区间;p 值只负责筛选“不能排除为零”的变量。

为何常见:多数人会本能地把“更不可能偶然”理解成“更强烈”,这正是对显著性检验的经典误读。

误区lm 和 glm 语法几乎一样,那 0/1 的结果我直接用 `lm()` 不就行了?先跑再说。

正解用 lm() 拟合 0/1 结果会得到“线性概率模型”,它可能预测出负数或大于 1 的概率值,且残差不满足正态、同方差假设。应该改用 glm(family = binomial),用逻辑曲线把预测限制在 0~1 之间。

为何常见:两者的公式写法几乎相同,让初学者误以为“换成 glm() 只是仪式感”,没有意识到链接函数带来的本质变化。

误区`summary(fit)` 里所有星星都打上了,R² 也不错,我认为模型已经“验证完成”,不需要再看那些复杂的图形。

正解显著性与拟合优度都不能保证模型假设成立。如果残差呈喇叭口或曲线分布,说明存在异方差或遗漏非线性项,此时系数的标准误和 p 值都不可信。plot(fit) 的四张诊断图,是下结论前必须扫一眼的“质检报告”。

为何常见:残差图不像 p 值和 R² 那样有“达标线”,需要主观判断,初学者容易因为不知道怎么解读而选择忽略。

面试题

Q1. 在 R 的 lm() 中,最小二乘法优化的目标函数是?

单选题 · easy

  • A.残差平方和最小化← 正确答案
  • B.绝对残差和最小化
  • C.预测值总和最大化
  • D.真实值总和最大化

答案:A。lm() 默认使用普通最小二乘,即让“真实值减预测值”的平方和最小。绝对残差和对应的是 LAD 回归而非默认方法;预测值总和、真实值总和与模型优化无关。

Q2. 公式 mpg ~ wt + hp 中的 + 号表示什么?

单选题 · easy

  • A.加入一个预测变量← 正确答案
  • B.两个变量做加法
  • C.逻辑或的运算
  • D.变量间的交互作用

答案:A。公式中的 + 表示把右侧变量“加入线性预测式”,不是算术加法,也不是逻辑运算。交互作用在 R 里用 : 或 * 表示,例如 wt:hp。

Q3. R² = 0.8 通常被解释为?

单选题 · easy

  • A.八成的数据点落在直线上
  • B.因变量方差被解释了八成← 正确答案
  • C.模型通过了 80% 的显著性检验
  • D.预测误差比均值模型少 80%

答案:B。R² 表示模型解释的因变量方差比例,即 80% 的波动被自变量解释。它不表示数据点落在直线上的比例,也不表示显著性检验通过率,更不能等价衡量预测误差的减少比例。

Q4. 回归中某系数 p 值 < 0.05 的正确解释是?

单选题 · mid

  • A.模型整体犯错的概率小于 5%
  • B.系数等于零的概率小于 5%
  • C.原假设下取得该结果的概率低于 5%← 正确答案
  • D.该变量存在确定的因果效应

答案:C。p 值是指在“系数为零”的原假设下,观察到当前或更极端结果的概率小于 5%。A 混淆了模型错误率,B 犯了“反向概率”错误,D 把统计显著与因果效应混为一谈。

Q5. glm 做二分类时,默认使用的链接函数是?

单选题 · mid

  • A.恒等链接函数
  • B.Logit 对数几率链接← 正确答案
  • C.倒数对称链接
  • D.幂指数链接

答案:B。glm(family = binomial) 默认使用 logit 链接,即 ln(p/(1-p))。恒等链接用于高斯族,倒数链接用于伽马族,平方根链接用于泊松族,都不是二分类默认选择。

Q6. 泊松族 family = poisson 最适合分析哪类数据?

单选题 · mid

  • A.一天内交通事故发生次数← 正确答案
  • B.身高和体重的关系数据
  • C.股票每日涨跌的方向
  • D.产品寿命的时长数据

答案:A。泊松回归面向“计数数据”,如事故次数、网页点击量。身高体重是连续型,适合 lm();涨跌方向是 0/1 二分类,适合 binomial;寿命数据通常用生存分析。

Q7. 回归中系数 t 值小、p 值大,但模型整体 F 检验显著,最可能的解释是?

单选题 · hard

  • A.样本量太小导致检验失效
  • B.变量之间存在多重共线性← 正确答案
  • C.因变量不符合正态分布
  • D.回归模型完全错误

答案:B。当预测变量高度相关时,系数标准误被膨胀,导致单个系数的 t 检验不显著,但模型整体的 F 检验依然显著。样本量小通常让所有检验都受影响,因变量正态性不是 OLS 的必要条件。

Q8. 比较两个嵌套模型,AIC 更小的模型意味着什么?

单选题 · hard

  • A.拟合与复杂度权衡更优← 正确答案
  • B.绝对预测误差一定更小
  • C.模型的 R 方一定更高
  • D.纳入的变量个数一定更少

答案:A。AIC = -2lnL + 2k,它在拟合优度和参数数量之间取平衡,越小说明权衡越优。AIC 不直接承诺预测误差一定更小,也不要求 R² 更高或变量更少。

Q9. 对 lm() 结果做残差诊断时,通常要检查哪些内容?

多选题 · mid

  • A.残差是否近似正态分布← 正确答案
  • B.残差是否具有相同方差← 正确答案
  • C.残差是否相互独立← 正确答案
  • D.残差与自变量是否无关← 正确答案

答案:ABCD。经典线性回归假设残差满足正态性、同方差、独立性、线性关系成立。plot(fit) 的四张图正是快速检查这四类问题的入口,A、B、C、D 均属于残差诊断范畴。

Q10. 关于线性回归推断,下列说法正确的是?

多选题 · hard

  • A.加入新变量后 R 方不会下降← 正确答案
  • B.调整 R 方可能因冗余变量下降← 正确答案
  • C.变量高度相关会引起多重共线性← 正确答案
  • D.系数显著即可证明因果关系

答案:ABC。普通最小二乘中加入新变量,R² 单调不减,A 正确;调整 R² 会惩罚冗余变量,可能下降,B 正确;高度相关的预测变量会引发多重共线性,C 正确;系数显著只说明统计关联,不能证明因果,D 错误。