From 3e43896a113dd1912ace7721ea6e2a12a9112199 Mon Sep 17 00:00:00 2001 From: Cat Tom Date: Fri, 23 Oct 2026 15:52:32 +0800 Subject: [PATCH] Week7-1 --- Week7/Eg2_1_1/Eg2_1_1.png | Bin 0 -> 42145 bytes Week7/Eg2_1_1/Eg2_1_1.xlsx | Bin 0 -> 9299 bytes Week7/Week7_回归分析报告.html | 23 +++ Week7/Week7_回归分析报告.md | 196 +++++++++++++++++++++ Week7/build_week7_report.py | 275 ++++++++++++++++++++++++++++++ Week7/consumption_fit.pdf | Bin 0 -> 101210 bytes Week7/consumption_fit.png | Bin 0 -> 145395 bytes Week7/consumption_fit.svg | 251 +++++++++++++++++++++++++++ Week7/consumption_ols.ster | Bin 0 -> 17469 bytes Week7/consumption_robust.ster | Bin 0 -> 18181 bytes Week7/households_clean.csv | 99 +++++++++++ Week7/households_fitted.csv | 99 +++++++++++ Week7/income_group_summary.csv | 11 ++ Week7/model_statistics.csv | 2 + Week7/regression_coefficients.csv | 3 + Week7/report_preview.png | Bin 0 -> 141728 bytes Week7/robust_coefficients.csv | 3 + Week7/source_totals_audit.csv | 11 ++ Week7/verification.json | 17 ++ Week7/week7_analysis.do | 165 ++++++++++++++++++ 20 files changed, 1155 insertions(+) create mode 100644 Week7/Eg2_1_1/Eg2_1_1.png create mode 100644 Week7/Eg2_1_1/Eg2_1_1.xlsx create mode 100644 Week7/Week7_回归分析报告.html create mode 100644 Week7/Week7_回归分析报告.md create mode 100644 Week7/build_week7_report.py create mode 100644 Week7/consumption_fit.pdf create mode 100644 Week7/consumption_fit.png create mode 100644 Week7/consumption_fit.svg create mode 100644 Week7/consumption_ols.ster create mode 100644 Week7/consumption_robust.ster create mode 100644 Week7/households_clean.csv create mode 100644 Week7/households_fitted.csv create mode 100644 Week7/income_group_summary.csv create mode 100644 Week7/model_statistics.csv create mode 100644 Week7/regression_coefficients.csv create mode 100644 Week7/report_preview.png create mode 100644 Week7/robust_coefficients.csv create mode 100644 Week7/source_totals_audit.csv create mode 100644 Week7/verification.json create mode 100644 Week7/week7_analysis.do diff --git a/Week7/Eg2_1_1/Eg2_1_1.png b/Week7/Eg2_1_1/Eg2_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..216d449002b6a527bbbaa60f6151ee994308d342 GIT binary patch literal 42145 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ⅈjk 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 T`PBUi1U}&*(Y)gvq2#{+K|d|r literal 0 HcmV?d00001 diff --git a/Week7/Eg2_1_1/Eg2_1_1.xlsx b/Week7/Eg2_1_1/Eg2_1_1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3b4ddb435b50a8a00faa73b2982699905995ca5f GIT binary patch literal 9299 zcmeHNg;yNe(jVO2oq<4b55e8tod5%aOR(VX76=dsK7>Gm26uONf=kfgE`b2wWcR(d zyV?Ezg7@y6?tA8RSDo%#^}AK|t5#ElgU1IT0+0a!01yB=%Cdd|0{|qz0|0mcWLQH< zCr3B1qnnAA*GsUgF`K7@J@tEdSOy3H7JC2x#((h&lq3(Sba7xyU(5ZF++TbhJ{_FZ z-Ujp{gHQbZiydn!Ix9GQgN0Mr8xwfbwl<7DFU~hu<>6y!e3l4by~tMs>S;29G#XrP zQx#iX8S1%bOwD0eIKmTJFqcPH5t~|{Q!4Y2Ru)EI6dCj;*fF>H8u@y+F}#ksP`hp9 zC9pPOHOv+Z0tQdc0o3ebstHTE9LM~+MG5khhE6)Em+$Dl;*oc+l36rn$0t~*5YsrY ztmXG*OR4fdXA1WJ*gsIu*RFbKPVVbiFoCoQFMacfe}%K#c-}67JO<#6Y+bseV| zg!;@-^=9C0sOCXwaCKcBbvmQv)?PBxrrAwUa5Eq;yeu?Ru21F@gne#tV8b%u_{JfT_v?H=oxJE^T5-Y~Aozy! z;f-Snh_Qkz)noyG9K$$|1hJmqRzZU*;G!3lJX`aLVeyfyN0TO!H6c6kd%|8cW3sh1 z*l7suHJCBdUmdN2a`iQ>FE_^~nI+G_*0Lu>cz86a?s}tMb7uf?!Fba|K3UV;l5f1J zim}bNf^|)+1JNHmo-Ev1-KxPkec*Qbr>kbup|Ev`?7NWfb5w@ej5Y+Q^a>@^cKE;B&eht?1#F?|=3?V$<@yutC2z(Qy2P-1kAsiP50>pU zrKNZmCB;v+#l_=+^SnWpyq0yKG2DX=1FTCL2}TCb3h{*Zr(;uYQ{HC;Mm52nTJhXn zKU$A7a^K#63cB*7k%YmlEya}~7y25Z=5g|6d!Z9mMx$Y^2?J)SgO$xWY-CKGk$|g- znu45x;4>~wOQ397wbXEjk}XY?5qR)}ibdwj*;JSvCffv;!fGX&=kT#Y6YyJWbg}8! zN4#E_#gEk7~(=5d#>P5 zsPC5H@ni;?-l__6&tsv9cGo?|+zEG%nm`0vIKKzTQg62%VEhwQjEtm>-a?a;O|qYr z!EaD;vj#hW*?&88{#@+?{Sim9=h&@8-vqIJR9WT|%}L(CDW?yEPlL^<>q%$EISyy2-0Qs;fN=qTSOH(O}m*9>2Yqkw{ zf}~LDcR7RZMp&Ty%FBE@l1`2kA}<*Y&o4VP9jL9*)`d?`aQc-M0E7(dB+4rYsm{^b2&r6cvjIJSBT)a1loBESPGC1mY8}xm3zN2 z0d;tOFw!N&!aq1aZb;EnIH!9$xFO8T;XG+<=;;OGkj%%(M!fv3SNX4O>}Xa2@6!8f z3`#AFh2B^J_|VPrzofh$R`4lZA|7H1Jm~Y9AJM4May~`)&g{xNOByFrld=d3BTcy1 zOY8dlR);xb2y-QnrBxu}GY@aZh&Gaw7-5@0gp)~8sg6-IOiye<2!A!EbyJpNj@WIc zgU?qxfC=-~2_tHyS)#Flbk0Xx^)k8}OdHFZ~Xfm|HdWFPQ@Gu~5Uapyp;OcxZm z{4I^9YS@5Fryk!T>r2n9wN4>H{J{pG14?2pB&`UEDtHr((69Y=Chd7qN1L?k-(LvG?p6A9hSc zZtn;3cCbYKPM6`Zd^Oh`aaM9s-h30_m$(xOsv+sCPf04{TZ~nSE#!vlqh6$K%m*QP z`h})p%~F@0JEA}csZRDzUYqZWvxG-`^Bi|a!7XiNKC3?wFqPeB@~r1pqHS~GWLdxB z6uH=ST%Sg9uzLsdQDSiPu9XC@Z&)~7GmJJ7H|&C2gu0vikT?IeiH8kC{ia`-qvmw` z^nN1dp+FQ*R<$x-B2%QB6tQe6<(tXpJK=$sgu$&LK_ks(tKhtDX;f(>k+fNk9qCO% zDjxGpix(L-q(l`|{V*RGWPFUiuQe@|V&7A&2Tp~3ZIzC~J4%XLqmLs`DnNOkgC6!Y zMHj_m-?{tt9dQawr-!Fd?(V)^mb&RBiN@zvTK6XAk;Gei`@q)8h3woj>G}X*kkePQ zMp=mEw)_P}K-J;a)y&Z^o zkWgKVGRfB~iAA<$;gN_??6;{qW@NQ`kT^#nJ?t5@)=yj~-bj(8j(^WEb0wwct{gc{ zkuY~sDbn@}uNVeaENlr2HfsnKt8~9hva=ZNGM8pHXt#M=YUC{l2HVX@)HNtFlTD#B z3Mgi6PDf@Nj@=OqVr8=GB^GUhwX}5gA&%rNby1Ty<-&1^Ws7Mp7B&@p`q8iV z#7i5EFw`QeyvHNVd3}|*A{(bm=`C@Lbix$oszoc_DL1O*>7RcDlQ^oBtnLsVoQTnX zSm@-cEi|LtVrv#uG8yhO40(I+V=`I=dHWfKY?b}!cxoFELL zOY(b)%)H~1N-*FePM?RmJvf}cOcxRA&Vy98*CH&&`JvG)DH9Rhk@s=w*bBj(c6sxM zrXZE!u$2Rrn}?|(i{N8&i(J0gZCEK}d-+aD^;vGnto?!2k}a$GNU3Lo_g*P)h#h^s zu}%UWkN`+aA9oqP@b#{}6nVvO?g~|0$D}+CX%gOMw*oCLiK2SogY8GJ%hTCaZqgBl8Ur6edK1#_`3u)>evIb+Q{Fu_&=#BRak~ zy-gm}~= z-Ms9WFh?Z^n4*iEioe)cMhxaUFF0+N$l|vNg@Qx($~+Yf6Ee&ivrmi&#CaFmu2wb~USD z6r0u|au`K7vDZ`i*@|kmXiT-ft9K=2nmRB+pcl=2uwsADUL0YVV%Q|XR}PE#c_ zJ89j2P)0J(j%9Xb%Y>$3qgHA*yDxf_od&K#Dcru=9D0Cz6a?Or@u;RjNLvbszLnxi zttfexDxhh#@oc_xZY2;ZUkC<9K~B(1El|m(%T#CS7?^WqNuzArkeYW0^zX#y_}9J= z(N8F8^IvQhOxtTeD|oVA%>j|_*+#qLEehRHB7sB5l;Wp#r9-I$SMpD=QD?@w_=E1Q z{G2g-w5c2L3pr%HV$ERZU>8|{39shYo{`0@O52qSmJ36ET$fvG+n*i_QUKbT}|SaPOr)j6smdQG}plOOe)r6zqdG>%nkhdSuDP1 z9=Heeq!qqOfy$idJEf1i{bGUx{P5A6Q*)2`ZN|>C9s<#`zCwruY`!5)i3hk47nnu( z-0&Q=?%evH-&JmQRRo=OrY%|5sDH9Ucw>4OLA?}*dvtW2{^K9%CMtl2g#h$Q7%2ci z{5wj1mPM}CV6dAj`)|{4314QKp=*&GcHe59ZCgmsow{Ycp}fkBx>`G{rq6jAwG0y~ zTf$UPc|Mj8!XA#TZ4_8}sU=0{mGv`odb2Y6Z&DVUJ)379z6;)L z+vYXOM?1JM#2o1OjM*OEEg!cnH>b>Kwv1I;!sA5W>MTAVu@Oj{-W3s~zpNJmBP1B> zQzRk!>%=GBYJmr8-32J=jb;xAI0w*5V>n7%ar2fA&v-IYch5PQ)7j+SQY0eonH-;M zF3SoQn4owl6@A>9s;d^trtX&X@6WjA{lqI!Fm+PFP`vpSaOiJtnRr#PNTqONo~;8m zK1$~d&2S^oUOZ54Mv-c4n%^FW1>Sucd{wuAC9=#Ro3XT94SSzq^||K4Z~6&V062oh zp^|k|o($!lYVb^6h&Wh2BEkJG5IOCG@*~z00*EQZ;MsquEA?og>-c3 zfz>-u2(SC~jCICg;*R9G)%V8Xvpzq#Ei!YoZtQfWy5sW_6(EUP1ZS1hQnip6_Km2( z_Iur+cLRpH`@V|@U&+YGFs0;j_6vj@M|-R6cDlz@PQEWVmpx7n@CkP8%t!5-XGqFp z=`X`Ke7b#1vCW2Sx1tJ+msW23hNW7o95$wi;J+)f3vXA&shYldRKR2+%Rvb_y=276 zi&5q0DVkX!k3sZf5&6XS!?Lr&fw{UqJp0t;LJD-;wQQA$VDlpHOdbVc!nFJ zPOO*Ypeo=i-9}_4CiX%1OT_`!tf6GiXunY9Xt+>{Xd3KX@w-qxUin$0g4(Yj6O)3nLo?F;$usR4_5nGX*Ivg`3AM=~a{jc&dK4lnDZrbH;k0trp1aQwvwz1~cc4>Qc682+a+iHoxeY~(%z4o7RP zys3plax=bZ-kIZK1+i)H?AW~a3qv@yEHnm@<>rZ@(p=k(HXD{b$lMWb`2?LQrvprD zM$8Q_$)9{|0kdh&K0!GJ@A12V-Y}Y{NYfLBV#Ig9pt1Mr7L=Nsk?*7-ab2cQ??raa zu&@X#9}!K{>uxpBUuY{o84b-#FgmE}HV{3=0M%TgPimPIC|OxFBO$xW&<`MV4#Kxc z>7_v=LyZMSq`AW1?^*eTdhpWEP=ZiA_DM+^9rj zFW?3%KKJTdW?cC`E(I+~05x}K(J*oV6L*N~hWm2ErIZ9SVL&YZ!+@LRND(S%m^inwEr#B}UC=8R@!=h59sa&yOqC+^JBAvK`+enOV}h@Gm> zO6w(p5c#Tl&?%DQQ(cx4*Nr~Lc!xHK zrylCrOej>85DdxGnpS)kP9D_@7;KDGW_>tOVy>-3LgCQm1)>c*7^f{y@T<=shV`2m zQ`6>SRDkpuQ+|Km|UoeO0woN+s6TGbIi^fvDZes&*s&tCV*>7YFz>qi>rE ze% zb9q;vqaACGez}SL1TH%_Nw^zVcjCrW48p6|*cc>*#gSA?(<{wUc4U4MHJg|c%BHw% z9N^L9yU^8?Nw50VF+i6v&eIRDSiXG^&n^({qC>btB(Warr9fFFnz+ZwzBd6}tf~8< zrZdxmJl;p+u_eEBUpKo6h9kPY|18{mG_V$lN_0({ti^keb$Vpx8RT{ir4Ig1!zI;Z zSBgQY9Cc`Bh6818Eu75NT%2CIvYR`(fdAEV{2yTp4aB~Q>WW<)_+hIEkCFpE>DBI% zl8Zru+2qJN_^T2wbp#naPbM56SE{pWLV%le*O_*>}tipeXf!y8mr zerbYj(XsQ5q1kCjX|{QW{|yXXBF90&_OPQ*Z!194{} zqzKIQ+M4LQmoGR#&dJ(4J>Y-<9W1YZ1Ky&~L-i@g z+3n0;zWkrpL6_`bBQvo>Wr+hj{P?YBM8C%u{e}0oTg2LE1Q9wV)o32GY4#-owP36X z$DI6B$^=h1m1Yb%A;cspmif-Yy0q`IZEa~4eDgfKc0l?KJYdz>NBfy?FL z3EB`YlP=Rf1-?C6R91fo76`{LFcMKihLDY*L9`<81Xs-X!V{5o+oQ|C4AeD@4j&Iof zyi5pzFAM5>!{FA}h;>{2`MUygCCVe$=;0wSLG`QCS5Op30!uEKBCJ~?=Q+G!_OQGp_qhugPX z+)&H>zKz1bvO?MKfBt;q-}d|W{0|>}F zUlsgHF#Mrl4fpp)_z&IitLU#)*B_#Yg#UT +Week 7|家庭消费回归分析 +
ECONOMETRICS · WEEK 07 · 2026.10.23

随机扰动、残差
与家庭消费回归

从概念区分到数据核对,用 Stata 估计收入与消费的线性关系。完整呈现原始数据问题、拟合结果与可复现过程。

有效家庭记录98
收入组数10
收入系数0.7288
拟合优度 R²0.9307

研究日期: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记录数明细之和原表合计差额
800424202420+0
1100649504950+0
1400111149511495+0
1700131644516445+0
2000131930519305+0
2300132186823870-2002
2600132502525025+0
2900102136221450-88
320092115321285-132
350061549915510-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% 置信区间
收入 X0.7287990.02030235.89701.952e-57[0.688499, 0.769099]
截距22.93093447.0966290.48690.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% 置信区间
收入 X0.02142834.01222.381e-55[0.686265, 0.771332]
截距43.4475630.52780.598867[-63.311797, 109.173665]

采用稳健标准误后,收入系数仍显著为正。稳健推断仍依赖相应抽样、独立性及大样本近似条件;数据没有提供抽样设计信息,且存在上述合计差异,所以结果宜作本组数据的教学性、描述性分析。

4. 仿照示例图作图与残差解释

Stata 使用 twoway (scatter consume income) (lfit consume income) 作图:深蓝色圆点表示家庭消费明细,红线表示 OLS 拟合的条件均值。横轴为每月可支配收入,纵轴为每月消费支出;淡蓝背景、白色绘图区、中文标题及底部图例均参照给定图片。[3]

图 1|Stata 生成的家庭消费散点与线性拟合图
图 1|Stata 生成的家庭消费散点与线性拟合图

每个固定收入水平上的竖直点列展示该收入组的经验消费分布。若收入、消费均相同,点会重合,所以图上可分辨的点数可能小于 98;这些观测在回归中全部保留。红线估计条件均值,不能代表每户家庭的实际消费。

按收入组得到的明细均值与拟合均值如下。回归直接使用 98 条家庭明细,未对 10 个组均值作不加权回归;各组家庭数量不同,不能随意替换分析单位。

收入 X家庭数组内平均消费拟合均值 Ŷ平均残差
8004605.000605.970-0.970
11006825.000824.610+0.390
1400111045.0001043.249+1.751
1700131265.0001261.889+3.111
2000131485.0001480.528+4.472
2300131682.1541699.168-17.014
2600131925.0001917.808+7.192
2900102136.2002136.447-0.247
320092350.3332355.087-4.754
350062583.1672573.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 元。

每月收入 2000 元拟合平均消费 1480.53 元

中间收入值是线性插值;结果表示拟合条件均值,并非对某户实际消费的保证。

查看题目提供的原始参考图题目提供的原始参考图

5. 复现方法与 Stata 指令

完整脚本 week7_analysis.do 从原始 Excel 开始,依次完成合计审计、长表转换、OLS 回归、拟合值与残差生成、图形导出、稳健标准误及异方差检验。脚本无需安装 Stata 扩展包。在 Stata 命令窗口运行:

do "C:/Users/cattom/Documents/econometrics/Week7/week7_analysis.do"

也可以在 Windows PowerShell 中后台执行。以下命令会等待 Stata 完成;重跑会更新同名分析产物:

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 文件为准:

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 回归或作图。

python build_week7_report.py

已完成验证:独立从 Excel 明细构建设计矩阵,用 NumPy 复算 OLS,并核对 98 条记录、系数、拟合值、残差、R²、Root MSE、常规及 HC1 标准误和双侧 t 检验 p 值;核对分组汇总和合计差异;检查 Stata 日志成功结束及图形文件结构。验证结果保存于 verification.json。

6. 交付文件索引

文件内容
Week7_回归分析报告.mdMarkdown 文档,包含研究过程、结果及图片相对引用
Week7_回归分析报告.htmlHTML5 页面,图形与样式内嵌,可离线阅读
week7_analysis.do完整、可复现的 Stata 分析脚本
week7_stata.logStata 纯文本分析日志,含回归、分组及检验输出
consumption_fit.png仿照示例生成的 1800 像素宽图形
consumption_fit.svg可缩放矢量图
consumption_fit.pdf适合打印的图形
consumption_fit.gphStata 原生图形,可用 graph use 打开
households_clean.dta98 条清洗后家庭明细;同名 CSV 同时提供
households_fitted.dta含拟合值、残差、残差平方的明细;同名 CSV 同时提供
income_group_summary.csv收入组人数、均值、标准差、范围和拟合均值;另存 DTA
source_totals_audit.csv明细合计与原表合计差异审计;另存 DTA
regression_coefficients.csv常规系数、标准误、t 值、p 值及区间;另存 DTA
robust_coefficients.csvHC1 稳健系数表;另存 DTA
model_statistics.csv拟合优度、残差核对与异方差检验统计量
consumption_ols.ster可由 estimates use 重新载入的 OLS 估计结果
consumption_robust.ster稳健标准误版本的估计结果
build_week7_report.py独立验证与文档生成脚本
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.sthlpOLS、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 正规方程推导。未将原表合计作为新增观测,也未假定已知真实总体参数。

Stata/SE 15.1 实际运行 · Python 独立数值核对 · 页面图形与样式全部内嵌,可离线阅读
+ \ No newline at end of file diff --git a/Week7/Week7_回归分析报告.md b/Week7/Week7_回归分析报告.md new file mode 100644 index 0000000..0e9cc2e --- /dev/null +++ b/Week7/Week7_回归分析报告.md @@ -0,0 +1,196 @@ +# 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 正规方程推导。未将原表合计作为新增观测,也未假定已知真实总体参数。 diff --git a/Week7/build_week7_report.py b/Week7/build_week7_report.py new file mode 100644 index 0000000..f9edbd3 --- /dev/null +++ b/Week7/build_week7_report.py @@ -0,0 +1,275 @@ +"""Verify Stata outputs against Excel and regenerate the two offline reports. +Requires: numpy, scipy, openpyxl. Run after week7_analysis.do. +""" +from pathlib import Path +import base64 +import csv +import hashlib +import html +import json +import re +import xml.etree.ElementTree as ET +import numpy as np +from scipy import stats +from openpyxl import load_workbook + +ROOT = Path(__file__).resolve().parent + +def read_csv(name): + with (ROOT / name).open(encoding='utf-8-sig', newline='') as f: + return list(csv.DictReader(f)) + +def numeric(row): + return {k: float(v) for k, v in row.items()} + +model = numeric(read_csv('model_statistics.csv')[0]) +coeff = {r['term']: {k: float(v) for k, v in r.items() if k != 'term'} for r in read_csv('regression_coefficients.csv')} +robust = {r['term']: {k: float(v) for k, v in r.items() if k != 'term'} for r in read_csv('robust_coefficients.csv')} +groups = [numeric(r) for r in read_csv('income_group_summary.csv')] +audit = [numeric(r) for r in read_csv('source_totals_audit.csv')] +fitted = [numeric(r) for r in read_csv('households_fitted.csv')] + +# Independent numerical validation: derive everything directly from source cells. +workbook = load_workbook(ROOT / 'Eg2_1_1/Eg2_1_1.xlsx', data_only=True) +sheet = workbook['Sheet1'] +source = [] +for col in range(3, 13): + for row in range(4, 17): + value = sheet.cell(row, col).value + if value is not None: + source.append((row, float(sheet.cell(3, col).value), float(value))) +source_array = np.array(source) +assert len(source) == 98 +assert all((r['excel_row'], r['income'], r['consume']) == item for r, item in zip(fitted, source)) +x, y = source_array[:, 1], source_array[:, 2] +X = np.column_stack([np.ones(len(x)), x]) +beta = np.linalg.lstsq(X, y, rcond=None)[0] +yhat = X @ beta +resid = y - yhat +n, k = X.shape +inv = np.linalg.inv(X.T @ X) +rss = resid @ resid +se = np.sqrt(np.diag((rss / (n-k)) * inv)) +hc1 = inv @ (X.T @ (X * (resid ** 2)[:, None])) @ inv * n / (n-k) +se_hc1 = np.sqrt(np.diag(hc1)) +np.testing.assert_allclose([model['intercept'], model['slope']], beta, rtol=1e-10, atol=1e-9) +np.testing.assert_allclose([r['fitted'] for r in fitted], yhat, rtol=1e-10, atol=1e-8) +np.testing.assert_allclose([r['residual'] for r in fitted], resid, rtol=1e-10, atol=1e-8) +for i, term in enumerate(['_cons', 'income']): + np.testing.assert_allclose(coeff[term]['se'], se[i], rtol=1e-10) + np.testing.assert_allclose(robust[term]['se'], se_hc1[i], rtol=1e-10) + for output, standard_error in [(coeff[term], se[i]), (robust[term], se_hc1[i])]: + p = 2 * stats.t.sf(abs(beta[i] / standard_error), n-k) + np.testing.assert_allclose(output['p'], p, rtol=1e-9, atol=0) +np.testing.assert_allclose(model['r_squared'], 1-rss/np.sum((y-y.mean())**2), rtol=1e-12) +np.testing.assert_allclose(model['root_mse'], np.sqrt(rss/(n-k)), rtol=1e-12) +for g, a in zip(groups, audit): + yy = y[x == g['income']] + assert g['n'] == len(yy) == a['n'] + assert a['detail_total'] == yy.sum() + np.testing.assert_allclose(g['mean_consume'], yy.mean(), rtol=1e-12) + assert a['difference'] == a['detail_total'] - a['reported_total'] +log = (ROOT / 'week7_stata.log').read_text(encoding='utf-8', errors='replace') +assert 'WEEK7_ANALYSIS_COMPLETED' in log +assert not re.search(r'^r\(\d+\);', log, flags=re.M) +assert (ROOT / 'consumption_fit.png').read_bytes().startswith(b'\x89PNG') +assert (ROOT / 'consumption_fit.pdf').read_bytes().startswith(b'%PDF') +ET.parse(ROOT / 'consumption_fit.svg') +assert '不同可支配收入水平' in (ROOT / 'week7_analysis.do').read_text(encoding='utf-8') +verification = { + 'status': 'passed', 'date': '2026-10-23', 'observations': n, + 'source_sha256': hashlib.sha256((ROOT/'Eg2_1_1/Eg2_1_1.xlsx').read_bytes()).hexdigest(), + 'independent_ols_intercept': float(beta[0]), 'independent_ols_slope': float(beta[1]), + 'max_abs_fitted_difference': float(np.max(np.abs(np.array([r['fitted'] for r in fitted])-yhat))), + 'checks': ['all 98 Excel source records match Stata data, including worksheet row', + 'OLS coefficients, fitted values, residuals, R-squared, RMSE', + 'conventional and HC1 standard errors and two-sided t-test p-values', + 'all income-group counts, means, and source-total differences', + 'Stata log completion and no r() errors', 'PNG, SVG, and PDF file structure'] +} +(ROOT / 'verification.json').write_text(json.dumps(verification, ensure_ascii=False, indent=2), encoding='utf-8') + +md, body = [], [] +sections = [] + +def inline(text): + text = html.escape(text) + text = re.sub(r'`([^`]+)`', r'\1', text) + text = re.sub(r'\*\*([^*]+)\*\*', r'\1', text) + return text + +def heading(title, anchor): + md.append('## ' + title) + body.append(f'

{html.escape(title)}

') + sections.append((title, anchor)) + +def paragraph(text, cls=''): + md.append(text) + body.append(f'

{inline(text)}

') + +def equation(text): + md.append('> ' + text) + body.append(f'
{html.escape(text)}
') + +def table(headers, rows): + md.append('| ' + ' | '.join(headers) + ' |\n| ' + ' | '.join(['---']*len(headers)) + ' |\n' + '\n'.join('| ' + ' | '.join(str(c).replace('|', r'\|') for c in r) + ' |' for r in rows)) + body.append('
' + ''.join('' for h in headers) + '' + ''.join(''+''.join('' for c in row)+'' for row in rows) + '
'+inline(h)+'
'+inline(str(c))+'
') + +def code(text, lang='stata'): + md.append('```'+lang+'\n'+text+'\n```') + body.append('
'+html.escape(text)+'
') + +def image(path, alt): + md.append(f'![{alt}]({path})') + encoded = base64.b64encode((ROOT/path).read_bytes()).decode() + body.append(f'
{html.escape(alt)}
{html.escape(alt)}
') + +def asset_link(path, label): + return f'{html.escape(label)}' + +md.append('# Week 7:随机扰动项、残差与家庭消费回归') +paragraph('研究日期:2026 年 10 月 23 日。数据:Eg2_1_1/Eg2_1_1.xlsx(Sheet1)。实际执行软件:Stata/SE 15.1,路径 D:/Stata15/StataSE-64.exe;脚本使用 version 15.0 语法。') +paragraph('本研究使用原表 98 条家庭消费明细,估计每月可支配收入与每月消费支出的线性关系,并参照给定图片完成 Stata 作图。所有金额单位均为元。') +equation(f'Ŷ = {model["intercept"]:.4f} + {model["slope"]:.6f}X;n = 98;R² = {model["r_squared"]:.6f}') + +heading('1. 随机扰动项与残差项', 'concepts') +paragraph('**随机扰动项** uᵢ 是实际观测值与真实总体条件均值之间的偏差。写作 Yᵢ = m(Xᵢ) + uᵢ,其中 m(Xᵢ) = E(Yᵢ | Xᵢ)。它反映给定收入后,家庭偏好、人口规模、其他未纳入因素及随机变化造成的消费差异。真实总体条件均值通常未知,因此 uᵢ 通常不可直接观测。') +equation('uᵢ = Yᵢ − E(Yᵢ | Xᵢ);若 m(Xᵢ) = β₀ + β₁Xᵢ,则 uᵢ = Yᵢ − β₀ − β₁Xᵢ。') +paragraph('**残差项** eᵢ 是实际观测值与拟合值之间的偏差。它在估计回归系数后可以计算,是对相应随机扰动的估计。') +equation('eᵢ = Yᵢ − Ŷᵢ = Yᵢ − β̂₀ − β̂₁Xᵢ。') +table(['比较维度', '随机扰动项 uᵢ', '残差项 eᵢ'], [ + ['参照对象', '真实总体回归函数 E(Y | X)', '利用数据估计的回归函数 Ŷ'], + ['参数', '真实且通常未知的 β₀、β₁', '可由数据算出的 β̂₀、β̂₁'], + ['能否直接计算', '通常不能', '拟合后可以'], + ['零均值性质', '以真实条件均值定义时 E(u | X) = 0;设定线性模型时需相应条件成立', '含截距 OLS 的样本残差满足 Σeᵢ = 0(数值计算有舍入误差)'], + ['含义', '实际值相对真实条件均值的偏离', '实际值相对估计条件均值的偏离'] +]) +equation('eᵢ = uᵢ − (β̂₀ − β₀) − (β̂₁ − β₁)Xᵢ。') +paragraph('因此,残差与扰动项并非完全相同。含截距 OLS 还满足 ΣXᵢeᵢ = 0;这些是拟合所得的样本代数性质,不能据此证明总体扰动与解释变量无关。若线性条件均值设定不成立,拟合残差还会包含函数形式误设的影响。') +paragraph('**关于“总体回归曲线”**:总体回归函数是 E(Y | X),本题将它设定为 β₀ + β₁X。工作簿没有说明所列家庭是否覆盖某个明确总体的全部成员,因此本文将拟合直线称为“总体回归函数的估计(样本回归线)”。各收入组的实际平均消费是组内经验均值,也不直接当作已知的真实总体条件均值。', 'note') + +heading('2. 数据整理与原表核对', 'data') +paragraph('工作表采用横向分组布局:C3:L3 为 10 个收入水平(800、1100、…、3500),C4:L16 为家庭消费明细,C17:L17 为原表合计。标题文字在源工作簿中已有乱码,数字单元格可正常读取;变量含义依据给定示例图和表格结构确认。') +paragraph('整理过程:读取 C3:L17;核对收入表头;分别计算每列明细和并与末行合计比较;移除表头及合计行;将消费列转换为长表;删除空白明细;保留收入、消费和原 Excel 行号。空白不视为 0;相同金额的重复记录保留,因为可能对应不同家庭。每条明细等权,共得到 98 条记录。') +paragraph('**发现 4 组明细与原表合计不一致。** 差额按“明细之和 − 原表合计”定义。以下差异不足以判断究竟是明细录入错误、合计错误还是遗漏,因此不补造记录,也不按合计反推消费值;回归仅依据现有明细。', 'warning') +table(['收入 X', '记录数', '明细之和', '原表合计', '差额'], [[f'{a["income"]:.0f}', f'{a["n"]:.0f}', f'{a["detail_total"]:.0f}', f'{a["reported_total"]:.0f}', f'{a["difference"]:+.0f}'] for a in audit]) +paragraph('特别是收入 2300 元组,明细之和为 21868 元,而原表合计为 23870 元,差额为 −2002 元。应先向数据提供者核实,再考虑更正;本次结果对应当前文件的可见明细。') + +heading('3. 回归设定、过程与估计结果', 'results') +paragraph('设 X 为家庭每月可支配收入,Y 为每月消费支出。假定总体条件均值为线性形式:E(Y | X) = β₀ + β₁X;使用普通最小二乘法(OLS)选择截距和斜率,使 98 条明细的残差平方和最小。[1]') +equation('min Σ(Yᵢ − β̂₀ − β̂₁Xᵢ)²;β̂₁ = Σ(Xᵢ − X̄)(Yᵢ − Ȳ) / Σ(Xᵢ − X̄)²;β̂₀ = Ȳ − β̂₁X̄。') +paragraph(f'样本平均收入 X̄ = {x.mean():.4f} 元,平均消费 Ȳ = {y.mean():.4f} 元。Stata 命令为 `regress consume income`,并使用 `predict ..., xb` 与 `predict ..., residuals` 保存拟合值及残差。[1][2]') +equation(f'Ŷ = {model["intercept"]:.6f} + {model["slope"]:.9f}X') +table(['变量', '系数', '常规标准误', 't 值', 'p 值', '常规 95% 置信区间'], [ + ['收入 X', f'{coeff["income"]["estimate"]:.6f}', f'{coeff["income"]["se"]:.6f}', f'{coeff["income"]["t"]:.4f}', f'{coeff["income"]["p"]:.3e}', f'[{coeff["income"]["ci_low"]:.6f}, {coeff["income"]["ci_high"]:.6f}]'], + ['截距', f'{coeff["_cons"]["estimate"]:.6f}', f'{coeff["_cons"]["se"]:.6f}', f'{coeff["_cons"]["t"]:.4f}', f'{coeff["_cons"]["p"]:.6f}', f'[{coeff["_cons"]["ci_low"]:.6f}, {coeff["_cons"]["ci_high"]:.6f}]'] +]) +table(['指标', '结果'], [ + ['观测数 / 残差自由度', '98 / 96'], + ['R² / 调整 R²', f'{model["r_squared"]:.6f} / {1-(1-model["r_squared"])*(n-1)/(n-k):.6f}'], + ['Root MSE(元)', f'{model["root_mse"]:.6f}'], + ['残差平方和(元²)', f'{model["rss"]:.6f}'], + ['常规 F(1,96) / p 值', f'{model["F"]:.6f} / {model["p_F"]:.3e}'] +]) +paragraph('**经济含义**:在这组数据的线性拟合中,收入每高 1 元,拟合的平均消费约高 0.7288 元;每高 100 元,约高 72.88 元。可将斜率描述为估计的边际消费倾向,但单变量描述性回归不能独自识别收入对消费的因果作用。') +paragraph('R² = 0.9307 表示收入的线性拟合解释了本数据中约 93.07% 的消费总离差平方和。它不是预测准确率,也不能证明不存在遗漏变量。截距对应收入为 0 时的拟合消费,但 0 超出观测收入范围 800—3500 元,因而不作实质经济解释。') +paragraph(f'**补充稳健性核对**:`estat hettest` 的 Breusch–Pagan / Cook–Weisberg 检验为 χ²(1) = {model["bp_chi2"]:.4f},p = {model["bp_p"]:.6f},在其检验条件下拒绝同方差原假设。另运行 `regress consume income, vce(robust)` 计算 HC1 稳健标准误;回归系数和拟合直线保持一致。[1][2]') +table(['变量', 'HC1 稳健标准误', '稳健 t 值', '稳健 p 值', '稳健 95% 置信区间'], [ + ['收入 X', f'{robust["income"]["se"]:.6f}', f'{robust["income"]["t"]:.4f}', f'{robust["income"]["p"]:.3e}', f'[{robust["income"]["ci_low"]:.6f}, {robust["income"]["ci_high"]:.6f}]'], + ['截距', f'{robust["_cons"]["se"]:.6f}', f'{robust["_cons"]["t"]:.4f}', f'{robust["_cons"]["p"]:.6f}', f'[{robust["_cons"]["ci_low"]:.6f}, {robust["_cons"]["ci_high"]:.6f}]'] +]) +paragraph('采用稳健标准误后,收入系数仍显著为正。稳健推断仍依赖相应抽样、独立性及大样本近似条件;数据没有提供抽样设计信息,且存在上述合计差异,所以结果宜作本组数据的教学性、描述性分析。') + +heading('4. 仿照示例图作图与残差解释', 'figure') +paragraph('Stata 使用 `twoway (scatter consume income) (lfit consume income)` 作图:深蓝色圆点表示家庭消费明细,红线表示 OLS 拟合的条件均值。横轴为每月可支配收入,纵轴为每月消费支出;淡蓝背景、白色绘图区、中文标题及底部图例均参照给定图片。[3]') +image('consumption_fit.png', '图 1|Stata 生成的家庭消费散点与线性拟合图') +paragraph('每个固定收入水平上的竖直点列展示该收入组的经验消费分布。若收入、消费均相同,点会重合,所以图上可分辨的点数可能小于 98;这些观测在回归中全部保留。红线估计条件均值,不能代表每户家庭的实际消费。') +paragraph('按收入组得到的明细均值与拟合均值如下。回归直接使用 98 条家庭明细,未对 10 个组均值作不加权回归;各组家庭数量不同,不能随意替换分析单位。') +table(['收入 X', '家庭数', '组内平均消费', '拟合均值 Ŷ', '平均残差'], [[f'{g["income"]:.0f}', f'{g["n"]:.0f}', f'{g["mean_consume"]:.3f}', f'{g["fitted_mean"]:.3f}', f'{g["mean_residual"]:+.3f}'] for g in groups]) +paragraph(f'**残差例子**:Excel 单元格 C4 对应收入 800 元、消费 561 元。其拟合消费为 {yhat[0]:.4f} 元,所以 e = 561 − {yhat[0]:.4f} = {resid[0]:.4f} 元。负号表示这户家庭的实际消费低于拟合条件均值;这不是已知的真实随机扰动 u。') +paragraph(f'数值核对:Σeᵢ = {model["residual_sum"]:.3e},ΣXᵢeᵢ = {model["income_residual_sum"]:.3e}。两者在浮点精度下接近 0,与含截距 OLS 的正规方程一致;Root MSE = √[Σeᵢ²/(98−2)] = {model["root_mse"]:.4f} 元。') +body.append(f'''
每月收入 2000 元拟合平均消费 {model['intercept']+model['slope']*2000:.2f} 元

中间收入值是线性插值;结果表示拟合条件均值,并非对某户实际消费的保证。

''') +body.append('
查看题目提供的原始参考图') +# The original image remains available in Markdown as a regular reference link. +md.append('[原始参考图](Eg2_1_1/Eg2_1_1.png)') +original_img = base64.b64encode((ROOT/'Eg2_1_1/Eg2_1_1.png').read_bytes()).decode() +body.append(f'题目提供的原始参考图
') + +heading('5. 复现方法与 Stata 指令', 'reproduce') +paragraph('完整脚本 `week7_analysis.do` 从原始 Excel 开始,依次完成合计审计、长表转换、OLS 回归、拟合值与残差生成、图形导出、稳健标准误及异方差检验。脚本无需安装 Stata 扩展包。在 Stata 命令窗口运行:') +code('do "C:/Users/cattom/Documents/econometrics/Week7/week7_analysis.do"') +paragraph('也可以在 Windows PowerShell 中后台执行。以下命令会等待 Stata 完成;重跑会更新同名分析产物:') +code('Start-Process -FilePath "D:\\Stata15\\StataSE-64.exe" `\n -ArgumentList \'/e do "C:\\Users\\cattom\\Documents\\econometrics\\Week7\\week7_analysis.do"\' `\n -WorkingDirectory "C:\\Users\\cattom\\Documents\\econometrics\\Week7" `\n -WindowStyle Hidden -Wait', 'powershell') +paragraph('下列为主要估计与绘图指令摘录;前置数据整理和完整图形样式以完整 do 文件为准:') +code('use "C:/Users/cattom/Documents/econometrics/Week7/households_clean.dta", clear\nregress consume income\npredict double fitted, xb\npredict double residual, residuals\ntwoway (scatter consume income) (lfit consume income), ///\n title("不同可支配收入水平组家庭消费支出的条件分布图") ///\n xtitle("每月可支配收入(元)") ytitle("每月消费支出(元)")\nregress consume income, vce(robust)') +paragraph('Stata 运行后,在工作目录执行以下命令可独立核对数值并重建两份报告。此辅助脚本需要 Python、NumPy、SciPy 和 openpyxl;它读取 Stata 输出,不替代 Stata 回归或作图。') +code('python build_week7_report.py', 'powershell') +paragraph('**已完成验证**:独立从 Excel 明细构建设计矩阵,用 NumPy 复算 OLS,并核对 98 条记录、系数、拟合值、残差、R²、Root MSE、常规及 HC1 标准误和双侧 t 检验 p 值;核对分组汇总和合计差异;检查 Stata 日志成功结束及图形文件结构。验证结果保存于 `verification.json`。') + +heading('6. 交付文件索引', 'files') +assets = [ + ('Week7_回归分析报告.md', 'Markdown 文档,包含研究过程、结果及图片相对引用'), + ('Week7_回归分析报告.html', 'HTML5 页面,图形与样式内嵌,可离线阅读'), + ('week7_analysis.do', '完整、可复现的 Stata 分析脚本'), + ('week7_stata.log', 'Stata 纯文本分析日志,含回归、分组及检验输出'), + ('consumption_fit.png', '仿照示例生成的 1800 像素宽图形'), + ('consumption_fit.svg', '可缩放矢量图'), + ('consumption_fit.pdf', '适合打印的图形'), + ('consumption_fit.gph', 'Stata 原生图形,可用 graph use 打开'), + ('households_clean.dta', '98 条清洗后家庭明细;同名 CSV 同时提供'), + ('households_fitted.dta', '含拟合值、残差、残差平方的明细;同名 CSV 同时提供'), + ('income_group_summary.csv', '收入组人数、均值、标准差、范围和拟合均值;另存 DTA'), + ('source_totals_audit.csv', '明细合计与原表合计差异审计;另存 DTA'), + ('regression_coefficients.csv', '常规系数、标准误、t 值、p 值及区间;另存 DTA'), + ('robust_coefficients.csv', 'HC1 稳健系数表;另存 DTA'), + ('model_statistics.csv', '拟合优度、残差核对与异方差检验统计量'), + ('consumption_ols.ster', '可由 estimates use 重新载入的 OLS 估计结果'), + ('consumption_robust.ster', '稳健标准误版本的估计结果'), + ('build_week7_report.py', '独立验证与文档生成脚本'), + ('verification.json', '数值验证状态及原始 Excel 的 SHA-256 指纹') +] +md.append('| 文件 | 内容 |\n| --- | --- |\n' + '\n'.join(f'| [{name}]({name}) | {desc} |' for name, desc in assets)) +body.append('
'+''.join('' for name,desc in assets)+'
文件内容
'+asset_link(name,name)+''+html.escape(desc)+'
') +paragraph('原始 Excel 与参考 PNG 保留在 Eg2_1_1 文件夹中。Stata 批处理另会自动生成 week7_analysis.log。Markdown 需与图形文件保留相对位置;HTML 页面本身可单独打开阅读,其文件下载链接需相邻产物仍在原目录。') + +heading('7. 方法依据与来源', 'sources') +paragraph('数值结果以本地原始 Excel、Stata 实际执行日志及独立数值核验为依据;Stata 指令含义核对了本机随软件附带的官方帮助文件。以下编号对应正文的方法引用:') +table(['编号', '来源', '使用内容'], [ + ['[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', '原始数值、变量含义及仿图样式'] +]) +paragraph('随机扰动与残差的比较依据正文给出的总体条件均值定义及 OLS 正规方程推导。未将原表合计作为新增观测,也未假定已知真实总体参数。') + +(ROOT/'Week7_回归分析报告.md').write_text('\n\n'.join(md)+'\n', encoding='utf-8') +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}} +''' +nav = '' +page = f''' +Week 7|家庭消费回归分析 +
ECONOMETRICS · WEEK 07 · 2026.10.23

随机扰动、残差
与家庭消费回归

从概念区分到数据核对,用 Stata 估计收入与消费的线性关系。完整呈现原始数据问题、拟合结果与可复现过程。

有效家庭记录98
收入组数10
收入系数{model['slope']:.4f}
拟合优度 R²{model['r_squared']:.4f}
{nav}
{''.join(body)}
Stata/SE 15.1 实际运行 · Python 独立数值核对 · 页面图形与样式全部内嵌,可离线阅读
+''' +(ROOT/'Week7_回归分析报告.html').write_text(page, encoding='utf-8') +# Static checks for complete, portable HTML and working local artifact links. +from html.parser import HTMLParser +class ValidateHTML(HTMLParser): + def handle_starttag(self, tag, attrs): + attrs = dict(attrs) + if tag == 'img': + assert attrs['src'].startswith('data:image/png;base64,') + assert attrs.get('alt') + if tag == 'a' and not attrs['href'].startswith('#'): + assert (ROOT / attrs['href']).exists(), attrs['href'] +ValidateHTML().feed(page) +assert '\ufffd' not in page +assert len(re.findall(r'

lQ|97a}!q+J4Z_ZmxhU@xeE<1w1Xx9 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