【统计学】stata 梳理输出命令逻辑关系 asdoc outreg2 logout esttab区别 优劣势

一、概述

初学stata的时候对于stata输出的逻辑颇为疑惑, 因为学python和cpp的时候输出函数就是那几个非常的简单,而statac的asdoc、outreg2、logout 和 esttab 这些常见的命令在跳出来的时候往往分不清楚,也不知道为什么代码里要这么用。
本文就是梳理常见的一些输出命令,在平时学习尤其是计量经济学这样的学科时能够降低理解难度。

本文主要梳理的命令包括但不限于 asdoc、outreg2、logout 和 esttab ,主要介绍其用法。以上命令都可以通过 ssc install 命令名称, replace 安装更新

二、结果输出的各种命令

一般来说,outreg2 只支持描述性统计输出和回归结果输出,logout 支持分组 T 均值检验和相关系数矩阵的输出,tabstat一般用于输出基本统计量,asdoc支持描述性统计输出,局限性较大;esttab在回归结果、描述性统计、分组T均值检验和相关系数矩阵的输出都较为实用,运用范围比较广。

总的来说就是 初学stata可以多关注关注logout和asdoc,注重研究的可以多学习esttab和outreg2。
脑图

三、统计量

  • 计算(想要得到多个数据的基本统计量)
    tabstat
    在这里插入图片描述
    从初学角度,stats是statistics的缩写,代表设置输出格式
  • statistics():可以输入的全部统计量有:N mean sd min median max p1 p5 p10 p25 p75 p90 p95 p99。若为空,则默认输入N mean sd min median max。
  • 上述命令的意思是输出这几个维度的mean sd min p50 和max几个统计量 数据格式为f(%6.2f)
    在这里插入图片描述
  1. 输出

logout将上述基本统计量表格输出至Word/EXCEL

*输出至word
logout ,save(table) word replace:  ///
           tabstat  price wei len mpg rep78, ///
           stats(mean sd min p50 max) c(s) f(%6.2f)
*输出至excel
logout ,save(table) excel replace:  ///
           tabstat  price wei len mpg rep78, ///
           stats(mean sd min p50 max) c(s) f(%6.2f)

asdoc是另外一个很有力的输出方法,sum代表summarize,像summarize、correlate、tabstat、cross-tabs、regressions、t-tests等命令的结果输出都可以通过这种方法,只要在前面加一个"asdoc“就可以了
asdoc也可以将多个回归结果融合成一个表格,不断滚雪球;也可以按照分类进行分组描述性统计
想了解更多的asdoc命令或者有看不懂的地方可以戳这个链接asdoc:Stata 结果输出又一利器!

local varlist "wage age race married grade collgrad south union occupation"
///这里你们要自己试验的话就把varlist里字符替换成自己的变量好了
asdoc sum `varlist', save(Myfile.rtf) replace ///
	stat(N mean sd min p50 max)  dec(3) ///
	title(asdoc_Table: Descriptive statistics)

esttab能分别设置每个统计量的小数点位数,通过在相应的统计量后面加(fmt(n))来实现控制n位小数位数

local varlist "wage age race married grade collgrad south union occupation"
estpost summarize `varlist', detail
esttab using Myfile.rtf, ///
	cells("count mean(fmt(2)) sd(fmt(2)) min(fmt(4)) p50(fmt(4)) max(fmt(4))") ///
	noobs compress replace title(esttab_Table: Descriptive statistics)

如果变量名字想用中文的可以试试sum2docx,它也可以像esttab一样控制小数位数,但是缺点在于没办法在命令界面看到结果。

local varlist "wage age race married grade collgrad south union occupation"
sum2docx `varlist' using Myfile.docx,replace ///
	stats(N mean(%9.2f) sd(%9.3f) min(%9.2f) median(%9.2f) max(%9.2f)) ///
	title(sum2docx_Table: Descriptive statistics)

以上命令在自己运行时将varlist局部变量""中的变量替换成自己的变量即可。
例如:

local varlist " prate mrate totpart totelg"
estpost summarize `varlist', detail
esttab using Myfile.rtf, ///
	cells("count mean(fmt(2)) sd(fmt(2))") ///
	noobs compress replace title(esttab_Table: My Descriptive statistics)

