Экспорт результатов

Я уверен, что это проблема, с которой сталкивался любой, кто использует Stata для публикаций или отчетов:

Как удобно экспортировать выходные данные во что-то, что можно проанализировать с помощью языка сценариев или Excel?

Есть несколько файлов ado, которые делают это для определенных команд. Например:

  • findit tabout
  • findit outreg2

Но как насчет экспорта вывода команды table? Или результаты anova?

Я хотел бы услышать о том, как пользователи Stata решают эту проблему для конкретных команд или в целом.


person Max Masnick    schedule 05.02.2010    source источник


Ответы (7)


Это старый вопрос, и с тех пор, как он был опубликован, много произошло.

Stata теперь имеет несколько встроенных команд и функций, которые позволяют любому довольно легко экспортировать настраиваемый вывод:

Существуют также эквивалентные Mata функции/классы, которые обеспечивают большую гибкость:

По моему опыту, нет 100% общих решений. Разработанные сообществом команды, такие как estout, теперь достаточно развиты, чтобы выполнять большинство основных операций. Тем не менее, если у вас есть что-то, что хоть немного отличается от шаблона, вам придется запрограммировать это самостоятельно.

person Community    schedule 26.05.2018

Поэкспериментировав с этим некоторое время, я нашел решение, которое работает для меня.

Существует множество ADO, которые обрабатывают экспорт определенных функций. Я использовал outreg2 для регрессии и tabout для сводной статистики.

Для более простых команд легко написать свои собственные программы для автоматического сохранения результатов в обычный текст в стандартном формате. Вот некоторые из них, которые я написал... обратите внимание, что они оба отображают результаты (для сохранения в файл журнала) и экспортируют их в текстовые файлы - если вы хотите просто сохранить в текст, вы можете избавиться от di и qui sum , tab и т. д. команды:

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 — объединить их в один большой текстовый файл, а затем импортировать этот единственный файл с помощью функции Import Text File... в Excel.

Я объединяю файлы, помещая этот код Ruby в выходную папку, а затем запуская int из моего файла Do с qui shell cd path/to/output/folder/ && ruby table.rb:

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)}

Как только я импортирую out.txt на отдельный лист в Excel, я использую набор встроенных функций Excel, чтобы собрать данные в красивые таблицы.

Для этого я использую комбинацию vlookup, offset, match, iferror и скрытых столбцов с номерами ячеек и именами файлов. Исходный файл .txt включен в out.txt прямо над содержимым этого файла, что позволяет просматривать содержимое файла с помощью этих функций, а затем ссылаться на определенные ячейки с помощью vlookup и offset.

Этот бизнес с Excel на самом деле является самой сложной частью этой системы, и действительно нет хорошего способа объяснить это, не показывая вам файл, хотя, надеюсь, вы сможете получить достаточное представление, чтобы понять это самостоятельно. Если нет, свяжитесь со мной через http://maxmasnick.com, и я смогу предоставить вам дополнительную информацию.

person Max Masnick    schedule 23.03.2010

Я обнаружил, что пакет estout является наиболее проработанным и имеет хорошую документацию.

person Tristan    schedule 07.02.2010

Большинство учебных пособий содержат несколько пакетов, хотя было бы неплохо иметь только один экспортирующий все, это то, что Макс предлагает выше со своим интересным методом.

Я лично использую tabout для сводной статистики и частот, estout для вывода регрессии и пробую mkcorr для корреляционных матриц.

person Fr.    schedule 06.12.2011

Прошло некоторое время, но я считаю, что вы можете ввести команду журнала, чтобы зафиксировать вывод.
log using c:\data\anova_analysis.log, text
[commands]
log close

person hurfdurf    schedule 05.02.2010
comment
Да, но как тогда разумно анализировать вывод файла журнала? Я бы предпочел получать вывод в форме с более стандартизированным форматированием (например, текстовый файл, разделенный табуляцией). - person Max Masnick; 08.02.2010
comment
Вы можете использовать написанную пользователем программу -logout- (из SSC) для анализа зарегистрированных результатов. Это работает для различных форматов результатов (например, -table-, -anova-, -regress- и т. д.). После его установки попробуйте экспортировать команду -table- с помощью: *** sysuse auto, очистить выход из системы, сохранить (mystuff) excel fix replace: table trunk rep78, /// c(n mpg mean mpg sd mpg median mpg)stubwidth( 25) *** - person eric.a.booth; 19.08.2010

Я использую estpost — часть пакета estout — для табулирования результатов команд без оценки. Затем вы можете сохранить их и легко экспортировать.

Вот пример:

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

Затем вы можете добавить параметры для изменения форматирования и т. д.

person user3365224    schedule 26.06.2014

Вы можете использовать asdoc, доступный на SSC. Скачать,

ssc install asdoc

asdoc хорошо работает почти со всеми командами Stata. В частности, он создает таблицы качества публикации для:

  1. команда summ - для отчета сводной статистики
  2. команда cor или pwcorr — для сообщения о корреляциях
  3. tabstat - для гибких таблиц описательной статистики
  4. tabulate - для односторонней, двусторонней, трехсторонней табуляции
  5. regress — для подробных, вложенных и широких таблиц регрессии
  6. table - гибкие таблицы и многое другое. Вы можете узнать больше об asdoc здесь https://fintechprofessor.com/2018/01/31/asdoc/
person Attaullah Shah    schedule 20.11.2020