# Week 7:随机扰动项、残差与家庭消费回归 研究日期:2026 年 10 月 23 日。数据:Eg2_1_1/Eg2_1_1.xlsx(Sheet1)。实际执行软件:Stata/SE 15.1,路径 D:/Stata15/StataSE-64.exe;脚本使用 version 15.0 语法。 本研究使用原表 98 条家庭消费明细,估计每月可支配收入与每月消费支出的线性关系,并参照给定图片完成 Stata 作图。所有金额单位均为元。 > Ŷ = 22.9309 + 0.728799X;n = 98;R² = 0.930666 ## 1. 随机扰动项与残差项 **随机扰动项** uᵢ 是实际观测值与真实总体条件均值之间的偏差。写作 Yᵢ = m(Xᵢ) + uᵢ,其中 m(Xᵢ) = E(Yᵢ | Xᵢ)。它反映给定收入后,家庭偏好、人口规模、其他未纳入因素及随机变化造成的消费差异。真实总体条件均值通常未知,因此 uᵢ 通常不可直接观测。 > uᵢ = Yᵢ − E(Yᵢ | Xᵢ);若 m(Xᵢ) = β₀ + β₁Xᵢ,则 uᵢ = Yᵢ − β₀ − β₁Xᵢ。 **残差项** eᵢ 是实际观测值与拟合值之间的偏差。它在估计回归系数后可以计算,是对相应随机扰动的估计。 > eᵢ = Yᵢ − Ŷᵢ = Yᵢ − β̂₀ − β̂₁Xᵢ。 | 比较维度 | 随机扰动项 uᵢ | 残差项 eᵢ | | --- | --- | --- | | 参照对象 | 真实总体回归函数 E(Y \| X) | 利用数据估计的回归函数 Ŷ | | 参数 | 真实且通常未知的 β₀、β₁ | 可由数据算出的 β̂₀、β̂₁ | | 能否直接计算 | 通常不能 | 拟合后可以 | | 零均值性质 | 以真实条件均值定义时 E(u \| X) = 0;设定线性模型时需相应条件成立 | 含截距 OLS 的样本残差满足 Σeᵢ = 0(数值计算有舍入误差) | | 含义 | 实际值相对真实条件均值的偏离 | 实际值相对估计条件均值的偏离 | > eᵢ = uᵢ − (β̂₀ − β₀) − (β̂₁ − β₁)Xᵢ。 因此,残差与扰动项并非完全相同。含截距 OLS 还满足 ΣXᵢeᵢ = 0;这些是拟合所得的样本代数性质,不能据此证明总体扰动与解释变量无关。若线性条件均值设定不成立,拟合残差还会包含函数形式误设的影响。 **关于“总体回归曲线”**:总体回归函数是 E(Y | X),本题将它设定为 β₀ + β₁X。工作簿没有说明所列家庭是否覆盖某个明确总体的全部成员,因此本文将拟合直线称为“总体回归函数的估计(样本回归线)”。各收入组的实际平均消费是组内经验均值,也不直接当作已知的真实总体条件均值。 ## 2. 数据整理与原表核对 工作表采用横向分组布局:C3:L3 为 10 个收入水平(800、1100、…、3500),C4:L16 为家庭消费明细,C17:L17 为原表合计。标题文字在源工作簿中已有乱码,数字单元格可正常读取;变量含义依据给定示例图和表格结构确认。 整理过程:读取 C3:L17;核对收入表头;分别计算每列明细和并与末行合计比较;移除表头及合计行;将消费列转换为长表;删除空白明细;保留收入、消费和原 Excel 行号。空白不视为 0;相同金额的重复记录保留,因为可能对应不同家庭。每条明细等权,共得到 98 条记录。 **发现 4 组明细与原表合计不一致。** 差额按“明细之和 − 原表合计”定义。以下差异不足以判断究竟是明细录入错误、合计错误还是遗漏,因此不补造记录,也不按合计反推消费值;回归仅依据现有明细。 | 收入 X | 记录数 | 明细之和 | 原表合计 | 差额 | | --- | --- | --- | --- | --- | | 800 | 4 | 2420 | 2420 | +0 | | 1100 | 6 | 4950 | 4950 | +0 | | 1400 | 11 | 11495 | 11495 | +0 | | 1700 | 13 | 16445 | 16445 | +0 | | 2000 | 13 | 19305 | 19305 | +0 | | 2300 | 13 | 21868 | 23870 | -2002 | | 2600 | 13 | 25025 | 25025 | +0 | | 2900 | 10 | 21362 | 21450 | -88 | | 3200 | 9 | 21153 | 21285 | -132 | | 3500 | 6 | 15499 | 15510 | -11 | 特别是收入 2300 元组,明细之和为 21868 元,而原表合计为 23870 元,差额为 −2002 元。应先向数据提供者核实,再考虑更正;本次结果对应当前文件的可见明细。 ## 3. 回归设定、过程与估计结果 设 X 为家庭每月可支配收入,Y 为每月消费支出。假定总体条件均值为线性形式:E(Y | X) = β₀ + β₁X;使用普通最小二乘法(OLS)选择截距和斜率,使 98 条明细的残差平方和最小。[1] > min Σ(Yᵢ − β̂₀ − β̂₁Xᵢ)²;β̂₁ = Σ(Xᵢ − X̄)(Yᵢ − Ȳ) / Σ(Xᵢ − X̄)²;β̂₀ = Ȳ − β̂₁X̄。 样本平均收入 X̄ = 2202.0408 元,平均消费 Ȳ = 1627.7755 元。Stata 命令为 `regress consume income`,并使用 `predict ..., xb` 与 `predict ..., residuals` 保存拟合值及残差。[1][2] > Ŷ = 22.930934 + 0.728798742X | 变量 | 系数 | 常规标准误 | t 值 | p 值 | 常规 95% 置信区间 | | --- | --- | --- | --- | --- | --- | | 收入 X | 0.728799 | 0.020302 | 35.8970 | 1.952e-57 | [0.688499, 0.769099] | | 截距 | 22.930934 | 47.096629 | 0.4869 | 0.627445 | [-70.555136, 116.417004] | | 指标 | 结果 | | --- | --- | | 观测数 / 残差自由度 | 98 / 96 | | R² / 调整 R² | 0.930666 / 0.929943 | | Root MSE(元) | 146.627814 | | 残差平方和(元²) | 2063972.732587 | | 常规 F(1,96) / p 值 | 1288.595737 / 1.952e-57 | **经济含义**:在这组数据的线性拟合中,收入每高 1 元,拟合的平均消费约高 0.7288 元;每高 100 元,约高 72.88 元。可将斜率描述为估计的边际消费倾向,但单变量描述性回归不能独自识别收入对消费的因果作用。 R² = 0.9307 表示收入的线性拟合解释了本数据中约 93.07% 的消费总离差平方和。它不是预测准确率,也不能证明不存在遗漏变量。截距对应收入为 0 时的拟合消费,但 0 超出观测收入范围 800—3500 元,因而不作实质经济解释。 **补充稳健性核对**:`estat hettest` 的 Breusch–Pagan / Cook–Weisberg 检验为 χ²(1) = 8.7005,p = 0.003181,在其检验条件下拒绝同方差原假设。另运行 `regress consume income, vce(robust)` 计算 HC1 稳健标准误;回归系数和拟合直线保持一致。[1][2] | 变量 | HC1 稳健标准误 | 稳健 t 值 | 稳健 p 值 | 稳健 95% 置信区间 | | --- | --- | --- | --- | --- | | 收入 X | 0.021428 | 34.0122 | 2.381e-55 | [0.686265, 0.771332] | | 截距 | 43.447563 | 0.5278 | 0.598867 | [-63.311797, 109.173665] | 采用稳健标准误后,收入系数仍显著为正。稳健推断仍依赖相应抽样、独立性及大样本近似条件;数据没有提供抽样设计信息,且存在上述合计差异,所以结果宜作本组数据的教学性、描述性分析。 ## 4. 仿照示例图作图与残差解释 Stata 使用 `twoway (scatter consume income) (lfit consume income)` 作图:深蓝色圆点表示家庭消费明细,红线表示 OLS 拟合的条件均值。横轴为每月可支配收入,纵轴为每月消费支出;淡蓝背景、白色绘图区、中文标题及底部图例均参照给定图片。[3] ![图 1|Stata 生成的家庭消费散点与线性拟合图](consumption_fit.png) 每个固定收入水平上的竖直点列展示该收入组的经验消费分布。若收入、消费均相同,点会重合,所以图上可分辨的点数可能小于 98;这些观测在回归中全部保留。红线估计条件均值,不能代表每户家庭的实际消费。 按收入组得到的明细均值与拟合均值如下。回归直接使用 98 条家庭明细,未对 10 个组均值作不加权回归;各组家庭数量不同,不能随意替换分析单位。 | 收入 X | 家庭数 | 组内平均消费 | 拟合均值 Ŷ | 平均残差 | | --- | --- | --- | --- | --- | | 800 | 4 | 605.000 | 605.970 | -0.970 | | 1100 | 6 | 825.000 | 824.610 | +0.390 | | 1400 | 11 | 1045.000 | 1043.249 | +1.751 | | 1700 | 13 | 1265.000 | 1261.889 | +3.111 | | 2000 | 13 | 1485.000 | 1480.528 | +4.472 | | 2300 | 13 | 1682.154 | 1699.168 | -17.014 | | 2600 | 13 | 1925.000 | 1917.808 | +7.192 | | 2900 | 10 | 2136.200 | 2136.447 | -0.247 | | 3200 | 9 | 2350.333 | 2355.087 | -4.754 | | 3500 | 6 | 2583.167 | 2573.727 | +9.440 | **残差例子**:Excel 单元格 C4 对应收入 800 元、消费 561 元。其拟合消费为 605.9699 元,所以 e = 561 − 605.9699 = -44.9699 元。负号表示这户家庭的实际消费低于拟合条件均值;这不是已知的真实随机扰动 u。 数值核对:Σeᵢ = -1.955e-11,ΣXᵢeᵢ = -7.333e-08。两者在浮点精度下接近 0,与含截距 OLS 的正规方程一致;Root MSE = √[Σeᵢ²/(98−2)] = 146.6278 元。 [原始参考图](Eg2_1_1/Eg2_1_1.png) ## 5. 复现方法与 Stata 指令 完整脚本 `week7_analysis.do` 从原始 Excel 开始,依次完成合计审计、长表转换、OLS 回归、拟合值与残差生成、图形导出、稳健标准误及异方差检验。脚本无需安装 Stata 扩展包。在 Stata 命令窗口运行: ```stata do "C:/Users/cattom/Documents/econometrics/Week7/week7_analysis.do" ``` 也可以在 Windows PowerShell 中后台执行。以下命令会等待 Stata 完成;重跑会更新同名分析产物: ```powershell Start-Process -FilePath "D:\Stata15\StataSE-64.exe" ` -ArgumentList '/e do "C:\Users\cattom\Documents\econometrics\Week7\week7_analysis.do"' ` -WorkingDirectory "C:\Users\cattom\Documents\econometrics\Week7" ` -WindowStyle Hidden -Wait ``` 下列为主要估计与绘图指令摘录;前置数据整理和完整图形样式以完整 do 文件为准: ```stata use "C:/Users/cattom/Documents/econometrics/Week7/households_clean.dta", clear regress consume income predict double fitted, xb predict double residual, residuals twoway (scatter consume income) (lfit consume income), /// title("不同可支配收入水平组家庭消费支出的条件分布图") /// xtitle("每月可支配收入(元)") ytitle("每月消费支出(元)") regress consume income, vce(robust) ``` Stata 运行后,在工作目录执行以下命令可独立核对数值并重建两份报告。此辅助脚本需要 Python、NumPy、SciPy 和 openpyxl;它读取 Stata 输出,不替代 Stata 回归或作图。 ```powershell python build_week7_report.py ``` **已完成验证**:独立从 Excel 明细构建设计矩阵,用 NumPy 复算 OLS,并核对 98 条记录、系数、拟合值、残差、R²、Root MSE、常规及 HC1 标准误和双侧 t 检验 p 值;核对分组汇总和合计差异;检查 Stata 日志成功结束及图形文件结构。验证结果保存于 `verification.json`。 ## 6. 交付文件索引 | 文件 | 内容 | | --- | --- | | [Week7_回归分析报告.md](Week7_回归分析报告.md) | Markdown 文档,包含研究过程、结果及图片相对引用 | | [Week7_回归分析报告.html](Week7_回归分析报告.html) | HTML5 页面,图形与样式内嵌,可离线阅读 | | [week7_analysis.do](week7_analysis.do) | 完整、可复现的 Stata 分析脚本 | | [week7_stata.log](week7_stata.log) | Stata 纯文本分析日志,含回归、分组及检验输出 | | [consumption_fit.png](consumption_fit.png) | 仿照示例生成的 1800 像素宽图形 | | [consumption_fit.svg](consumption_fit.svg) | 可缩放矢量图 | | [consumption_fit.pdf](consumption_fit.pdf) | 适合打印的图形 | | [consumption_fit.gph](consumption_fit.gph) | Stata 原生图形,可用 graph use 打开 | | [households_clean.dta](households_clean.dta) | 98 条清洗后家庭明细;同名 CSV 同时提供 | | [households_fitted.dta](households_fitted.dta) | 含拟合值、残差、残差平方的明细;同名 CSV 同时提供 | | [income_group_summary.csv](income_group_summary.csv) | 收入组人数、均值、标准差、范围和拟合均值;另存 DTA | | [source_totals_audit.csv](source_totals_audit.csv) | 明细合计与原表合计差异审计;另存 DTA | | [regression_coefficients.csv](regression_coefficients.csv) | 常规系数、标准误、t 值、p 值及区间;另存 DTA | | [robust_coefficients.csv](robust_coefficients.csv) | HC1 稳健系数表;另存 DTA | | [model_statistics.csv](model_statistics.csv) | 拟合优度、残差核对与异方差检验统计量 | | [consumption_ols.ster](consumption_ols.ster) | 可由 estimates use 重新载入的 OLS 估计结果 | | [consumption_robust.ster](consumption_robust.ster) | 稳健标准误版本的估计结果 | | [build_week7_report.py](build_week7_report.py) | 独立验证与文档生成脚本 | | [verification.json](verification.json) | 数值验证状态及原始 Excel 的 SHA-256 指纹 | 原始 Excel 与参考 PNG 保留在 Eg2_1_1 文件夹中。Stata 批处理另会自动生成 week7_analysis.log。Markdown 需与图形文件保留相对位置;HTML 页面本身可单独打开阅读,其文件下载链接需相邻产物仍在原目录。 ## 7. 方法依据与来源 数值结果以本地原始 Excel、Stata 实际执行日志及独立数值核验为依据;Stata 指令含义核对了本机随软件附带的官方帮助文件。以下编号对应正文的方法引用: | 编号 | 来源 | 使用内容 | | --- | --- | --- | | [1] | D:/Stata15/ado/base/r/regress.sthlp | OLS、vce(robust) 与 HC1 的 n/(n−k) 修正 | | [2] | D:/Stata15/ado/base/r/regress_postestimation.sthlp | 线性预测 xb、残差 residuals 与 estat hettest | | [3] | D:/Stata15/ado/base/t/twoway_lfit.sthlp | 由一元线性回归预测值绘制拟合线 | | [4] | Eg2_1_1/Eg2_1_1.xlsx 与 Eg2_1_1/Eg2_1_1.png | 原始数值、变量含义及仿图样式 | 随机扰动与残差的比较依据正文给出的总体条件均值定义及 OLS 正规方程推导。未将原表合计作为新增观测,也未假定已知真实总体参数。