四、相关系数矩阵

asdoc命令比较简单,但是局限性很多,没办法自定义星号和p值输出,适合初学使用

local varlist "wage age race married grade collgrad"
asdoc cor `varlist', save(Myfile.doc) replace nonum dec(3) ///
	title(asdoc_Table: correlation coefficient matrix)

corr2docx支持中文,而其他命令不行。

local varlist "wage age race married grade collgrad"
corr2docx `varlist' using Myfile.docx, replace spearman(ignore) pearson(pw) ///
	star title(corr2docx_Table: correlation coefficient matrix)

在输出时logout会出现串行问题,也没办法输出标题,所以比较麻烦,不推荐使用

local varlist "wage age race married grade collgrad"
logout, save(Myfile) word replace : pwcorr_a `varlist', ///
	star1(0.01) star5(0.05) star10(0.1)

可以自定义星号的方法:pwcorr_aesttab(esttab的使用和引申可以具体看一下这篇文章,解释了一下命令的理解方法和逻辑)

pwcorr_a price weight mpg displ, star1(0.01) star5(0.05) star10(0.1)
sysuse auto, clearlogout, save(数量经济学) word replace: ///        
pwcorr_a price wei len mpg displ, star1(0.01) star5(0.05) star10(0.1)
///
///esttab
///
local varlist "wage age race married grade collgrad"
estpost correlate `varlist', matrix
esttab using Myfile.rtf, ///
	unstack not noobs compress nogaps replace star(* 0.1 ** 0.05 *** 0.01) ///
	b(%8.3f) p(%8.3f) title(esttab_Table: correlation coefficient matrix)

五、回归结果

