Week7-1
This commit is contained in:
20 files changed
+1155
No files matched your search
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="Week 7 计量经济学:随机扰动项与残差,98 条家庭消费明细的 Stata 回归、数据核对与复现报告。"><title>Week 7|家庭消费回归分析</title><style>
|
||||
:root{color-scheme:light;--ink:#182c40;--muted:#5c6d7b;--accent:#146b72;--line:#dce5e9;--paper:#fff;--bg:#f3f6f7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.85 "Microsoft YaHei","PingFang SC",system-ui,sans-serif}a{color:var(--accent);text-underline-offset:3px}header{background:#143044;color:white;padding:56px 32px 44px}.hero{max-width:1080px;margin:auto}.eyebrow{letter-spacing:3px;color:#a6d7d9;font-size:12px;font-weight:700}h1{font-size:clamp(28px,4.4vw,46px);line-height:1.4;margin:14px 0 16px;letter-spacing:-1px}.subhead{color:#c7d7e0;max-width:760px;margin:0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:30px}.metric{border-top:1px solid #547080;padding:14px 0 0}.metric span{display:block;font-size:12px;color:#bacfd9}.metric strong{font-size:27px;font-weight:600;font-variant-numeric:tabular-nums}.layout{max-width:1240px;margin:auto;display:grid;grid-template-columns:200px minmax(0,1fr);gap:38px;padding:34px 28px 70px}nav{position:sticky;top:24px;align-self:start;font-size:13px}nav .nav-title{color:var(--muted);margin:0 0 12px;font-size:11px;letter-spacing:2px}nav a{display:block;text-decoration:none;color:var(--muted);padding:8px 12px;border-left:2px solid var(--line)}nav a:hover,nav a:focus{border-color:var(--accent);color:var(--accent);background:#e7eff0}main{min-width:0;background:var(--paper);padding:30px 36px 42px;border:1px solid var(--line);border-radius:8px}h2{font-size:23px;line-height:1.5;margin:42px 0 18px;padding-top:24px;border-top:1px solid var(--line);scroll-margin-top:24px}p{margin:15px 0}strong{font-weight:650}.equation{font-family:"Cambria Math","Microsoft YaHei",serif;font-size:19px;line-height:1.8;background:#edf5f5;color:#154d58;border-left:3px solid #329097;padding:17px 22px;margin:22px 0;overflow-wrap:anywhere}.note,.warning{padding:17px 20px;background:#f0f5f8;border-radius:4px}.warning{background:#fff6e7;border-left:3px solid #c18a29}.table-wrap{overflow-x:auto;margin:20px 0;border:1px solid var(--line);border-radius:5px}table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}th{text-align:left;background:#edf2f5;color:#304b5e;font-weight:600;white-space:nowrap}td,th{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:top}tbody tr:last-child td{border-bottom:0}tbody tr:nth-child(even){background:#fafcfc}td:first-child{white-space:nowrap}code{font:0.88em/1.6 Consolas,"Microsoft YaHei",monospace;background:#edf2f5;padding:2px 5px;border-radius:3px;overflow-wrap:anywhere}pre{background:#182d3d;color:#e5eff5;padding:20px;overflow-x:auto;border-radius:6px;font-size:13px;line-height:1.8}pre code{background:none;color:inherit;padding:0;white-space:pre}figure{margin:24px 0}img{display:block;width:100%;height:auto;border-radius:4px}figcaption{color:var(--muted);text-align:center;font-size:12px;margin-top:9px}details{padding:15px 18px;border:1px solid var(--line);border-radius:5px;margin:20px 0}summary{cursor:pointer;color:var(--accent);font-size:14px}details img{margin-top:20px}.prediction{background:#eff7f6;padding:20px 24px;border:1px solid #cbe3df;border-radius:6px;margin:24px 0}.prediction label{font-weight:600}.prediction-values{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:14px}.prediction output{font-variant-numeric:tabular-nums}.prediction input{width:100%;margin:18px 0 0;accent-color:var(--accent)}.prediction p{font-size:12px;color:var(--muted);margin:6px 0 0}footer{text-align:center;padding:0 24px 36px;font-size:12px;color:var(--muted)}@media(max-width:980px){.layout{grid-template-columns:1fr;gap:18px;padding:22px 18px}nav{position:static;display:flex;flex-wrap:wrap;gap:4px}nav .nav-title{display:none}nav a{border-left:0;padding:5px 10px}main{padding:22px 25px}.metrics{gap:10px}.metric strong{font-size:22px}}@media(max-width:560px){header{padding:32px 22px}.metrics{grid-template-columns:repeat(2,1fr)}main{padding:18px 16px}.layout{padding:14px 10px 36px}h2{font-size:20px}.equation{font-size:17px;padding:14px}body{font-size:15px}td,th{padding:9px 10px}}@media print{body{background:white;color:black;font-size:10pt}header{background:white;color:black;padding:12px 0}.hero{max-width:none}.eyebrow,.subhead{color:#444}h1{font-size:24pt}.metric span,.metric strong{color:#222}.layout{display:block;padding:0;max-width:none}nav,.prediction,details,footer{display:none}main{border:0;padding:0}h2{break-after:avoid;margin-top:24px;padding-top:12px}table{font-size:9pt}tr,figure{break-inside:avoid}a{color:inherit}pre{white-space:pre-wrap;color:black;background:#f4f4f4}pre code{white-space:pre-wrap}.table-wrap{overflow:visible}}
|
||||
</style></head>
|
||||
<body><header><div class="hero"><div class="eyebrow">ECONOMETRICS · WEEK 07 · 2026.10.23</div><h1>随机扰动、残差<br>与家庭消费回归</h1><p class="subhead">从概念区分到数据核对,用 Stata 估计收入与消费的线性关系。完整呈现原始数据问题、拟合结果与可复现过程。</p><div class="metrics"><div class="metric"><span>有效家庭记录</span><strong>98</strong></div><div class="metric"><span>收入组数</span><strong>10</strong></div><div class="metric"><span>收入系数</span><strong>0.7288</strong></div><div class="metric"><span>拟合优度 R²</span><strong>0.9307</strong></div></div></div></header><div class="layout"><nav aria-label="报告目录"><p class="nav-title">CONTENTS / 目录</p><a href="#concepts">1. 随机扰动项与残差项</a><a href="#data">2. 数据整理与原表核对</a><a href="#results">3. 回归设定、过程与估计结果</a><a href="#figure">4. 仿照示例图作图与残差解释</a><a href="#reproduce">5. 复现方法与 Stata 指令</a><a href="#files">6. 交付文件索引</a><a href="#sources">7. 方法依据与来源</a></nav><main><p class="">研究日期:2026 年 10 月 23 日。数据:Eg2_1_1/Eg2_1_1.xlsx(Sheet1)。实际执行软件:Stata/SE 15.1,路径 D:/Stata15/StataSE-64.exe;脚本使用 version 15.0 语法。</p><p class="">本研究使用原表 98 条家庭消费明细,估计每月可支配收入与每月消费支出的线性关系,并参照给定图片完成 Stata 作图。所有金额单位均为元。</p><div class="equation">Ŷ = 22.9309 + 0.728799X;n = 98;R² = 0.930666</div><h2 id="concepts">1. 随机扰动项与残差项</h2><p class=""><strong>随机扰动项</strong> uᵢ 是实际观测值与真实总体条件均值之间的偏差。写作 Yᵢ = m(Xᵢ) + uᵢ,其中 m(Xᵢ) = E(Yᵢ | Xᵢ)。它反映给定收入后,家庭偏好、人口规模、其他未纳入因素及随机变化造成的消费差异。真实总体条件均值通常未知,因此 uᵢ 通常不可直接观测。</p><div class="equation">uᵢ = Yᵢ − E(Yᵢ | Xᵢ);若 m(Xᵢ) = β₀ + β₁Xᵢ,则 uᵢ = Yᵢ − β₀ − β₁Xᵢ。</div><p class=""><strong>残差项</strong> eᵢ 是实际观测值与拟合值之间的偏差。它在估计回归系数后可以计算,是对相应随机扰动的估计。</p><div class="equation">eᵢ = Yᵢ − Ŷᵢ = Yᵢ − β̂₀ − β̂₁Xᵢ。</div><div class="table-wrap"><table><thead><tr><th scope="col">比较维度</th><th scope="col">随机扰动项 uᵢ</th><th scope="col">残差项 eᵢ</th></tr></thead><tbody><tr><td>参照对象</td><td>真实总体回归函数 E(Y | X)</td><td>利用数据估计的回归函数 Ŷ</td></tr><tr><td>参数</td><td>真实且通常未知的 β₀、β₁</td><td>可由数据算出的 β̂₀、β̂₁</td></tr><tr><td>能否直接计算</td><td>通常不能</td><td>拟合后可以</td></tr><tr><td>零均值性质</td><td>以真实条件均值定义时 E(u | X) = 0;设定线性模型时需相应条件成立</td><td>含截距 OLS 的样本残差满足 Σeᵢ = 0(数值计算有舍入误差)</td></tr><tr><td>含义</td><td>实际值相对真实条件均值的偏离</td><td>实际值相对估计条件均值的偏离</td></tr></tbody></table></div><div class="equation">eᵢ = uᵢ − (β̂₀ − β₀) − (β̂₁ − β₁)Xᵢ。</div><p class="">因此,残差与扰动项并非完全相同。含截距 OLS 还满足 ΣXᵢeᵢ = 0;这些是拟合所得的样本代数性质,不能据此证明总体扰动与解释变量无关。若线性条件均值设定不成立,拟合残差还会包含函数形式误设的影响。</p><p class="note"><strong>关于“总体回归曲线”</strong>:总体回归函数是 E(Y | X),本题将它设定为 β₀ + β₁X。工作簿没有说明所列家庭是否覆盖某个明确总体的全部成员,因此本文将拟合直线称为“总体回归函数的估计(样本回归线)”。各收入组的实际平均消费是组内经验均值,也不直接当作已知的真实总体条件均值。</p><h2 id="data">2. 数据整理与原表核对</h2><p class="">工作表采用横向分组布局:C3:L3 为 10 个收入水平(800、1100、…、3500),C4:L16 为家庭消费明细,C17:L17 为原表合计。标题文字在源工作簿中已有乱码,数字单元格可正常读取;变量含义依据给定示例图和表格结构确认。</p><p class="">整理过程:读取 C3:L17;核对收入表头;分别计算每列明细和并与末行合计比较;移除表头及合计行;将消费列转换为长表;删除空白明细;保留收入、消费和原 Excel 行号。空白不视为 0;相同金额的重复记录保留,因为可能对应不同家庭。每条明细等权,共得到 98 条记录。</p><p class="warning"><strong>发现 4 组明细与原表合计不一致。</strong> 差额按“明细之和 − 原表合计”定义。以下Line truncated
|
||||
-ArgumentList '/e do "C:\Users\cattom\Documents\econometrics\Week7\week7_analysis.do"' `
|
||||
-WorkingDirectory "C:\Users\cattom\Documents\econometrics\Week7" `
|
||||
-WindowStyle Hidden -Wait</code></pre><p class="">下列为主要估计与绘图指令摘录;前置数据整理和完整图形样式以完整 do 文件为准:</p><pre><code>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)</code></pre><p class="">Stata 运行后,在工作目录执行以下命令可独立核对数值并重建两份报告。此辅助脚本需要 Python、NumPy、SciPy 和 openpyxl;它读取 Stata 输出,不替代 Stata 回归或作图。</p><pre><code>python build_week7_report.py</code></pre><p class=""><strong>已完成验证</strong>:独立从 Excel 明细构建设计矩阵,用 NumPy 复算 OLS,并核对 98 条记录、系数、拟合值、残差、R²、Root MSE、常规及 HC1 标准误和双侧 t 检验 p 值;核对分组汇总和合计差异;检查 Stata 日志成功结束及图形文件结构。验证结果保存于 <code>verification.json</code>。</p><h2 id="files">6. 交付文件索引</h2><div class="table-wrap"><table><thead><tr><th scope="col">文件</th><th scope="col">内容</th></tr></thead><tbody><tr><td><a href="Week7_回归分析报告.md" download>Week7_回归分析报告.md</a></td><td>Markdown 文档,包含研究过程、结果及图片相对引用</td></tr><tr><td><a href="Week7_回归分析报告.html" download>Week7_回归分析报告.html</a></td><td>HTML5 页面,图形与样式内嵌,可离线阅读</td></tr><tr><td><a href="week7_analysis.do" download>week7_analysis.do</a></td><td>完整、可复现的 Stata 分析脚本</td></tr><tr><td><a href="week7_stata.log" download>week7_stata.log</a></td><td>Stata 纯文本分析日志,含回归、分组及检验输出</td></tr><tr><td><a href="consumption_fit.png" download>consumption_fit.png</a></td><td>仿照示例生成的 1800 像素宽图形</td></tr><tr><td><a href="consumption_fit.svg" download>consumption_fit.svg</a></td><td>可缩放矢量图</td></tr><tr><td><a href="consumption_fit.pdf" download>consumption_fit.pdf</a></td><td>适合打印的图形</td></tr><tr><td><a href="consumption_fit.gph" download>consumption_fit.gph</a></td><td>Stata 原生图形,可用 graph use 打开</td></tr><tr><td><a href="households_clean.dta" download>households_clean.dta</a></td><td>98 条清洗后家庭明细;同名 CSV 同时提供</td></tr><tr><td><a href="households_fitted.dta" download>households_fitted.dta</a></td><td>含拟合值、残差、残差平方的明细;同名 CSV 同时提供</td></tr><tr><td><a href="income_group_summary.csv" download>income_group_summary.csv</a></td><td>收入组人数、均值、标准差、范围和拟合均值;另存 DTA</td></tr><tr><td><a href="source_totals_audit.csv" download>source_totals_audit.csv</a></td><td>明细合计与原表合计差异审计;另存 DTA</td></tr><tr><td><a href="regression_coefficients.csv" download>regression_coefficients.csv</a></td><td>常规系数、标准误、t 值、p 值及区间;另存 DTA</td></tr><tr><td><a href="robust_coefficients.csv" download>robust_coefficients.csv</a></td><td>HC1 稳健系数表;另存 DTA</td></tr><tr><td><a href="model_statistics.csv" download>model_statistics.csv</a></td><td>拟合优度、残差核对与异方差检验统计量</td></tr><tr><td><a href="consumption_ols.ster" download>consumption_ols.ster</a></td><td>可由 estimates use 重新载入的 OLS 估计结果</td></tr><tr><td><a href="consumption_robust.ster" download>consumption_robust.ster</a></td><td>稳健标准误版本的估计结果</td></tr><tr><td><a href="build_week7_report.py" download>build_week7_report.py</a></td><td>独立验证与文档生成脚本</td></tr><tr><td><a href="verification.json" download>verification.json</a></td><td>数值验证状态及原始 Excel 的 SHA-256 指纹</td></tr></tbody></table></div><p class="">原始 Excel 与参考 PNG 保留在 Eg2_1_1 文件夹中。Stata 批处理另会自动生成 week7_analysis.log。Markdown 需与图形文件保留相对位置;HTML 页面本身可单独打开阅读,其文件下载链接需相邻产物仍在原目录。</p><h2 id="sources">7. 方法依据与来源</h2><p class="">数值结果以本地原始 Excel、Stata 实际执行日志及独立数值核验为依据;Stata 指令含义核对了本机随软件附带的官方帮助文件。以下编号对应正文的方法引用:</p><div class="table-wrap"><table><thead><tr><th scope="col">编号</th><th scope="col">来源</th><th scope="col">使用内容</th></tr></thead><tbody><tr><td>[1]</td><td>D:/Stata15/ado/base/r/regress.sthlp</td><td>OLS、vce(robust) 与 HC1 的 n/(n−k) 修正</td></tr><tr><td>[2]</td><td>D:/Stata15/ado/base/r/regress_postestimation.sthlp</td><td>线性预测 xb、残差 residuals 与 estat hettest</td></tr><tr><td>[3]</td><td>D:/Stata15/ado/base/t/twoway_lfit.sthlp</td><td>由一元线性回归预测值绘制拟合线</td></tr><tr><td>[4]</td><td>Eg2_1_1/Eg2_1_1.xlsx 与 Eg2_1_1/Eg2_1_1.png</td><td>原始数值、变量含义及仿图样式</td></tr></tbody></table></div><p class="">随机扰动与残差的比较依据正文给出的总体条件均值定义及 OLS 正规方程推导。未将原表合计作为新增观测,也未假定已知真实总体Line truncated
|
||||
<script>
|
||||
const slider = document.getElementById('income-slider');
|
||||
slider.addEventListener('input', () => {
|
||||
const income = Number(slider.value);
|
||||
document.getElementById('income-value').textContent = income.toFixed(0);
|
||||
document.getElementById('pred-value').textContent = (22.9309341033397 + 0.728798741695425 * income).toFixed(2);
|
||||
});
|
||||
</script></body></html>
|
||||
Reference in new issue
Block a user