查看原文
其他

Stata结果输出:addest自己定制输出的统计量

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 基于机器学习的因果推断方法

丁晨:厦门大学, 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 中功能强大的 marginsmarginsplot 命令,及非常通用的 estimates table 命令。包括 xml_tableoutreg 在内的很多程序,都是将多个模型的估计结果,用一种相似的 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:这个选项只能配合 bvectorvceatrix 这组选项使用,它让 Stata 使用 bvector 中的 names 作为 bv 估计矩阵的标签。这些标签接下来会被用在 ereturn displayestimates 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 空间中的名称,那个名称将被覆盖;
  • postrepost:当用户更改或更新 ereturn 存储空间中的估计结果时,addest 命令默认设定为 repost 选项。当用户更改或更新涉及到ereturn存储空间的其他内容时,addest命令默认设定为post选项。同时用户也可以通过直接输入postrepost指令来覆盖这些默认选项;
  • findomitted:通过 ereturn postereturn repost 来指定。将省略运算符 o. 添加到列表中 e(V) 的零值对角线元素对应的变量中,此选项的设定会同样传递给 ereturn repost
  • buildfvinfo:通过 ereturn postereturn repost 来指定,并计算用于测定可估计函数的 H 矩阵,该矩阵将会用于一些 post-estimation 命令,例如:contrastmarginspwcompare。此选项的设定会同样传递给 ereturn repost
  • *(other options):任何其他选项的设定都会被传递到 ereturn postereturn 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 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存