简单线性回归:一条线不只用来预测
简单线性回归用一条直线概括两个数值变量的平均关系。斜率回答 \(X\) 每增加一个单位时,\(Y\) 的条件均值平均改变多少;它不自动回答因果问题。
flowchart LR
A[研究问题] --> B[画散点图]
B --> C[拟合直线]
C --> D[解释斜率与区间]
D --> E[检查残差与影响点]
E --> F{假设够不够用}
F -->|是| G[报告或预测]
F -->|否| H[变换、扩展模型或改问题]
模型描述的是条件均值
对第 \(i\) 个观测,模型写成:
等价地,条件均值是:
- \(\beta_0\) 是 \(X=0\) 时 \(Y\) 的平均值
- \(\beta_1\) 是 \(X\) 增加 1 单位时 \(Y\) 平均变化的量
- \(\varepsilon_i\) 是直线没有解释的个体偏离
截距只有在 \(X=0\) 有实际意义且接近数据范围时才值得解释。把 \(X\) 中心化为 \(X-\bar X\),截距就变成 \(X\) 取样本均值时的预测均值。
最小二乘让残差平方和最小
给定拟合值与残差:
普通最小二乘选择 \(b_0,b_1\),使残差平方和最小:
简单回归的解为:
斜率也可写成 \(b_1=r\,s_Y/s_X\)。相关系数没有单位;斜率有“\(Y\) 单位 / \(X\) 单位”,换量纲会改变数值。
\(R^2\) 是样本内解释比例
总平方和分解为:
含截距的普通最小二乘下:
\(R^2\) 高不代表直线正确、预测误差小或关系有因果性;\(R^2\) 低也不代表斜率没有实际意义。它只说明这条线在当前样本中解释了多少 \(Y\) 的离均差平方。
斜率的不确定性来自残差和 \(X\) 的信息量
若误差独立、均值为 0、方差恒为 \(\sigma^2\),残差方差估计为:
斜率标准误为:
斜率的 \((1-\alpha)\) 置信区间是:
检验 \(H_0:\beta_1=0\) 使用 \(t=b_1/\operatorname{SE}(b_1)\),自由度为 \(n-2\)。样本很大时,极小但无实际意义的斜率也可能显著——同时报告区间和业务尺度。
均值区间和个体预测区间不是一回事
在 \(X=x_0\) 处,预测均值为 \(\hat y_0=b_0+b_1x_0\)。其标准误为:
新个体预测还包含自身误差:
所以预测区间总比同一点的均值置信区间宽。\(x_0\) 越远离 \(\bar X\),两种区间都越宽;跑出观测范围的外推尤其危险。
残差图决定直线能不能信
{
"title": {"text": "三种残差形状", "left": "center"},
"tooltip": {},
"grid": [
{"left": "7%", "right": "69%", "top": 55, "bottom": 35},
{"left": "38%", "right": "38%", "top": 55, "bottom": 35},
{"left": "69%", "right": "7%", "top": 55, "bottom": 35}
],
"xAxis": [
{"gridIndex": 0, "type": "value", "name": "理想"},
{"gridIndex": 1, "type": "value", "name": "弯曲"},
{"gridIndex": 2, "type": "value", "name": "漏斗"}
],
"yAxis": [
{"gridIndex": 0, "type": "value", "min": -4, "max": 4},
{"gridIndex": 1, "type": "value", "min": -4, "max": 4},
{"gridIndex": 2, "type": "value", "min": -4, "max": 4}
],
"series": [
{"type": "scatter", "xAxisIndex": 0, "yAxisIndex": 0, "data": [[1,-1],[2,1],[3,-0.5],[4,0.7],[5,-0.8],[6,0.4],[7,0.9],[8,-0.7]]},
{"type": "scatter", "xAxisIndex": 1, "yAxisIndex": 1, "data": [[1,3],[2,1],[3,-1],[4,-2],[5,-2],[6,-1],[7,1],[8,3]]},
{"type": "scatter", "xAxisIndex": 2, "yAxisIndex": 2, "data": [[1,-0.2],[2,0.3],[3,-0.7],[4,1],[5,-1.4],[6,2],[7,-2.5],[8,3]]}
]
}
- 线性:残差对拟合值不应留下弧线或系统趋势
- 同方差:残差带宽不应随拟合值明显扩大或缩小
- 独立:时间、空间或同一对象内的残差不应成串相关
- 正态性:主要影响小样本区间与检验,不是拟合直线的前提
- 异常与影响:同时看标准化残差、杠杆值和 Cook 距离
高杠杆点的 \(X\) 很极端;大残差点的 \(Y\) 离直线远;影响点是删掉后会明显改变拟合的观测。三者不是同义词,也不能见到就删除。
稳健标准误只修正一部分问题
异方差稳健标准误可改善区间与检验,却不会把弯曲关系变直,也不会修复混杂、测量错误或外推。
一个可复核的解释模板
“在观测到的 \(X\) 范围内,\(X\) 每增加 1 单位,\(Y\) 的平均值估计变化 \(b_1\) 单位,95% CI 为 \([L,U]\)。模型的样本内 \(R^2\) 为某值;残差检查未见明显弯曲,但高值端方差稍大。”
这段话没有偷换成“\(X\) 导致 \(Y\)”,也没有把 \(p\) 值当效应大小。
常见误区
- 相关显著就说因果——混杂、反向因果和选择机制仍在
- 只报 \(R^2\)——读者不知道方向、量级和不确定性
- 在样本范围外延长直线——模型没有见过那里的关系
- 残差不正态就宣布回归无效——先判断推断目标和样本量
- 自动删除影响点——先核对数据,再报告敏感性分析
- 把均值置信区间当个体预测区间——后者多一个个体误差
交付前检查
- 散点图是否支持“平均关系近似直线”?
- 斜率的单位、方向和实际量级是否写清?
- 区间是斜率区间、均值区间还是个体预测区间?
- 残差是否有弯曲、漏斗、聚类或时间结构?
- 结论是否由少数高杠杆点驱动?
- 预测是否落在观测到的 \(X\) 范围内?
- 因果措辞是否有设计依据?
先把线当作平均关系,再用残差检查这句平均话有没有撒谎。