Stata结果输出:addest自己定制输出的统计量
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会课程 · 基于机器学习的因果推断方法
丁晨:厦门大学, 3049378404@qq.com
王文泽:中山大学,wangwz5@sysu.edu.cn
目录
1. 应用背景
2. 用法介绍
2.1 addest 命令安装
2.1 基本语法
3. 实例说明
3.1 基础数据分析
3.2 将线性回归后的各检验结果加入 ereturn 中
3.3 替换估计结果集中的相关系数及方差-协方差矩阵
3.4 扩展结果集中的 b、v 矩阵
3.5 增加 ereturn 中的暂元
4. 小结
5. Stata 实操范例
6. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 应用背景
用户使用 Stata 估计后,往往需要将标量,向量,矩阵或文本信息附加到估计结果中。
本文介绍的 addest
命令,就是起到这个作用。此命令扩展了 Stata 的 ereturn
命令及一些估计检验命令的特性,它使用存储在 ereturn 中的估计结果,允许用户附加一些数据项到估计结果中。
估计命令的结果集都存储在内存中,用户可以输入 ereturn list
读取数据集,并运用到后面的计算中。比如,用户输入 display e(N)
可以获取最新估计结果中的样本数。
此外,Stata 内置或用户提供的很多估计检验命令都需要借助 ereturn
做进一步分析。比如,Stata 中功能强大的 margins
和 marginsplot
命令,及非常通用的 estimates table
命令。包括 xml_table
、 outreg
在内的很多程序,都是将多个模型的估计结果,用一种相似的 table 进行展示。
addest
命令致力于解决这么一种情境,用户希望用一个估计检验命令展示或处理原始估计模型的一些特性,但目前这些特性并不在存储结果中。在执行回归语句后,用户可通过 addest
命令将一些选项添加到已有存储项中,进一步丰富 ereturn
中的存储内容。在此基础上,通过 esttab
等命令,方便快速的输出新增选项。
后面将从用法和实例说明两方面,介绍此命令的使用。
2. 用法介绍
本小节分别介绍 addest
命令的基本语法和选项。
2.1 addest 命令安装
*findit addest
net install addest, replace
2.1 基本语法
addest
命令的基本语法如下:
addest [ , name(charstring) value(numeric value) bvector(vector name)
vcematrix(matrix name) rename augbvector(number)
augvcematrix(number) augcoefname(string) augeqname(string)
textname(string) textstring(string) matname(ematrix_name)
matrix(existing_matrix) findomitted buildfvinfo post repost *
]
其中,addest
为命令主体,不可省略;addest_options
为在基础命令上添加的选项,包含5组,每组各有2-3 个选项,同组选项必须搭配使用。下面是它们的详细介绍。
name(charstring)
和value(numeric value)
:这是一对选项,必须一起使用。name()
定义新增标量的名称,只能使用 charsting 类型,不能包含特殊字符,它也是 Stata macro 变量的名称。value
则为对应的数值。如果用户使用了一个已存在的标量名称,那么它的值会被覆盖。bvectore(vector name)
和vceatrix(matrix value)
:这对选项的作用是使用户替换估计结果中的相关系数及方差-协方差矩阵的向量值。新的相关系数及方差-协方差矩阵必须和 ereturn 空间中原来的矩阵有相同的行数和列数。rename
:这个选项只能配合bvector
和vceatrix
这组选项使用,它让 Stata 使用bvector
中的 names 作为b
、v
估计矩阵的标签。这些标签接下来会被用在ereturn display
或estimates table
的输出结果中。augbvector(number)
,haugvceatrix(number)
,augcoefname(string)[augeqname(string)]
:这4个选项也是一组。前3个选项需要一起使用,第4个选项是给新增的相关性估计指定一个方程名称,当 e(b) 和 e(V) 的结果集包括等式名称还存储在e(return)
时,才需要附加。这组选项使用户能在相关系数矩阵中添加一个单独估计的相关系数,并在原来估计的相关系数的方差-协方差矩阵添加新估计的方差,**e(V)**。textname(string_with_no_blanks)
,textstring(string_with_no_blanks)
:这组选项的作用使用户可以在e(return)
结果集中添加任意的字符串作为 macro。matname(ematrix_name) matrix(existing_matrix)
:这两个选项是必须同时进行设定。它们先将之前创建命名为 existing_matrix 的 Stata 矩阵加载进入ereturn
的存储空间中,并更改为名为 ematrix_name 的矩阵,其中 ematrix_name 中不能包含空格或特殊字符。如果用户在设定使用了一个已经存在于 ereturn 空间中的名称,那个名称将被覆盖;post
和repost
:当用户更改或更新ereturn
存储空间中的估计结果时,addest
命令默认设定为repost
选项。当用户更改或更新涉及到ereturn
存储空间的其他内容时,addest
命令默认设定为post
选项。同时用户也可以通过直接输入post
或repost
指令来覆盖这些默认选项;findomitted
:通过ereturn post
和ereturn repost
来指定。将省略运算符o.
添加到列表中 e(V) 的零值对角线元素对应的变量中,此选项的设定会同样传递给ereturn repost
;buildfvinfo
:通过ereturn post
和ereturn repost
来指定,并计算用于测定可估计函数的 H 矩阵,该矩阵将会用于一些 post-estimation 命令,例如:contrast
,margins
和pwcompare
。此选项的设定会同样传递给ereturn repost
;*(other options)
:任何其他选项的设定都会被传递到ereturn post
和ereturn repost
。
3. 实例说明
下面本文基于数据集 nlsw88.dta 来简要说明 addest
命令的使用。以 wage
(妇女的小时工资) 作为被解释变量、
以 collgrad (是否大学毕业)
、 race (种族类别)
及它们的交乘项作为解释变量建立线性回归模型。使用 因子变量 的语法格式,在变量前面加上前缀 i.
生成虚拟变量 i.race
,基准组为第一个类别 white。collgrad
本身是虚拟变量,1 代表大学毕业,0 代表大学未毕业。
3.1 基础数据分析
sysuse nlsw88.dta
* 描述性统计
tabulate race collgrad,summarize(wage) mean st o
table race collgrad,c(count wage mean wage sd wage)
* 相关系数矩阵
pwcorr wage race collgrad,sig star(.01)
return list
mat pwcmat = r(C)
3.2 将线性回归后的各检验结果加入 ereturn 中
线性回归,并进行系数显著性检验、异方差、共线性检验,使用addest , name(charstring)) value(numeric value)
命令,将检验结果加入 ereturn。
* 线性回归
reg wage i.race##collgrad
ereturn list
* 检验变量系数的显著性;将检验结果存入结果集中
local varlist
test 2.race 3.race 1.race 1.collgrad
addest,name(F_of_test) value(50.21)
addest,name(p_of_test) value(0.000)
* 异方差检验:使用怀特检验;将检验结果存入结果集中
estat imtest,white //p值为0.0106,存在异方差
addest ,name("wtest_p") value(0.0106)
* 多重共线性检验:VIF<=10 或者1/VIF>0.1 说明没有多重共线性
estat vif
addest,name("VIF") value(1.42)
如下所示,ereturn list
结果集中,新增了几个标量,存储各检验结果
. ereturn list
scalars:
e(VIF) = 1.42
e(wtest_p) = .0106
e(p_of_test) = 0
e(F_of_test) = 50.21
3.3 替换估计结果集中的相关系数及方差-协方差矩阵
注意:使用addest,bvectore(vector value) vceatrix(matrix value) rename
命令仅替换 ereturn 中的 e(b) e(V) 两矩阵,不改变其它值。并且替换矩阵会被同步删除。该选项实用性不强,小编没有想到有哪个场景,需要使用该选项。
* 线性回归,并保存估计结果为e1
reg wage i.race##collgrad
est store e1
mat eb1 = e(b)
mat ev1 = e(V)
* 使用稳健的标准差对数据进行回归分析,并保存估计结果为e2
reg wage i.race##collgrad,robust
est store e2
mat eb2 = e(b)
mat ev2 = e(V)
* 用e2中的e(b) e(V) 替换e1的e(b) e(V)
est restore e1
addest,b(eb2) vce(ev2) rename //该命令会同时删除eb2 ev2矩阵
mat list e(b)
mat list e(V)
e1 中的 e(b) e(V) 已发生改变, 详细结果,可运行上述代码查看。
3.4 扩展结果集中的 b、v 矩阵
使用addest , augbvector(number) augvceatrix(number)augcoefname(string)[augeqname(string)]
扩展结果集中的 b、v 矩阵。
* 线性回归,并保存估计结果为e1
reg wage i.race#collgrad
est store e1
* 增加自变量进行线性回归,并保存估计结果为e2
reg wage i.race#collgrad 2.race 1.collgrad
est store e2
* 扩展e1的e(b) e(V)矩阵值
est restore e1
addest,augb(-1.437)augvce(0.0881) augcoefname("2.race")
addest,augb(3.013)augvce(0.0956) augcoefname("collgrad")
使用以下命令,查看结果,e1 中的 e(b) e(V) 各新增了一行
est table //或者使用 matrix list e(b) 看系数
ereturn list //看估计的结果集列表
matrix list e(V) //可以检验方差-协方差矩阵
3.5 增加 ereturn 中的暂元
使用addest,textname(string) textstring(string)
增加 ereturn 中的暂元
reg wage i.race#collgrad
addest,textname("baserace") textstring("1-white")
ereturn list
如下图所示,ereturn 中新增了暂元baserace
. ereturn list
scalars:
e(N) = 2246
e(df_m) = 5
e(df_r) = 2240
e(F) = 40.22007771936102
e(r2) = .0823810399343723
e(rmse) = 5.519505061068133
e(mss) = 6126.510492139263
e(rss) = 68241.45690691109
e(r2_a) = .0803327833270829
e(ll) = -7020.747213722369
e(ll_0) = -7117.294949670645
e(rank) = 6
macros:
e(baserace) : "1-white"
4. 小结
addest
命令主要作用是在估计结果 ereturn
中增加标量、矩阵、暂元等功能( eret2
命令同样可以实现,代码精简,使用方便), 方便用户可以将估计和检验结果存储在同一个结果集中,但有些选项,如替换相关系数 、扩展 b、v 矩阵,小编认为实用性不强。读者可以根据自身需求,使用此命令。
5. Stata 实操范例
在本部分,我们以「nlsw88.dta」数据为例,来演示说明 addest
命令的用法。具体来看,我们进行了两组回归:第一组是根据种族类别进行分组回归,以检验工作经历是否在两组中存在显著差别,并将系数差异检验结果添加到最后回归报告中;第二组是在第一组回归基础上,增加行业固定效应,并在报告中 “Industry = Yes” 的形式汇报。
具体 Stata 代码和结果如下:
sysuse nlsw88.dta, clear
global xx "ttl_exp married south hours tenure age"
*分组差异检验
reg wage $xx if race==1
est store m1
reg wage $xx if race==2
est store m2
suest m1 m2
test [m1_mean]ttl_exp = [m2_mean]ttl_exp //系数差异检验
local chi2 = `r(chi2)'
local chi2_p = `r(p)'
reg wage $xx if race==1
addest, name("chi2") value(`chi2') //将系数差异检验结果添加到回归结果中
addest, name("chi2_p") value(`chi2_p')
est store m3
reg wage $xx if race==2
addest, name("chi2") value(`chi2')
addest, name("chi2_p") value(`chi2_p')
est store m4
*控制行业固定效应
reg wage $xx i.industry if race==1
addest, textn("Industry") texts("Yes") //textname,简称 textn;textstring,简称 texts
est store m5
reg wage $xx i.industry if race==2
addest, textn("Industry") texts("Yes")
est store m6
. esttab m3 m4 m5 m6, b(%6.3f) nogap compress ///
star(* 0.1 ** 0.05 *** 0.01) drop(*.industry) ///
ar2 scalar(N Industry chi2 chi2_p)
--------------------------------------------------------------
(1) (2) (3) (4)
wage wage wage wage
--------------------------------------------------------------
ttl_exp 0.291*** 0.288*** 0.251*** 0.271***
(7.62) (5.18) (6.49) (4.82)
married -0.641** 0.176 -0.737** 0.082
(-2.03) (0.44) (-2.31) (0.21)
south -0.893*** -2.307*** -0.814*** -2.038***
(-2.97) (-5.58) (-2.72) (-4.92)
hours 0.056*** 0.045* 0.051*** 0.036
(4.25) (1.72) (3.81) (1.35)
tenure 0.031 0.037 0.025 -0.003
(0.98) (0.87) (0.76) (-0.08)
age -0.084* -0.254*** -0.073 -0.216***
(-1.82) (-3.64) (-1.58) (-3.12)
_cons 6.284*** 12.478*** 5.576** 9.490**
(3.27) (4.34) (2.22) (2.53)
--------------------------------------------------------------
N 1625 576 1615 572
adj. R-sq 0.091 0.134 0.112 0.166
Industry Yes Yes
chi2 0.002 0.002
chi2_p 0.961 0.961
--------------------------------------------------------------
t statistics in parentheses
* p<0.1, ** p<0.05, *** p<0.01
6. 相关推文
Note:产生如下推文列表的命令为:
lianxh esttab 行业虚拟变量 suest 暂元 outreg2 四表 结果输出
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata绘图 Stata绘图:用暂元统一改变图形中的字号 专题:Stata程序 Stata程序:暂元-(local)-和全局暂元-(global) 专题:结果输出 Stata结果输出:Excel结果表变身LaTeX表格 Stata结果输出:outreg2命令详解 Stata结果输出:pwcorr_a输出相关系数矩阵 Stata结果输出:tabout-用-Stata-输出高品质表格 Stata结果输出:两阶段回归的结果输出 Stata结果输出:用esttab生成带组别名称的LaTeX回归表格 Stata:毕业论文大礼包 A——实证结果输出命令大比拼 Stata:毕业论文大礼包 C——新版 esttab 君生我未生!Stata---论文四表一键出 Stata:毕业论文大礼包 B——神速实证结果输出之搜狗短语 Stata:回归结果中不报告行业虚拟变量的系数 asdoc:Stata 结果输出又一利器! 专题:面板数据 Stata面板:suest支持面板数据的似无相关检验 专题:内生性-因果推断 suest:跨模型比较与广义豪斯曼检验
课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。