如何将多个分析的 Stata 输出收集/聚合到文件中?

How to collect / aggregate Stata output from multiple analyses to a file?

我有兴趣从分析中聚合/收集值,以便将它们输出到文件中。这背后的动机是尽可能多地保持分析过程 "hands off" 以避免输入错误并更有效地产生结果(即,不要在纯文本文件中筛选一堆值然后重新输入那些变成一个文件......)。

作为一个例子,我想运行三个层次回归,并将SEX的边际预测值保存在结果变量TOTALSCORE上。

我知道我可以启动一个日志文件并保存所有输出,但我想避免手动重新输入。

我确实找到了关于类似主题的讨论 ,但不知道如何让它发挥作用...


use http://www.stata-press.com/data/r13/depression.dta , replace



foreach v of varlist * {
rename `v' `=lower("`v'")'
}
****



anova totalscore i.sex
ereturn list , all
return list , all
estat esize 
return list, all
margins i.sex, at( (mean) _c (asobserved) _f)
return list , all
matrix list r(b)


anova totalscore i.sex i.race
ereturn list , all
estat esize
margins i.sex,  at( (mean) _c (asobserved) _f)
matrix list r(b)



anova totalscore i.sex i.race c.age
ereturn list , all
estat esize
margins i.sex,  at( (mean) _c (asobserved) _f)
matrix list r(b)


/*
would ultimately like to produce something like 
this and save to a file :  


Model       0.sex       1.sex           est_name
model 1     57.237      57.840          anova totalscore i.sex
model 2     57.243      57.825          anova totalscore i.sex  i.race
model 3     57.228      57.864          anova totalscore i.sex  i.race  c.age



*/

您可以使用用户编写的模块ESTOUT (运行 ssc describe estout)。

一个例子:

clear

use http://www.stata-press.com/data/r13/depression.dta
rename _all, lower

local mods `" "i.sex" "i.sex i.race" "i.sex i.race c.age" "'

quietly foreach mod of local mods {
    anova totalscore `mod'
    margins i.sex, at( (mean) _c (asobserved) _f) post
    eststo
}   

esttab, noobs not nostar mtitles nonumbers title(Marginal Effects)
eststo clear

(注意 margins 命令的 post 选项。)

该命令允许将结果写入文件并以多种方式自定义输出,但需要彻底阅读

这里给出另一个答案:http://www.statalist.org/forums/forum/general-stata-discussion/general/1131792-how-to-collect-aggregate-stata-output-from-multiple-analyses-to-a-file