Statistics 导出结果

Statistics 导出结果,statistics,stata,Statistics,Stata,我相信,任何使用Stata进行出版物或报告的人都会遇到以下问题: 如何方便地将输出导出到可以由脚本语言或Excel解析的内容 有几个ado文件可以为特定命令执行此操作。例如: findit选项卡 findit outreg2 但是导出表命令的输出怎么样?或者是方差分析的结果 我很想了解Stata用户如何针对特定命令或一般命令解决此问题。已经有一段时间了,但我相信您可以发出日志命令来捕获输出。 使用c:\data\anova\u analysis.log记录,文本 [命令] 日志关闭 我发现

我相信,任何使用Stata进行出版物或报告的人都会遇到以下问题:

如何方便地将输出导出到可以由脚本语言或Excel解析的内容

有几个
ado
文件可以为特定命令执行此操作。例如:

  • findit选项卡
  • findit outreg2
但是导出
命令的输出怎么样?或者是
方差分析的结果


我很想了解Stata用户如何针对特定命令或一般命令解决此问题。

已经有一段时间了,但我相信您可以发出日志命令来捕获输出。


使用c:\data\anova\u analysis.log记录,文本
[命令]
日志关闭

我发现是最成熟的,并且有很好的文档。

在尝试了一段时间后,我找到了一个适合我的解决方案

有多种ADO处理导出特定函数。我使用了
outreg2
进行回归,使用
tabout
进行汇总统计

对于更简单的命令,很容易编写自己的程序以标准格式将结果自动保存为纯文本。这里是我写的一些……请注意,这两种方法都显示结果(保存到日志文件)并将其导出到文本文件中–如果您只想保存到文本,您可以去掉
di
qui
sum
选项卡
,等等。命令:

cap program drop sumout
program define sumout
    di ""
    di ""
    di "Summary of `1'"
    di ""
    sum `1', d
    qui matrix X = (r(mean), r(sd), r(p50), r(min), r(max))
    qui matrix colnames X = mean sd median min max
    qui mat2txt, matrix(X) saving("`2'") replace
end

cap program drop tab2_chi_out
program define tab2_chi_out
    di ""
    di ""
    di "Tabulation of `1' and `2'"
    di ""
    tab `1' `2', chi2
    qui matrix X = (r(p), r(chi2))
    qui matrix colnames X = chi2p chi2
    qui mat2txt, matrix(X) saving("`3'") replace
end


cap program drop oneway_out
program define oneway_out
    di ""
    di ""
    di "Oneway anova with dv = `1' and iv = `2'"
    di ""
    oneway `1' `2'
    qui matrix X = (r(F), r(df_r), r(df_m), Ftail(r(df_m), r(df_r), r(F)))
    qui matrix colnames X = anova_between_groups_F within_groups_df between_groups_df P
    qui mat2txt, matrix(X) saving("`3'") replace
end

cap program drop anova_out
program define anova_out
    di ""
    di ""
    di "Anova command: anova `1'"
    di ""
    anova `1'
    qui matrix X = (e(F), e(df_r), e(df_m), Ftail(e(df_m), e(df_r), e(F)), e(r2_a))
    qui matrix colnames X = anova_between_groups_F within_groups_df between_groups_df P RsquaredAdj
    qui mat2txt, matrix(X) saving("`2'") replace
end
接下来的问题是如何将输出转换成Excel并格式化。我发现将文本输出文件从Stata导入Excel的最佳方法是将它们连接到一个大文本文件中,然后使用Excel中的
import text file…
功能导入单个文件

我通过将这个Ruby代码放在输出文件夹中,然后使用
qui shell cd path/to/output/folder/&&Ruby table.rb从我的Do文件运行int来连接这些文件:

output = ""
Dir.new(".").entries.each do |file|
  next if file =~/\A\./ || file == "table.rb" || file == "out.txt"
  if file =~ /.*xml/
    system "rm #{file}"
    next
  end

  contents = File.open(file, "rb").read

  output << "\n\n#{file}\n\n" << contents
end


File.open("out.txt", 'w') {|f| f.write(output)}
output=“”
Dir.new(“.”)entries.each do|文件|
下一步,如果file=~/\A\./| | file==“table.rb”| | file==“out.txt”
如果文件=~/.*xml/
系统“rm{file}”
下一个
结束
contents=File.open(文件“rb”).read
输出大多数教程都加入了这样一个功能:如果只有一个可以导出所有内容,那将非常好,这就是Max在上面用他有趣的方法提出的建议

我个人使用
tabout
进行汇总统计和频率,使用
estout
进行回归输出,并尝试使用
mkcorr
进行相关矩阵。

我使用estpost(estout包的一部分)将非估计命令的结果制成表格。然后,您可以轻松地存储和导出它们

下面是一个例子:

estpost corr varA varB varC varD, matrix
est store corrs
esttab corrs using corrs.rtf, replace 

然后,您可以添加选项来更改格式等。

这是一个老问题,自发布以来发生了很多事情

Stata现在有几个内置命令和函数,允许任何人 相当容易地导出自定义输出:

还有等效的
Mata
函数/类,它们提供了更大的灵活性:


根据我的经验,没有100%的通用解决方案。社区贡献的命令,如
estout
现在已经足够成熟,可以处理大多数基本操作。这就是说,如果您有与模板稍有偏差的内容,您必须自己编程。

您可以使用SSC上提供的asdoc。下载

ssc install asdoc
asdoc可以很好地处理几乎所有的Stata命令。具体而言,它为以下内容生成出版物质量表:

  • summary命令-报告摘要统计信息
  • cor或pwcorr命令-报告相关性
  • tabstat-用于灵活的描述性统计表
  • 制表-用于单向、双向、三向制表
  • 回归-用于详细、嵌套和广泛的回归表
  • 表-柔性表 还有更多。你可以在这里探索更多关于asdoc的信息

  • 是的,但是如何合理地解析日志文件的输出呢?我更喜欢以格式更标准化的形式接收输出(例如,选项卡分隔的文本文件)。您可以使用用户编写的程序-logout-(从SSC)解析记录的结果。这适用于各种结果格式(例如-表格-,-方差分析-,-回归-,等等)。安装后,尝试导出一个-table命令:**sysuse auto,clear logout,save(mystuff)excel fix rep78,///c(n mpg mean mpg sd mpg median mpg)stubwidth(25)***