作者:王美庭
Email: wangmeiting92@gmail.com
问题回答
由于微信公众号后台有 48 小时限制,即超过 48 小时之后无法再回复网友消息(蛋疼的设计),所以在这里回复一下网友 Xiaolin 的问题。
问:您好,提问的问题已经链接,把 reghdfe 的固定效应放在 r()中就可以!谢谢。链接为:http://scorreia.com/software/reghdfe/faq.html#how-can-i-combine-reghdfe-with-esttab-or-estout
答:你好,这个命令我没有深刻用过,但我阅读了 help 文件操作了一下后,发现这个命令有些问题(依据你给出的链接)。
- indicate()指示错误,比如没有控制 foreign,它也给出了 YES。
- 我不知道为何使用该命令在存储估计结果时,最后都设成一样的 model2(如果我按顺序设定 model1-model3,就会多输出一列),而且只有这样之后 esttab 才能正确输出(这明显是不符合常理,且有 bug 的)。
- 假设其针对固定效应能正确输出 indicate,其只是利用其一个“隐藏”命令 estfe 传递了一个 local。所以我也无法将 reghdfe 的固定效应放在 r()中,至少短时间内无法实现。除非我得花大量时间剖析其程序结构,找到其计算结果,然后进行返回值设定。
其实如果你真的需要固定效应的具体估计值,那你采用普通的命令就好了(比如说采用因子变量,设定基准值;或利用 tab 命令)。同时这都与 esttab 相兼容的。
ps. 我的 stata 版本为 16.0,安装的是最新版本的 reghdfe
目录
- 一、引言
- 二、命令的安装
- 三、语法与选项
- 四、实例
- 五、输出效果展示
一、引言
在处理数据时,需要将table
命令的结果导出,但始终无法找到对应的选项,于是便自己动手写了这个命令。不过这个命令是基于tabstat
和esttab
编写的,所以与原生的命令有些许不同,不过大同小异。
本文介绍的table2
命令,可以将分区描述性统计结果输出至 Stata 界面、Word 的 .rtf 文件和 LaTeX 的.tex 文件。有人可能会说,不是已经有了wmtsum
了吗?不是的,wmtsum
不能处理分区的情况。
该命令,和已经推出wmtsum
、wmttest
、wmtcorr
、wmtreg
、wmtmat
命令,都可以通过append
选项成为一个整体,将输出结果集中输出至一个 Word 或 LaTeX 文件中。
更多阅读:
- Stata 新命令:wmtsum——描述性统计表格的输出
- Stata 新命令:wmttest——分组 T 均值检验表格的输出
- Stata 新命令:wmtcorr——相关系数矩阵的输出
- Stata 新命令:wmtreg——回归结果的输出
- Stata 新命令:wmtmat——矩阵的输出
二、命令的安装
table2
命令以及本人其他命令的代码都托管于 GitHub 上,读者可随时下载安装这些命令。
table2
由于用到了自己编写的wmtstr
、space_rm
、mat_cagn
程序,所以有以下可选安装方式。
(1)如果你没有wmtstr
、space_rm
、mat_cagn
程序,则你需要使用github
外部命令进行安装(github
命令本身可以通过net install github, from("https://haghish.github.io/github/")
进行安装):
github install Meiting-Wang/table2
以上语句会自动额外帮助你安装最新版的
wmtstr
、space_rm
、mat_cagn
程序。
(2)如果你已经有了wmtstr
、space_rm
、mat_cagn
程序,则你可以通过系统自带的net
命令进行安装以节约安装时间:
net install table2, from("https://raw.githubusercontent.com/Meiting-Wang/table2/master")
三、语法与选项
命令语法:
table2 varlist [if] [in] [weight] [using filename] [, options]
varlist
: 可输入一个或两个类别变量weight
: 可以选择 fweight 或 aweight,默认为空。using
: 可以将结果输出至 Word( .rtf 文件)和 LaTeX( .tex 文件)
选项(options):
- 一般选项
contents(string)
:填写类似n mean(price) sd(price) mean(mpg)
的语句,括号内为变量,括号外为统计量。所有可以输入的统计量有:n mean sd min max range variance sum p1 p5 p10 p25 p50 p75 p90 p95 p99 cv skewness kurtosis
。这些统计量的含义可以在help tabstat
中查看。format(fmtlist)
:设定contents
中对应统计量的数值格式row
:额外报告行总计column
:额外报告列总计listwise
:在计算统计量之前会先剔除所涉及变量中包含缺漏值的观测值title(string)
:设置表格标题replace
: 替换已存在的文件append
: 将输出内容附加在已存在的文件中eqlabels(strings)
: 自定义行方程名varlabels(matchlist)
: 自定义行变量名collabels(strings)
: 自定义列名varwidth(number)
: 自定义表格第一列的宽度modelwidth(numlist)
: 自定义表格第二列及之后列的宽度compress
: 压缩表格的行空白空间,以使表格更紧凑
- LaTeX 专有选项
alignment(string)
:设置 LaTeX 表格的列对齐格式,可输入math
或dot
,math
设置列格式为居中对齐的数学格式(自动添加宏包booktabs
和array
),dot
表示小数点对齐的数学格式(自动添加宏包booktabs
、array
和dcolumn
)。默认为math
page(string)
:可添加用户额外需要的宏包width(string)
:设置 LaTeX 中表格的宽度,如width(\textwidth)
表示设置表格宽度为版心宽度
- 以上其中的一些选项可以缩写,详情可以在安装完命令后
help table2
四、实例
*共同部分
sysuse auto.dta, clear
table2 foreign, c(n) //分组计数
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) //分组计算统计量
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row //额外报告行方向总体上计算的统计量
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row list //计算统计量时不会考虑包含缺漏值的观测值
table2 foreign rep78, c(n) //分组计数
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) //分组计算统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row //额外报告行方向总体上计算的统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col //额外报告列方向总体上计算的统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col list //计算统计量时不会考虑包含缺漏值的观测值
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col //设置数值格式
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col eql(domestic foreign Total) //自定义报告的行方程名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col varl(mean(price) price_m sd(price) price_sd mean(trunk) trunk_m sd(trunk) trunk_sd) //自定义行名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col coll("very bad" bad general good "very good" Total) //自定义列名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress //将表格压缩展示
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col varw(11) //自定义第一列的宽度(空格数)
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress varw(12) modelw(10) //将第二列及之后列的宽度设定为10个空格
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress varw(12) modelw(10 15 20 20 20 20) //为第二列及之后列分别自定义宽度
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col ti(This is a title) //自定义表格标题
*Word部分
table2 foreign rep78 using Myfile.rtf, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) //将结果输出至Word
*LaTeX部分
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) //将结果输出至LaTeX
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(math) //设置列格式为数学格式(也为默认列格式)
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(dot) //设置列格式为小数点对齐
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) page(amsmath) //引入额外的宏包(无论怎么样都会引入array和booktabs宏包)
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) width(\textwidth) //设置表格宽度为版心宽度
*该命令结果可以用系统自带的 table 命令进行验证
table foreign, c(freq)
table foreign, c(freq mean price sd price mean trunk sd trunk)
table foreign, c(freq mean price sd price mean trunk sd trunk) row
table foreign rep78, c(freq)
table foreign rep78, c(freq mean price sd price mean trunk sd trunk)
table foreign rep78, c(freq mean price sd price mean trunk sd trunk) row
table foreign rep78, c(freq mean price sd price mean trunk sd trunk) row col
以上所有与
table2
相关的实例都可以在help table2
中直接运行。
五、输出效果展示
- Stata
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row
-----------------------------------------------------------------------------
n mean(price) sd(price) mean(trunk) sd(trunk)
-----------------------------------------------------------------------------
0 52 6072.423 3097.104 14.75 4.306288
1 22 6384.682 2621.915 11.40909 3.216906
Total 74 6165.257 2949.496 13.75676 4.277404
-----------------------------------------------------------------------------
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col
------------------------------------------------------------------------------------------
1 2 3 4 5 Total
------------------------------------------------------------------------------------------
0
n 2 8 27 9 2 48
mean(price) 4564.5 5967.625 6607.074 5881.556 4204.5 6179.25
sd(price) 522.5519 3579.357 3661.267 1592.019 311.8341 3188.969
mean(trunk) 8.5 14.625 15.59259 16.66667 9.5 15.08333
sd(trunk) 2.12132 4.983903 3.532914 4.66369 2.12132 4.281744
------------------------------------------------------------------------------------------
1
n 0 0 3 9 9 21
mean(price) . . 4828.667 6261.444 6292.667 6070.143
sd(price) . . 1285.613 1896.092 2765.629 2220.984
mean(trunk) . . 12.33333 10.33333 11.88889 11.28571
sd(trunk) . . 3.21455 3.840573 2.666667 3.242574
------------------------------------------------------------------------------------------
Total
n 2 8 30 18 11 69
mean(price) 4564.5 5967.625 6429.233 6071.5 5913 6146.043
sd(price) 522.5519 3579.357 3525.14 1709.608 2615.763 2912.44
mean(trunk) 8.5 14.625 15.26667 13.5 11.45455 13.92754
sd(trunk) 2.12132 4.983903 3.590537 5.272013 2.65946 4.343077
------------------------------------------------------------------------------------------
- Word
table2 foreign rep78 using Myfile.rtf, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title)
- LaTeX
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(math)
% 16 Aug 2020 22:17:09
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{table}[htbp]\centering
\caption{This is a title}
\begin{tabular}{l*{6}{>{$}c\toprule
&\multicolumn{1}{c}{1}&\multicolumn{1}{c}{2}&\multicolumn{1}{c}{3}&\multicolumn{1}{c}{4}&\multicolumn{1}{c}{5}&\multicolumn{1}{c}{Total}\\
\midrule
0 & & & & & & \\
n & 2& 8& 27& 9& 2& 48\\
mean(price) & 4564.50& 5967.63& 6607.07& 5881.56& 4204.50& 6179.25\\
sd(price) & 522.55& 3579.36& 3661.27& 1592.02& 311.83& 3188.97\\
mean(trunk) & 8.50& 14.63& 15.59& 16.67& 9.50& 15.08\\
sd(trunk) & 2.12& 4.98& 3.53& 4.66& 2.12& 4.28\\
\midrule
1 & & & & & & \\
n & 0& 0& 3& 9& 9& 21\\
mean(price) & .& .& 4828.67& 6261.44& 6292.67& 6070.14\\
sd(price) & .& .& 1285.61& 1896.09& 2765.63& 2220.98\\
mean(trunk) & .& .& 12.33& 10.33& 11.89& 11.29\\
sd(trunk) & .& .& 3.21& 3.84& 2.67& 3.24\\
\midrule
Total & & & & & & \\
n & 2& 8& 30& 18& 11& 69\\
mean(price) & 4564.50& 5967.63& 6429.23& 6071.50& 5913.00& 6146.04\\
sd(price) & 522.55& 3579.36& 3525.14& 1709.61& 2615.76& 2912.44\\
mean(trunk) & 8.50& 14.63& 15.27& 13.50& 11.45& 13.93\\
sd(trunk) & 2.12& 4.98& 3.59& 5.27& 2.66& 4.34\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
在将结果输出至 Word 或 LaTeX 时,Stata 界面上也会呈现对应的结果,以方便查看。