最符合一般投稿、研究、各种文献的图表格式的命令esttab,做出的图是这样的(注意统计量和变量在表中的位置
在这里插入图片描述
命令如下:

reg wage age married occupation
est store r1
reg wage age married collgrad occupation
est store r2
reg wage age married collgrad occupation race_num*
est store r3
esttab r1 r2 r3 using Myfile.rtf, ///
	replace star( * 0.10 ** 0.05 *** 0.01 ) nogaps compress ///
	order(married) drop(occupation) b(%20.3f) se(%7.2f)  
	///按married排序,同时舍弃occupation
	r2(%9.3f) ar2 aic bic obslast scalars(F)  ///
	indicate("race=race_num*") mtitles("OLS -1" "OLS-2" "OLS-3") ///
	title(esttab_Table: Regression result) 

asdoc命令输出的图片不如前者正规,且不能对变量排序,可理解为”滚雪球多次"

asdoc reg wage age married occupation, save(Myfile.doc) nest replace ///
	cnames(OLS-1) rep(se) add(race, no)
asdoc reg wage age married collgrad occupation, save(Myfile.doc) nest append ///
	cnames(OLS-2) add(race, no)
asdoc reg wage age married collgrad occupation race_num*, save(Myfile.doc) nest append ///
	add(race, yes) cnames(OLS-3) dec(3) drop(occupation race_num*) ///
	stat(r2_a, F, rmse, rss) title(asdoc_Table: regression result)

但是如果研究仅仅需要输出R^2,不需要F统计量不需要在第三次回归后增添统计量,可以使用asdoc,比较方便,结果如图。(详细请看asdoc:Stata 结果输出又一利器!

在这里插入图片描述

参考:

Stata:毕业论文大礼包 A——实证结果输出命令大比拼
Stata结果输出:logout、esttab、logout2

<think>好的,用户询问的是如何在Stata中使用esttab命令生成回归表格或导出统计结果。首先,我需要回忆一下esttab的基本功能和常见用法。根据提供的引用资料,用户可能希望了解如何自定义输出的统计量,比如替换点估计和标准误,以及如何导出结果到不同格式如Excel或Word。 首先,我应该从基础用法开始。比如,用户可能需要进行简单的回归后使用esttab输出结果。根据引用[3],esttab是推荐的工具之一,所以需要展示一个基本的回归示例,保存估计结果并用esttab生成表格。这里要提到保存模型估计结果使用estimates store,然后使用esttab导出,如引用[2]提到的。 接下来是自定义统计量部分。引用[1]指出,main()和aux()选项可以替换点估计和t值/标准误。需要举一个例子,比如在main中显示系数,aux中显示p值,这样用户能理解如何调整输出内容。 然后是关于导出格式的需求。用户可能需要将结果保存为Excel、LaTeX或Word。引用[3]提到了reg2docx,但这里主要讲esttab,所以应该展示使用选项如csv、tex等来指定输出格式。例如,使用using配合文件扩展名,以及replace选项覆盖旧文件。 另外,引用[4]中的示例展示了生成概率转移矩阵,虽然用户的问题是关于回归表格,但可能也需要提到esttab的其他应用,比如表格的排版和标签设置。比如调整列名、添加标题,或者处理行标签,这些细节能帮助用户更好地格式化输出结果。 此外,引用[5]提到了因子变量在回归中的应用,虽然不直接相关,但可能在示例中加入虚拟变量,展示esttab如何处理这些变量,比如显示基准组或不同类别的系数。 还需要注意用户可能遇到的常见问题,比如如何控制小数位数,如何添加统计量如R平方和观测数。这些在示例中通过scalars选项来实现,比如r2和N。同时,可能需要提到如何调整格式,如fmt()来设置小数位数。 最后,确保回答结构清晰,分点说明,并附上示例代码,让用户能逐步跟随操作。同时,生成的相关问题需要覆盖进阶用法、常见问题处理以及与其他命令的比较,帮助用户进一步探索。</think>### Stata esttab 命令使用方法详解 esttabStata 中用于生成回归结果表格的第三方命令(需安装`estout`包),支持灵活定制输出内容与格式。以下是核心用法及示例: --- #### 一、基础用法 1. **保存回归结果** 先运行回归模型并使用`estimates store`保存结果: ```stata sysuse auto, clear reg price mpg weight estimates store Model1 // 保存为Model1 reg price mpg weight foreign estimates store Model2 // 保存为Model2 ``` 2. **生成基础表格** 使用`esttab`输出多个模型的对比表格: ```stata esttab Model1 Model2, se stats(r2 N) ``` - `se`:显示标准误(默认显示系数和t值,可用`p`显示p值) - `stats(r2 N)`:添加R&sup2;和样本量统计行[^2] --- #### 二、自定义统计量 1. **替换点估计与统计值** 通过`main()`和`aux()`选项分别控制主列(如系数)和辅助列(如标准误): ```stata esttab Model1 Model2, main(mean) aux(sd) // 主列显示均值,辅助列显示标准差[^1] ``` 2. **添加自定义统计量** 使用`scalars()`添加似然值、F统计量等: ```stata esttab Model1 Model2, scalars(ll_0 ll) // 显示零模型对数似然值和当前模型对数似然值 ``` --- #### 三、格式控制与导出 1. **设置小数位数** 用`b()`和`se()`指定系数和标准误的小数位数,`fmt()`全局控制: ```stata esttab Model1 Model2, b(3) se(2) fmt(4) // 系数3位小数,标准误2位,其他统计量4位 ``` 2. **导出到文件** 使用`using`保存为CSV、TeX或Word格式: ```stata esttab Model1 Model2 using "result.csv", replace // 导出为CSV esttab Model1 Model2 using "result.rtf", replace // 导出为Word[^3] ``` --- #### 四、进阶示例 **生成带有虚拟变量的表格** 当模型包含因子变量时,esttab 会自动处理虚拟变量标签: ```stata webuse nlswork, clear xtreg ln_wage i.race age, re esttab, label // 显示因子变量标签(如race类别)[^5] ``` **输出效果** ``` ----------------------------- ln_wage ----------------------- black -1.238*** (0.123) other 0.468 (0.456) age 0.032** (0.010) ----------------------- R&sup2; 0.752 N 1000 ----------------------------- ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值