查看原文
其他

用reg2docx报告你的实证结果吧!

薛原 Stata and Python数据分析 2022-03-15

诸君安!在上一篇推文中,我们介绍了爬虫俱乐部发布的命令——sum2docx,用这个命令可以把描述性统计结果输出到docx文件中。如果大家已经安装了这个命令,并且查看了help文件,或许会发现这样一个彩蛋。


        在help文件中我们提到了可以将sum2docx生成的文件与putdocx和reg2docx生成的文件合并在一起,putdocx是Stata15中新推出的创建并修改docx文件的命令,那么reg2docx究竟是干嘛的呢?现在我们带着大家揭开reg2docx的神秘面纱。

reg2docx是爬虫俱乐部最新推出的命令,使用这个命令可以将回归结果保存到docx文件中,用法类似于esttab。我们现在用一个简单的例子来介绍一下reg2docx的用法。

! taskkill /F /IM WINWORD.EXE /T //关闭已经打开的word文档

cap mkdir E:/实证结果输出

cd E:/实证结果输出

putdocx begin //声明开始一个docx文档的创建

putdocx paragraph, halign(center) //开始一个段落,输入文本内容,居中显示

putdocx text ("论文抄袭现象研究:CNKI的证据"), linebreak font("华文楷 体",40,red) bold  //输入论文题目,字体为华文楷体,字号为40,颜色为红色

putdocx text ("张三"), linebreak font("华文楷体",20,green) bold

putdocx text ("帝都大学xx学院"), linebreak font("华文楷体",20,purple) bold

putdocx text ("李四"), linebreak font("华文楷体",20,green) bold

putdocx text ("爬虫大学xx学院"), linebreak font("华文楷体",20,purple) bold

putdocx text ("王五"), linebreak font("华文楷体",20,green) bold

putdocx text ("魔都大学xx学院"), linebreak font("华文楷体",20,purple) bold //输入作者信息

forvalues i = 1/13 {

       putdocx text (""), linebreak

                              } //输入十三个空行

putdocx paragraph, halign(left)

putdocx text ("我们感谢匿名审稿专家的宝贵意见,感谢国家自然科学基金(项目号:xxxxxxxx)以及魔都大学研究生创新项目(项目号:xxxxxxxxxxx)对本研究的支持,当然文责自负。通讯作者:张三,E-mail:"), font("华文楷体",10) //添加致谢

putdocx text ("zhang3@ddu.edu.cn"), font("arial", 10, blue) underline

putdocx pagebreak //切换到下一页

putdocx save d:/mytable.docx, replace //将以上内容保存在mytable.docx文档中

通过以上的程序,我们就把封面做好了。接下来需要做的就是报告描述性统计以及回归结果。这里我们用到的命令就是爬虫俱乐部最新发布的sum2docx以及reg2docx。

在做描述性统计和回归之间,我们需要通过生成随机数来模拟一个数据。

clear

set obs 1000

set seed 100000000 //设置种子数,保证我们每次运行程序得到的结果相同

gen z = uniform() //将z作为x1的工具变量

gen x1 = 0.5+0.7*z+rnormal()*2

gen x2 = uniform()

gen x3 = uniform()

gen x4 = uniform()

gen x5 = uniform()

gen x6 = uniform()

gen ind = mod(_n,10)

tab ind, gen(ind)

gen y = 0.4+.5*x1+.6*x2+.7*x3+.8*x4+rnormal()*3 //生成y作为被解释变量

replace y = y-.7*x5-.8*x6

forvalue i = 1(1)10 {

       replace y = y+sqrt(`i')*ind`i'

                                 }

生成数据后,使用sum2docx将描述性统计结果输出到mytable.docx文件中。输出的内容包括样本量、均值、标准差、最小值、中位数、最大值,不设置输出的格式,默认情况下的格式为%9.3f。我们定义这个表头为:表1: Summary Statistics。

sum2docx y x1-x6 using d:/mytable.docx, append obs mean sd min median max title("表1: Summary Statistics")

为了使描述性统计和回归结果分别在不同的页面上,这里我们需要使用putdocx命令给mytable.docx文件加上一页。程序如下:

putdocx begin

putdocx pagebreak

putdocx save d:/mytable.docx, append

接下来我们做四个回归,并将结果放在一个表中,输出到mytable.docx文件里。

reg y x1 x5 x6 ind2-ind10

est store m1

reg y x1 x2 x5 x6

est store m2

reg y x1 x2 x3 x5 x6 ind2-ind10

est store m3

reg y x1 x2 x3 x4 x5 x6

est store m4

reg2docx m1 m2 m3 m4 using d:/mytable.docx, append indicate("ind=ind*") drop(x2 x3) r2(%9.3f) ar2(%9.2f) order(x1 x6 x5) b(%9.3f) t(%7.2f) title(表2: OLS regression results) mtitles("模型 1" "模型 2" "" "模型 4")

我们输出的内容包括系数和t值,也可以通过pse等选项选择输出p值和标准误;如果我们没有定义star()选项的话,默认情况下******分别对应了0.10.050.01的显著性水平;我们认为x2和x3两个变量不重要,因此通过drop()选项将这两个变量从表格中删除了;使用order()选项,我们对变量报告的顺序进行了调整;通过indicate()选项,将符合ind*格式的变量从报告结果中删除,改为输出是否控制ind;在结果中我们还报告了R方调整R方;此外,使用title()mtitles()选项,我们还定义了表头和每一列的名称。

最后,我们再输出一个工具变量回归的结果。在输出前,我们还是要使用putdocx命令开始新的一页。

putdocx begin

putdocx pagebreak

putdocx save d:/mytable.docx, append

我们将z作为x1的工具变量,将两阶段的结果输出到mytable.docx中。

reg x1 z x2 x3 x4 x5 x6 ind2-ind10

est store m5

ivregress 2sls y (x1=z) x2 x3 x4 x5 x6 ind2-ind10

est store m6

reg2docx m5 m6 using d:/mytable.docx, append indicate("ind=ind*") drop(x2 x3) r2(%9.3f) ar2(%9.2f) order(x1 z x6 x5) b(%9.3f) t(%7.2f) title(表3: IV results) mtitles("First Stage" "2SLS")

使用相同的方法,我们就可以把回归结果都报告出来了。如果大家对这个命令有什么建议,欢迎留言交流,我们也会根据大家的意见对命令进行更新。同时,爬虫俱乐部还在等待技能冷却,马上还有更多大招放出来。

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:高金凤

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部 




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

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