ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

伍德里奇计算机习题 Stata 复现:横截面、面板、IV 与二值模型

伍德里奇计算机习题 Stata 复现:横截面、面板、IV 与二值模型 简介这份资源是伍德里奇《计量经济学》部分计算机习题的STATA详解文档面向金融学、经济学等专业本科生与考研备考者适合正在学习异方差、稳健标准误等章节并需要动手复现结果的读者。压缩包内共1个PDF文件约1.12MB以图文结合的回归输出截图与逐步推导为主覆盖第8章计算机习题的完整解答思路。内容围绕异方差模型设定与检验展开包含容许方差随性别变化的模型写法、估计结果解读、稳健标准误与通常标准误的对比以及怀特检验、特殊怀特检验中F统计量与p值的计算过程逐步展示如何保留残差并对自变量回归。作者为gw19501103285已有6686人学习下载。读者可据此对照STATA输出核对自己的回归结果理解方差差异显著性判断、对数变换对异方差性影响等易错点适合作为课后练习与考前复盘参考。1. 从 PDF 习题到可复现的 Stata 会话伍德里奇计算机习题的定位习题 PDF 上写着「用 WAGE1 数据估计教育回报率并检验 exper 与 tenure 是否联合显著」很多人第一反应是打开 STATA 敲一条reg wage educ exper tenure看见输出里三颗星就算做完。真正卡人的地方在后面题干要的是联合检验的 F 统计量而屏幕上的 t 值只回答单参数问题题干问对数工资模型的半弹性而系数直接读出的百分比只是近似值题干让你判断工具变量是否够强而很多人连第一阶段都没打印出来。伍德里奇教材的计算机习题本质上是把每一章的计量假设按顺序落到一个真实数据集上——先看描述统计再估方程再做约束检验最后解释经济含义。这篇内容按数据结构把习题分成横截面、面板、工具变量和二值因变量几类给出可复现的 STATA 命令、选项写法和输出判读方式。PDF 只提供题干答案得靠数据跑出来。2. 伍德里奇数据集与 Stata 环境准备bcuse、use 与习题 PDF 的文本解析2.1 三种取数路径bcuse 在线命令、本地 dta 与手工录入教材配套数据以.dta形式分发实际工作中最常见的三条路径差别不小选错路径会浪费大量时间在找文件名上。获取方式典型命令适用场景注意点bcuse在线取数ssc install bcuse后bcuse wage1, clear有网络、想省事首次要装包会把数据下载到本地缓存本地.dta文件use D:/eco/wage1.dta, clear课程统一发数据包路径用正斜杠中文目录容易出问题从 PDF 附录手工录入input逐行敲数据量极小的演示极易抄错必须用样本量做校验STATA 的安装包从官方或学校授权渠道拿装完之后把工作目录固定到数据文件夹后面所有命令都用相对路径do文件换台机器也能跑。常见做法是先cd到课程目录再pwd确认一次当前位置。* 固定工作目录避免每次写全路径 cd D:/course/wooldridge pwd * 在线取一份最小数据集验证网络与包是否可用 ssc install bcuse bcuse wage1, clear countcount返回的样本量是后续所有校验的基准值比如 wage1 是 526 条观测如果count出来不是这个数说明数据版本或者筛选条件出了问题。下面这张表把教材里出现频率最高的几个数据集和它们对应的题型列出来拿到 PDF 后可以先把习题按数据集归类一次性把同一份数据上的所有小题做完。数据集观测单位典型习题类型主力命令wage1个体劳动者教育回报、异方差检验reg、estat hettestbwght新生儿出生体重与吸烟量reg、testjtrain企业—年度面板培训补助与废品率xtset、xtregmurder州警力与犯罪率的 IVivregress 2slsmroz已婚女性劳动参与、工时logit、tobit2.2 用 pdftotext 与 pdfplumber 把习题 PDF 提取成可注释文本对照 PDF 敲命令时来回切窗口很容易看漏小题编号我一般先把题干提取成纯文本粘到do文件里当注释块写完一段代码抬头就能核对。文本型 PDF 用 poppler 的pdftotext最快加-layout保留原始的列对齐页码范围用-f和-l控制。# 只提取第 5 到第 12 页保留版式输出到 txt 便于贴进 do 文件 pdftotext -layout -f 5 -l 12 chapter15.pdf ce15.txt # 扫描版 PDF 没有文字层先做 OCR--skip-text 避免重复识别已有文字 ocrmypdf --skip-text chapter15.pdf chapter15_ocr.pdf pdftotext -layout chapter15_ocr.pdf ce15.txt题干里夹着表格时纯文本会错行这时候换pdfplumber按页取表得到的是二维列表可以直接复制成 CSV 或者手工核对数值。extract_text()负责整页文字extract_tables()负责结构化表格两者配合基本能把一道题的原貌还原出来。import pdfplumber with pdfplumber.open(ce15.pdf) as pdf: page pdf.pages[3] # 题干通常在前几页按需调整 print(page.extract_text()[:800]) # 习题里的表格数字提取成二维列表便于逐行核对 for tbl in page.extract_tables(): for row in tbl[:3]: print(row)需要注意的是双栏排版的教材extract_text可能把左右两栏交错拼接遇到读不通的句子就用extract_words()拿到每个词的坐标再按x0排序。提取出来的文字只用于对照题干不要直接当数据源数值一律以.dta里的变量为准。2.3 变量字典核对describe、codebook 与最大值最小值命令写回归之前必须确认变量名和取值含义教材正文里的变量名和数据集里的变量名偶尔不一致。describe看变量清单和类型codebook看取值分布和缺失情况summarize, detail看分位数和极值。检查离群值时STATA 的最大值最小值命令有两种用法summarize直接在输出里给 Min 和 Maxegen的max()/min()则把极值生成一列常量便于和list配合定位具体观测。bcuse wage1, clear describe codebook wage educ exper * 描述统计与极值检查 summarize wage educ exper tenure, detail misstable summarize * 生成整列极值常量再筛出落在极值上的观测 egen w_max max(wage) egen w_min min(wage) list wage educ if wage w_max | wage w_minegen里的max()和summarize的 Max 统计量含义一致都是对整列求值区别是前者生成变量、后者只显示在结果窗口。如果最大工资和次大值差出一个数量级多半是数据录入噪声或者变量单位不一致这种观测在稳健性检验里常被单独讨论。养成先跑describe再写回归的习惯能省掉后面八成的r(111)报错。3. 横截面计算机习题复现reg、robust 与对数模型的参数解读3.1 reg 输出逐项看从系数到 F 统计量横截面习题的骨架通常是「估一个方程 → 做一两个检验 → 解释系数」。以教育回报方程为例把普通标准误和稳健标准误两个版本都存下来对比着看才能理解选项到底改变了什么。bcuse wage1, clear reg wage educ exper tenure estimates store ols_plain * robust 只改标准误和 t 值系数点估计与上面完全一致 reg wage educ exper tenure, robust estimates store ols_robustrobust用的是 Huber-White 三明治方差估计它不假设同方差因此在异方差存在时 t 检验更可信代价是小样本下标准误可能偏大。输出表里要逐项对照Coef.是偏效应Std. Err.决定显著性[95% Conf. Interval]给出区间估计Root MSE是残差标准差R-squared和Adj R-squared在加入变量后一升一降F(3, 522)是全部斜率系数为零的联合检验。题干问「教育对工资的影响是否显著」时看 educ 行问「整个方程是否显著」时看最下面的 F 检验两者不能互换。* 异方差检验BP 检验与 White 检验原假设都是同方差 quietly reg wage educ exper tenure estat hettest estat imtest, white * 函数形式检验RESET原假设是模型形式正确 estat ovtestestat hettest默认用拟合值构造辅助回归加iid选项假设误差独立同分布加fstat报告 F 版本统计量。estat ovtest把拟合值的二次、三次项加回模型如果这些项联合显著说明线性形式设定有问题常见处理是取对数或者加平方项。3.2 对数模型的半弹性与二次项的转折点工资方程的经典变体是把被解释变量取对数系数解释从「增加一单位带来多少单位变化」变成「增加一单位带来百分之多少的变化」。这里有个容易被扣分的细节对数模型的系数是近似半弹性精确的百分比效应要用指数还原。gen lwage ln(wage) gen expersq exper^2 reg lwage educ exper expersq tenure * 二次项的转折点-b_exper / (2 * b_expersq)nlcom 顺带给出标准误 nlcom -_b[exper] / (2 * _b[expersq]) * 精确百分比效应而不是近似的 100 * b nlcom 100 * (exp(_b[educ]) - 1)经验平方项的系数为负时工作经验的工资效应先上升后下降转折点就是上面那条nlcom算出来的值。手算容易漏掉负号或者搞错分母用nlcom的好处是同时得到标准误和置信区间写在作业里更完整。_b[变量名]是估计后取系数的方法只在最近一次估计结果有效中间不要再插入其他回归命令。命令回答题干里的哪类问法关键输出test x1 x2「两个变量是否联合显著」F 统计量与 Prob Ftest x 0.1「系数是否等于某个理论值」t 值或 F 值、p 值lincom a b「两个系数之和是多少」点估计、标准误、置信区间nlcom「系数的非线性函数取值」同上基于 delta 方法联合检验是横截面习题的高频考点test exper expersq检验的是两个经验变量是否应该同时留在模型里只报其中一个的 t 值不足以回答这个问题。test educ 0.1这类约束检验则用在「教育回报是否等于 10%」的判断上注意在test里是数学等号不是赋值。test exper expersq test educ 0.1 lincom educ tenure4. 面板数据计算机习题xtset、xtreg 与聚类稳健标准误4.1 面板结构声明xtset 与 xtdescribe面板数据的命令和横截面最大的区别是必须先用xtset声明个体维度和时间维度声明之后L.、D.这类时间序列算子才可用。jtrain 数据是企业—年度面板个体是企业编号fcode时间是year三年平衡面板。bcuse jtrain, clear xtset fcode year xtdescribe * 面板描述统计同时给出组间和组内变异 xtsum lscrap grant grant_1xtdescribe会告诉你面板是平衡还是非平衡、每个个体的期数是否一致。xtsum的输出比summarize多两行between是组间标准差within是组内标准差固定效应模型只用组内变异识别参数如果某个变量的 within 变异极小估出来的系数会非常不稳定。这一步在很多习题解析里被跳过但它直接决定你对系数可信度的判断。4.2 固定效应与随机效应xtreg fe/re 与 hausman 检验固定效应通过组内离差变换消掉不随时间变化的个体效应随机效应则把个体效应当作与解释变量不相关的随机项用广义最小二乘估计。两者的选择依据就是 Hausman 检验原假设是个体效应与解释变量不相关此时随机效应更有效拒绝原假设就用固定效应。* 固定效应只利用企业内部的年度变化 xtreg lscrap d88 d89 grant grant_1, fe estimates store fe * 随机效应利用组内加组间信息需要额外假设 xtreg lscrap d88 d89 grant grant_1, re estimates store re * Hausman 检验原假设是随机效应一致 hausman fe red88、d89是两个年度虚拟变量固定效应模型里不需要再放常数项以外的年份基准因为组内变换已经消掉了不随时间变化的因素包括基准年份的公共效应。hausman fe re的写法里前一个参数是一致估计量后一个是有效估计量顺序写反会得到错误的结论。有个必须注意的地方hausman依赖同方差假设下估出来的方差矩阵如果re用了vce(robust)这条命令通常直接报错此时改用hausman fe re, sigmaless或者干脆以固定效应为主报告结果。4.3 一阶差分、时间虚拟变量与聚类稳健标准误jtrain 只有三期一阶差分和固定效应的估计结果理论上一致差别在标准误。差分方程把个体效应彻底消掉同时会损失一期观测估计时要注意样本量的变化。* 一阶差分版本D. 算子需要先 xtset reg D.lscrap D.grant * 聚类稳健标准误允许同一企业不同年份的误差任意相关 xtreg lscrap d88 d89 grant grant_1, fe vce(cluster fcode) * 对比一阶差分的聚类版本 reg D.lscrap D.grant, vce(cluster fcode)vce(cluster fcode)是面板数据里最常用的稳健化处理它假设企业之间相互独立、企业内部各期误差可以任意相关。聚类数就是企业数jtrain 里有一百多家企业渐近性质还算可靠如果聚类数只有十几个标准误会明显偏小常见做法是同时报告常规标准误和聚类标准误或者用自举法补充检验。差分方程里的D.grant表示当期与上一期补助的差额解释时是「补助变化的效应」和水平方程里「补助水平的效应」不是同一个东西写答案时要区分清楚。5. 工具变量与二值因变量习题ivregress 2sls、logit 与 margins5.1 内生性与 IV 语法骨架ivregress 2sls 的变量位置工具变量题的通用形式是「被解释变量、外生解释变量、内生解释变量 工具变量」。括号左边是内生变量右边是工具变量集合外生解释变量同时充当自己的工具。* 通用骨架y 是结果变量x1 外生x2 内生z1 z2 是工具 * ivregress 2sls y x1 (x2 z1 z2), first bcuse murder, clear * 具体工具变量集合以题干指定为准这里只演示语法位置 ivregress 2sls lmurder lincome (lpolpc lland lfaminc), firstfirst选项打印第一阶段回归这是判读 IV 结果的前提。理论上 2SLS 的系数在大样本下一致但方差远大于 OLS如果工具变量很弱估计结果可能比 OLS 还偏。括号写错位置是最常见的语法错误把外生变量误放进括号右边会让整个识别失效跑完之后一定用下面的诊断命令确认。5.2 第一阶段强度与过度识别检验* 每个内生变量的第一阶段 F 值和偏 R2 estat firststage * 过度识别检验工具变量个数多于内生变量个数时才可用 estat overidestat firststage给出的是第一阶段中工具变量的联合显著性经验上 F 值远大于 10 才比较放心低于这个量级就要考虑弱工具问题。estat overid的 Sargan 或 Hansen 检验原假设是工具变量与误差项不相关p 值很大表示不能拒绝工具外生p 值很小则说明某些工具变量值得怀疑。注意这个检验要求过度识别工具变量个数等于内生变量个数时无法执行。习惯用ivreg2的话ssc install ivreg2之后ivreg2 y x1 (x2 z1 z2), first robust会一次性输出第一阶段 F、偏 R² 和弱工具临界值写作业时信息更全。5.3 logit、probit 与 Tobit被解释变量不连续时怎么选被解释变量是 0/1 时用二值选择模型logit 和 probit 的区别只在连接函数系数符号方向一致但数值不可直接比较。mroz 数据的劳动参与方程是教材里的标准例子。bcuse mroz, clear logit inlf nwifeinc educ exper expersq age kidslt6 kidsge6 estimates store logit_m probit inlf nwifeinc educ exper expersq age kidslt6 kidsge6 estimates store probit_mlogit 的系数是「对数几率」的变化不是概率的变化直接读系数大小会被质疑。要回答「多受一年教育让参与概率提高多少」得转成边际效应。* 平均边际效应在样本均值处计算 margins, dydx(*) atmeans * 教育在不同经验水平上的边际效应考察交互含义 margins, dydx(educ) at(exper(0 10 20))margins默认在样本实际取值上求平均边际效应atmeans改为在均值点计算两种做法数值会有差异作业里要写明用的是哪一种。工时变量在 0 处大量堆积用普通回归会得到负的预测值Tobit 模型用ll(0)指定左侧截断点系数解释为对潜变量的效应不是对观测工时的效应。被解释变量形态常用命令系数解释题干常见问法连续、近似对称reg条件均值的偏效应「教育回报率是多少」连续、在 0 处堆积tobit , ll(0)潜变量效应「截断样本怎么估」0/1logit/probit对数几率 / 潜变量「参与概率受什么影响」连续且解释变量内生ivregress 2sls需要工具变量支撑「内生性怎么处理」6. do 文件与结果导出把一道计算机习题跑成可交付作业6.1 日志、目录与最小 do 文件骨架从零散敲命令改成一份能重跑的do文件是把习题变成作业的关键一步。开头用capture log close兜底防止上次日志文件没关导致log using报错set more off取消分页version固定语法版本换机器复现时不会因为版本差异改变输出。version 17 set more off cd D:/course/wooldridge capture log close main log using ce6_main.log, replace text name(main) bcuse wage1, clear gen lwage ln(wage) gen expersq exper^2 reg lwage educ exper expersq tenure, robust estimates store m3 log close mainlog using ... , text生成纯文本日志方便用编辑器搜索报错name(main)给日志起名一个 do 文件里可以同时开多个日志分别记录不同模型。数据清洗、回归估计、结果导出建议分成三个区块用注释分隔后面改参数时不会牵一发动全身。6.2 esttab 导出三线表与 PDF 交付链路* 三线表导出rtf 可直接用 Word 打开微调 esttab m1 m2 m3 using ce6_table.rtf, replace /// se star(* 0.10 ** 0.05 *** 0.01) /// stats(N r2_a, labels(样本量 调整R2)) /// title(表1 工资方程回归结果)esttab来自estout包se表示括号里放标准误换成t就是 t 值star()自定义显著性星号阈值stats()把样本量和调整 R² 追加到表底部。rtf 格式对 Word 最友好改完格式后用 LibreOffice 无头模式转 PDF或者挂一个 PDF 虚拟打印驱动直接打印成文件提交版本不会被 Word 版本兼容性坑到。# rtf 转 PDF无需打开图形界面 soffice --headless --convert-to pdf ce6_table.rtf6.3 常见报错的定位顺序报错常见原因处理顺序r(111) variable not found变量名拼错或数据集不对describe核对变量清单r(198) invalid syntax括号、逗号、选项位置写错拆成最小命令重跑对照helpr(2000) no observationsif条件把样本筛空了先count if ...确认样本量r(459) not sorted面板未按个体—时间排序重新xtset或先sortconvergence not achieved完全预测或变量共线查稀有类别放宽迭代次数定位顺序按「数据 → 变量 → 语法 → 算法」走先确认数据集装载正确再确认变量存在且没有全缺失然后检查命令语法最后才怀疑收敛问题。把log文件留着出错时从日志末尾往上翻报错行号会直接指向 do 文件里的具体那一行。真正提高复现效率的做法是把每一道计算机习题的样本量、关键系数和检验 p 值记在一张对照表里下次换个数据集跑同样的命令结构只要对照表里的数字对得上就能确信结果是可重复的。本文还有配套的精品资源点击获取
返回列表